You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Edward O'Callaghan 06ca247d65 flashrom.c,flash.h: Kill dead fn shutdown_free() 6 days ago
Documentation mysteries_intel: Add a section for software vs hardware sequencing 4 months ago
subprojects tests/: Add CMocka unit-test infrastructure 4 months ago
tests tests: Update licence headers 1 month ago
util Add support for Comet Lake-U/400-series PCH 1 month ago
.gitattributes Convert flashrom to git 3 years ago
.gitignore .gitignore: Add Doxygen dir `libflashrom-doc/` 3 years ago
82802ab.c 82802ab.c: Remove duplicated check 5 months ago
COPYING Add a dedicated license 13 years ago
Doxyfile layout: Move generic layout functions into `layout.c` 1 year ago
Makefile Add writeprotect support infrastructure 3 weeks ago
README Add initial J-Link SPI programmer 1 year ago
amd_imc.c Remove address from GPLv2 headers 2 years ago
archtest.c Unify target OS and CPU architecture checks 5 years ago
at45db.c Fix -Wsign-compare trouble 1 year ago
atahpt.c Remove address from GPLv2 headers 2 years ago
atapromise.c Fix typos 2 years ago
atavia.c Fix typos 9 months ago
bitbang_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
board_enable.c Add board enable for ASUS P3B-F 5 months ago
buspirate_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
cbtable.c tree: Remove unneeded semicolons after loops 4 months ago
ch341a_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
chipdrivers.h support variable-size SPI chip for dummy programmer 1 month ago
chipset_enable.c Add support for Comet Lake-U/400-series PCH 1 month ago
cli_classic.c Add writeprotect support infrastructure 3 weeks ago
cli_common.c Remove empty line at EOF 2 years ago
cli_output.c Remove address from GPLv2 headers 2 years ago
coreboot_tables.h Remove address from GPLv2 headers 2 years ago
custom_baud.c Remove address from GPLv2 headers 2 years ago
custom_baud.h Remove address from GPLv2 headers 2 years ago
dediprog.c dediprog.c: Fix layering violation of default_spi_read 1 week ago
developerbox_spi.c tree: Make internal variables static 1 year ago
digilent_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
dmi.c tree: Enable -Wwrite-strings 1 year ago
drkaiser.c Remove address from GPLv2 headers 2 years ago
dummyflasher.c dummyflasher.c: Upstream ChromiumOS 'freq' param feature 1 month ago
edi.c tree: Include missing headers for function prototypes 1 year ago
edi.h Add support for the ENE Embedded Debug Interface EDI and KB9012 EC 2 years ago
en29lv640b.c Fix -Wsign-compare trouble 1 year ago
endiantest.c endiantest: Fix #if expression 3 months ago
ene.h Add support for the ENE Embedded Debug Interface EDI and KB9012 EC 2 years ago
ene_lpc.c Add ENE LPC programmer 2 months ago
flash.h flashrom.c,flash.h: Kill dead fn shutdown_free() 1 day ago
flashchips.c flashchips: Add support for Fudan SPI flash chips 2 days ago
flashchips.h flashchips: Add support for Fudan SPI flash chips 2 days ago
flashrom.8.tmpl Install the man file when using meson as a buildsystem 3 months ago
flashrom.c flashrom.c,flash.h: Kill dead fn shutdown_free() 1 day ago
fmap.c Fix -Wsign-compare trouble 1 year ago
fmap.h Add support to get layout from fmap (e.g. coreboot rom) 2 years ago
ft2232_spi.c ft2232_spi.c: align with Chrome OS flashrom 2 months ago
gfxnvidia.c tree: Make internal variables static 1 year ago
helpers.c helpers: Implement strndup() for MinGW 1 year ago
hwaccess.c tree: Include missing headers for function prototypes 1 year ago
hwaccess.h flashrom: Add support for ARC platform 10 months ago
i2c_helper.h i2c_helper: Add support for the Linux I2C subsystem 6 months ago
i2c_helper_linux.c i2c_helper: Add support for the Linux I2C subsystem 6 months ago
ich_descriptors.c Add support for Comet Lake-U/400-series PCH 1 month ago
ich_descriptors.h ichspi: Add support for discrete Cannon Lake PCHs 1 year ago
ichspi.c Add support for Comet Lake-U/400-series PCH 1 month ago
internal.c internal: Fix board vendor and model memory leaks 1 year ago
it85spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
it87spi.c it87spi.c: Prevent use-after-free bug 2 days ago
it8212.c Fix building with GCC 4.9 11 months ago
jedec.c Fix -Wsign-compare trouble 1 year ago
jlink_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
layout.c Fix -Wsign-compare trouble 1 year ago
layout.h layout: Increase max rom layout size 1 year ago
libflashrom.c libflashrom.c: Fix indentation of a brace 4 months ago
libflashrom.h libflashrom.h: Add types not included in all projects 1 year ago
libflashrom.map libflashrom: add querying functions with meson integration 1 year ago
linux_mtd.c linux_mtd: Fix param memory leak 1 year ago
linux_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
lspcon_i2c_spi.c lspcon_i2c_spi.c: Prefix with fn name instead of just 'Error:' 5 months ago
mcp6x_spi.c tree: Make internal variables static 1 year ago
mec1308.c Add MEC1308 EC programmer 2 months ago
meson.build Add writeprotect support infrastructure 3 weeks ago
meson_options.txt Add MEC1308 EC programmer 2 months ago
mstarddc_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
ni845x_spi.c Add support for National Instruments USB-845x devices 11 months ago
nic3com.c Remove address from GPLv2 headers 2 years ago
nicintel.c tree: Make internal variables static 1 year ago
nicintel_eeprom.c nicintel_eeprom: Reduce usage of is_i210() 10 months ago
nicintel_spi.c tree: Make internal variables static 1 year ago
nicnatsemi.c Remove address from GPLv2 headers 2 years ago
nicrealtek.c Remove address from GPLv2 headers 2 years ago
ogp_spi.c bitbang_spi: Drop bitbang_spi_master_type 1 year ago
opaque.c Remove address from GPLv2 headers 2 years ago
os.h Remove address from GPLv2 headers 2 years ago
pcidev.c pcidev.c: populate IDs with pci_fill_info() 1 week ago
physmap.c Fix compilation if CONFIG_INTERNAL=no 1 year ago
pickit2_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
platform.h flashrom: Add support for ARC platform 10 months ago
pony_spi.c tree: Enable -Wwrite-strings 1 year ago
print.c Add board enable for ASUS P3B-F 5 months ago
print_wiki.c Fix -Wsign-compare trouble 1 year ago
processor_enable.c Remove address from GPLv2 headers 2 years ago
programmer.c Remove address from GPLv2 headers 2 years ago
programmer.h Add support for Comet Lake-U/400-series PCH 1 month ago
raiden_debug_spi.c raiden_debug_spi: add param for a custom reset setup 3 months ago
rayer_spi.c bitbang_spi: Drop bitbang_spi_master_type 1 year ago
realtek_mst_i2c_spi.c realtek_mst_i2c_spi.c: Introduce ISP enter param 1 day ago
satamv.c tree: Make internal variables static 1 year ago
satasii.c Remove address from GPLv2 headers 2 years ago
sb600spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
serial.c serial: Fix file read/write error handling for Windows 3 months ago
serprog.c const'ify flashctx to align signatures with cros flashrom 5 months ago
serprog.h serprog: add opcode to control the programmer's output drivers 8 years ago
sfdp.c Remove trailing whitespace 1 year ago
spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
spi.h spi: Allow cached ID bytes to be cleared 2 months ago
spi25.c spi25.c: Replace tab with space after '=' symbol 1 week ago
spi25_statusreg.c spi25: Debug flashrom crash when Write Protect is ON 5 months ago
spi95.c spi95: Check for success before using send_command's returned data 5 months ago
sst28sf040.c Fix -Wsign-compare trouble 1 year ago
sst49lfxxxc.c Remove address from GPLv2 headers 2 years ago
sst_fwhub.c Fix -Wsign-compare trouble 1 year ago
stlinkv3_spi.c stlinkv3_spi.c: Improve printed messages 2 months ago
stm50.c Remove address from GPLv2 headers 2 years ago
udelay.c tree: Include missing headers for function prototypes 1 year ago
usb_device.c usb_device: Fix memory leak 6 months ago
usb_device.h raiden_debug_spi.c: Disable retry during some error codes 7 months ago
usbblaster_spi.c tree: Remove unneeded semicolons after loops 4 months ago
usbdev.c usbdev.c: Add missing <inttypes.h> include 1 year ago
w29ee011.c tree: Include missing headers for function prototypes 1 year ago
w39.c Remove address from GPLv2 headers 2 years ago
wbsio_spi.c const'ify flashctx to align signatures with cros flashrom 5 months ago
writeprotect.c Add writeprotect support infrastructure 3 weeks ago
writeprotect.h Add writeprotect support infrastructure 3 weeks ago

README

-------------------------------------------------------------------------------
flashrom README
-------------------------------------------------------------------------------

flashrom is a utility for detecting, reading, writing, verifying and erasing
flash chips. It is often used to flash BIOS/EFI/coreboot/firmware images
in-system using a supported mainboard, but it also supports flashing of network
cards (NICs), SATA controller cards, and other external devices which can
program flash chips.

It supports a wide range of flash chips (most commonly found in SOIC8, DIP8,
SOIC16, WSON8, PLCC32, DIP32, TSOP32, and TSOP40 packages), which use various
protocols such as LPC, FWH, parallel flash, or SPI.

Do not use flashrom on laptops (yet)! The embedded controller (EC) present in
many laptops might interact badly with any attempts to communicate with the
flash chip and may brick your laptop.

Please make a backup of your flash chip before writing to it.

Please see the flashrom(8) manpage.


Packaging
---------

To package flashrom and remove dependencies on Git, either use
make export
or
make tarball

'make export' will export all flashrom files from the Git repository at
revision HEAD into a directory named "$EXPORTDIR/flashrom-$RELEASENAME"
and will additionally add a "versioninfo.inc" file in that directory to
contain the Git revision of the exported tree and a date for the manual
page.

'make tarball' will simply tar up the result of make export and compress
it with bzip2.

The snapshot tarballs are the result of 'make tarball' and require no
further processing.


Build Instructions
------------------

To build flashrom you need to install the following software:

* pciutils+libpci (if you want support for mainboard or PCI device flashing)
* libusb (if you want FT2232, Dediprog or USB-Blaster support)
* libftdi (if you want FT2232 or USB-Blaster support)
* libjaylink (if you want support for SEGGER J-Link and compatible devices)

Linux et al:

* pciutils / libpci
* pciutils-devel / pciutils-dev / libpci-dev
* zlib-devel / zlib1g-dev (needed if libpci was compiled with libz support)

On FreeBSD, you need the following ports:

* devel/gmake
* devel/libpci

On OpenBSD, you need the following ports:

* devel/gmake
* sysutils/pciutils

To compile on Linux, use:

make

To compile on FreeBSD, OpenBSD or DragonFly BSD, use:

gmake

To compile on Nexenta, use:

make

To compile on Solaris, use:

gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2

To compile on NetBSD (with pciutils, libftdi, libusb installed in /usr/pkg/), use:

gmake

To compile and run on Darwin/Mac OS X:

Install DirectHW from coresystems GmbH.
DirectHW is available at http://www.coreboot.org/DirectHW .

To cross-compile on Linux for DOS:

Get packages of the DJGPP cross compiler and install them:
djgpp-filesystem djgpp-gcc djgpp-cpp djgpp-runtime djgpp-binutils
As an alternative, the DJGPP web site offers packages for download as well:
djcross-binutils-2.29.1-1ap.x86_64.rpm
djcross-gcc-7.2.0-1ap.x86_64.rpm
djcrx-2.05-5.x86_64.rpm
The cross toolchain packages for your distribution may have slightly different
names (look for packages named *djgpp*).

Alternatively, you could use a script to build it from scratch:
https://github.com/andrewwutw/build-djgpp

You will need the libpci and libgetopt library source trees and
their compiled static libraries and header files installed in some
directory say libpci-libgetopt/, which will be later specified with
LIBS_BASE parameter during flashrom compilation. Easiest way to
handle it is to put pciutils, libgetopt and flashrom directories
in one subdirectory. There will be an extra subdirectory libpci-libgetopt
created, which will contain compiled libpci and libgetopt.

Download pciutils 3.5.6 and apply http://flashrom.org/File:Pciutils-3.5.6.patch.gz
Compile pciutils, using following command line:

make ZLIB=no DNS=no HOST=i386-djgpp-djgpp CROSS_COMPILE=i586-pc-msdosdjgpp- \
PREFIX=/ DESTDIR=$PWD/../libpci-libgetopt \
STRIP="--strip-program=i586-pc-msdosdjgpp-strip -s" install install-lib

Download and compile with 'make' http://flashrom.org/File:Libgetopt.tar.gz

Copy the libgetopt.a to ../libpci-libgetopt/lib and
getopt.h to ../libpci-libgetopt/include

Enter the flashrom directory.

make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip LIBS_BASE=../libpci-libgetopt/ strip

If you like, you can compress the resulting executable with UPX:

upx -9 flashrom.exe

To run flashrom.exe, download http://flashrom.org/File:Csdpmi7b.zip and
unpack CWSDPMI.EXE into the current directory or one in PATH.

To cross-compile on Linux for Windows:

Get packages of the MinGW cross compiler and install them:
mingw32-filesystem mingw32-cross-cpp mingw32-cross-binutils mingw32-cross-gcc
mingw32-runtime mingw32-headers
The cross toolchain packages for your distribution may have slightly different
names (look for packages named *mingw*).
PCI-based programmers (internal etc.) are not supported on Windows.
Run (change CC= and STRIP= settings where appropriate)
make CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip

Processor architecture dependent features:

On non-x86 architectures a few programmers don't work (yet) because they
use port-based I/O which is not directly available on non-x86. Those
programmers will be disabled automatically if you run "make".

Compiler quirks:

If you are using clang and if you want to enable only one driver, you may hit an
overzealous compiler warning from clang. Compile with "make WARNERROR=no" to
force it to continue and enjoy.

Installation
------------

In order to install flashrom and the manpage into /usr/local, type:

make install

For installation in a different directory use DESTDIR, e.g. like this:

make DESTDIR=/usr install

If you have insufficient permissions for the destination directory, use sudo
by adding sudo in front of the commands above.


Contact
-------

The official flashrom website is:

http://www.flashrom.org/

The IRC channel is

#flashrom at irc.freenode.net

The mailing list address is

flashrom@flashrom.org