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.
 
 
 
 
 
 
David Hendricks 9b6fb745c2 dediprog: Correct REQTYPE_OTHER_OUT macro 1 week ago
Documentation mysteries_intel: Add a section for software vs hardware sequencing 1 week ago
subprojects tests/: Add CMocka unit-test infrastructure 2 weeks ago
tests tests/spi25.c: Add unit-test coverage of spi95.c 2 weeks ago
util util/flashrom_tester: Upstream E2E testing framework 4 months ago
.gitattributes Convert flashrom to git 3 years ago
.gitignore .gitignore: Add Doxygen dir `libflashrom-doc/` 2 years ago
82802ab.c 82802ab.c: Remove duplicated check 1 month ago
COPYING Add a dedicated license 13 years ago
Doxyfile layout: Move generic layout functions into `layout.c` 1 year ago
Makefile Makefile: Remove 'NEED_LIBUSB1' from lspcon requirements 2 months 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 11 months ago
atahpt.c Remove address from GPLv2 headers 2 years ago
atapromise.c Fix typos 1 year ago
atavia.c Fix typos 5 months ago
bitbang_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
board_enable.c Add board enable for ASUS P3B-F 1 month ago
buspirate_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
cbtable.c tree: Remove unneeded semicolons after loops 1 week ago
ch341a_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
chipdrivers.h Revert "flashchips: port S25FS(128S) chip from chromiumos" 2 months ago
chipset_enable.c chipset_enable.c: Spell `BIOS` in uppercase 2 months ago
cli_classic.c cli_classic.c: Prevent memory leak 2 months ago
cli_common.c Remove empty line at EOF 1 year 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: Correct REQTYPE_OTHER_OUT macro 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 2 months ago
dmi.c tree: Enable -Wwrite-strings 9 months ago
drkaiser.c Remove address from GPLv2 headers 2 years ago
dummyflasher.c const'ify flashctx to align signatures with cros flashrom 2 months 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 11 months ago
endiantest.c Move endianness definitions and provide it inside Makefile 2 years ago
ene.h Add support for the ENE Embedded Debug Interface EDI and KB9012 EC 2 years ago
flash.h Revert "flashchips: port S25FS(128S) chip from chromiumos" 2 months ago
flashchips.c flashchips: Add W25Q256.W 2 weeks ago
flashchips.h flashchips: Add W25Q256.W 2 weeks ago
flashrom.8.tmpl sb600spi: Add spireadmode 4 months ago
flashrom.c Initial Realtek MST i2c_spi support 2 months ago
fmap.c Fix -Wsign-compare trouble 11 months ago
fmap.h Add support to get layout from fmap (e.g. coreboot rom) 1 year ago
ft2232_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
gfxnvidia.c tree: Make internal variables static 1 year ago
helpers.c helpers: Implement strndup() for MinGW 9 months ago
hwaccess.c tree: Include missing headers for function prototypes 1 year ago
hwaccess.h flashrom: Add support for ARC platform 6 months ago
i2c_helper.h i2c_helper: Add support for the Linux I2C subsystem 3 months ago
i2c_helper_linux.c i2c_helper: Add support for the Linux I2C subsystem 3 months ago
ich_descriptors.c Fix more sign-compare issues 9 months ago
ich_descriptors.h ichspi: Add support for discrete Cannon Lake PCHs 11 months ago
ichspi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
internal.c internal: Fix board vendor and model memory leaks 9 months ago
it85spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
it87spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
it8212.c Fix building with GCC 4.9 7 months ago
jedec.c Fix -Wsign-compare trouble 11 months ago
jlink_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
layout.c Fix -Wsign-compare trouble 11 months ago
layout.h layout: Increase max rom layout size 1 year ago
libflashrom.c libflashrom.c: Fix indentation of a brace 1 month ago
libflashrom.h libflashrom.h: Add types not included in all projects 9 months ago
libflashrom.map libflashrom: add querying functions with meson integration 9 months ago
linux_mtd.c linux_mtd: Fix param memory leak 9 months ago
linux_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
lspcon_i2c_spi.c lspcon_i2c_spi.c: Prefix with fn name instead of just 'Error:' 2 months ago
mcp6x_spi.c tree: Make internal variables static 1 year ago
meson.build tests/: Add CMocka unit-test infrastructure 2 weeks ago
meson_options.txt Initial Realtek MST i2c_spi support 2 months ago
mstarddc_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
ni845x_spi.c Add support for National Instruments USB-845x devices 7 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() 6 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: Drop unused variable 2 months ago
physmap.c Fix compilation if CONFIG_INTERNAL=no 8 months ago
pickit2_spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
platform.h flashrom: Add support for ARC platform 6 months ago
pony_spi.c tree: Enable -Wwrite-strings 9 months ago
print.c Add board enable for ASUS P3B-F 1 month ago
print_wiki.c Fix -Wsign-compare trouble 11 months ago
processor_enable.c Remove address from GPLv2 headers 2 years ago
programmer.c Remove address from GPLv2 headers 2 years ago
programmer.h Initial Realtek MST i2c_spi support 2 months ago
raiden_debug_spi.c raiden_debug_spi.c: Enables USB retry for invalid write count 1 month ago
rayer_spi.c bitbang_spi: Drop bitbang_spi_master_type 1 year ago
realtek_mst_i2c_spi.c realtek_mst_i2c_spi.c: Remove dead code 1 month 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 2 months ago
serial.c Fix -Wsign-compare trouble 11 months ago
serprog.c const'ify flashctx to align signatures with cros flashrom 2 months ago
serprog.h serprog: add opcode to control the programmer's output drivers 7 years ago
sfdp.c Remove trailing whitespace 1 year ago
spi.c const'ify flashctx to align signatures with cros flashrom 2 months ago
spi.h Revert "flashchips: port S25FS(128S) chip from chromiumos" 2 months ago
spi25.c Revert "flashchips: port S25FS(128S) chip from chromiumos" 2 months ago
spi25_statusreg.c spi25: Debug flashrom crash when Write Protect is ON 1 month ago
spi95.c spi95: Check for success before using send_command's returned data 1 month ago
sst28sf040.c Fix -Wsign-compare trouble 11 months ago
sst49lfxxxc.c Remove address from GPLv2 headers 2 years ago
sst_fwhub.c Fix -Wsign-compare trouble 11 months ago
stlinkv3_spi.c const'ify flashctx to align signatures with cros flashrom 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 2 months ago
usb_device.h raiden_debug_spi.c: Disable retry during some error codes 3 months ago
usbblaster_spi.c tree: Remove unneeded semicolons after loops 1 week ago
usbdev.c usbdev.c: Add missing <inttypes.h> include 8 months 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 2 months 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