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 084d6a3cf3 meson: Rename 'config_raiden' to 'config_raiden_debug_spi' 2 days ago
Documentation mysteries_intel: Add a section for software vs hardware sequencing 7 months ago
subprojects tests/: Add CMocka unit-test infrastructure 7 months ago
tests tests: Update licence headers 4 months ago
util util/getrevision.sh: Fallback when git tags is missing 1 week 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 8 months ago
COPYING Add a dedicated license 13 years ago
Doxyfile layout: Move generic layout functions into `layout.c` 1 year ago
Makefile Makefile: Explicitly set '-std=c99' 2 weeks ago
README Add initial J-Link SPI programmer 2 years ago
amd_imc.c Remove address from GPLv2 headers 2 years ago
archtest.c Unify target OS and CPU architecture checks 6 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 1 year ago
bitbang_spi.c tree/: Drop const from opaque data ptr in master definitions [alt] 1 week ago
board_enable.c Add board enable for ASUS P3B-F 8 months ago
buspirate_spi.c const'ify flashctx to align signatures with cros flashrom 9 months ago
cbtable.c cbtable.c: don't assume high addresses can fully map 1 MiB 2 days ago
ch341a_spi.c Add missing platform.h includes 1 month ago
chipdrivers.h chipdrivers.h: Trivial fix style of write_28sf040() signature 1 month ago
chipset_enable.c chipset_enable.c: Mark Intel H110 as DEP 1 month ago
cli_classic.c cli_classic.c: fix minor cosmetic bug when support for wiki page generation is not compiled in 1 month 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: Fix segmentation fault on no device found 1 month ago
developerbox_spi.c tree: Make internal variables static 1 year ago
digilent_spi.c const'ify flashctx to align signatures with cros flashrom 9 months ago
dmi.c Makefile: Explicitly set '-std=c99' 2 weeks ago
drkaiser.c Remove address from GPLv2 headers 2 years ago
dummyflasher.c dummyflasher.c: Allow filling with either 0x00 or 0xff 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 3 years ago
en29lv640b.c Fix -Wsign-compare trouble 1 year ago
endiantest.c endiantest: Fix #if expression 6 months ago
ene.h Add support for the ENE Embedded Debug Interface EDI and KB9012 EC 3 years ago
ene_lpc.c Add ENE LPC programmer 5 months ago
flash.h flashrom.c: implement chip restore callback registration 1 month ago
flashchips.c flashchips.c: Mark GD25LQ128C/D as TEST_OK_PREW 1 week ago
flashchips.h flashchips.c: Add support for XMC new SPI flash types 3 weeks ago
flashrom.8.tmpl dummyflasher.c: Fix null par data and size param handling 3 months ago
flashrom.c flashrom.c: implement chip restore callback registration 1 month ago
fmap.c fmap.{c,h}: update copyright year and name 2 months ago
fmap.h fmap.{c,h}: update copyright year and name 2 months ago
ft2232_spi.c ft2232_spi.c: Rename cs_bits to pinlvl 3 days ago
gfxnvidia.c tree: Make internal variables static 1 year ago
helpers.c helpers.c: Fix undefined behavior in strndup() 3 days ago
hwaccess.c tree: Include missing headers for function prototypes 1 year ago
hwaccess.h flashrom: Add support for ARC platform 1 year ago
i2c_helper.h i2c_helper: Add support for the Linux I2C subsystem 10 months ago
i2c_helper_linux.c i2c_helper: Add support for the Linux I2C subsystem 10 months ago
ich_descriptors.c Add support for Comet Lake-U/400-series PCH 4 months 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 4 months ago
internal.c Add missing platform.h includes 1 month ago
it85spi.c it85spi.c: Inline it85xx_spi_common_init() 1 week ago
it87spi.c it87spi.c: Remove 'it8716f_' prefix from local state tracker 2 months ago
it8212.c Fix building with GCC 4.9 1 year ago
jedec.c Fix -Wsign-compare trouble 1 year ago
jlink_spi.c const'ify flashctx to align signatures with cros flashrom 9 months ago
layout.c layout.h,c: Use 'false' over '0' for bool type 1 month ago
layout.h layout.h,c: Use 'false' over '0' for bool type 1 month ago
libflashrom.c libflashrom.c: Fix indentation of a brace 8 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 9 months ago
lspcon_i2c_spi.c lspcon_i2c_spi.c: Prefix with fn name instead of just 'Error:' 9 months ago
mcp6x_spi.c tree: Make internal variables static 1 year ago
mec1308.c Add MEC1308 EC programmer 5 months ago
meson.build meson: Rename 'config_raiden' to 'config_raiden_debug_spi' 23 hours ago
meson_options.txt meson: Rename 'config_raiden' to 'config_raiden_debug_spi' 23 hours ago
mstarddc_spi.c const'ify flashctx to align signatures with cros flashrom 9 months ago
ni845x_spi.c Add support for National Instruments USB-845x devices 1 year 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() 1 year 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() 3 months ago
physmap.c Fix compilation if CONFIG_INTERNAL=no 1 year ago
pickit2_spi.c const'ify flashctx to align signatures with cros flashrom 9 months ago
platform.h flashrom: Add support for ARC platform 1 year ago
pony_spi.c tree: Enable -Wwrite-strings 1 year ago
print.c Add board enable for ASUS P3B-F 8 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 programmer: remove unused noop_shutdown function 1 week ago
programmer.h programmer.h: remove unused declaration 6 days ago
raiden_debug_spi.c raiden_debug_spi: add param for a custom reset setup 6 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: Fix indentation 6 days ago
s25f.c s25f.c: implement probing and block erasers for Spansion 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 sb600spi.c: Detect rev 0x51 as Promontory 1 month ago
serial.c serial: Fix file read/write error handling for Windows 6 months ago
serprog.c const'ify flashctx to align signatures with cros flashrom 9 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 9 months ago
spi.h s25f.c: implement probing and block erasers for Spansion 1 month ago
spi25.c spi25.c: Use JEDEC consts in spi_simple_write_cmd() calls 2 months ago
spi25_statusreg.c spi25_statusreg.c: restore SR contents at flashrom exit 2 weeks ago
spi95.c spi95: Check for success before using send_command's returned data 8 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 5 months ago
stm50.c Remove address from GPLv2 headers 2 years ago
test_build.sh test_build.sh: Move build test procedure to repository 2 months ago
udelay.c tree: Include missing headers for function prototypes 1 year ago
usb_device.c usb_device: Fix memory leak 9 months ago
usb_device.h raiden_debug_spi.c: Disable retry during some error codes 10 months ago
usbblaster_spi.c tree: Remove unneeded semicolons after loops 7 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 wbsio_spi.c: Move singleton state into spi master state tracker 2 months ago
writeprotect.c Add writeprotect support infrastructure 4 months ago
writeprotect.h Add writeprotect support infrastructure 4 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