-------------------------------------------------------------------------------
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 DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, and TSOP40
chips, which use various protocols such as LPC, FWH, parallel flash, or SPI.

Do not use flashrom on laptops! The embedded controller (EC) present in many
laptops interacts badly with any flash attempts and can brick your laptop
permanently.

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 subversion, either use
make export
or
make tarball

make export will export all flashrom files from the subversion repository at
revision BASE into a directory named $EXPORTDIR/flashrom-$VERSION-r$SVNREVISION
and will additionally modify the Makefile in that directory to contain the svn
revision of the exported tree.

make tarball will simply tar up the result of make export and gzip compress it.

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 or Dediprog support)
 * libftdi (if you want FT2232 support)

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, 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 or DragonFly BSD, use:

 ln -s /usr/pkg/include/pciutils pci
 gmake CPPFLAGS=-I. LDFLAGS="-L/usr/pkg/lib -Wl,-rpath-link,/usr/pkg/lib"

To compile on OpenBSD, use:

 gmake

To compile and run on Darwin/Mac OS X:

 Install DirectHW from coresystems GmbH.
 DirectHW is available at http://www.coresystems.de/en/directhw .

To cross-compile on Linux for DOS:

 Get RPMs of the cross compiler from the DJGPP site and install them:
 djcross-binutils-2.19.1-10ap.i386.rpm
 djcross-gcc-4.3.2-8ap.i686.rpm
 djcrx-2.04pre_20090725-13ap.i386.rpm
 Download pciutils 3.1.5 and apply http://assembler.cz/flashrom/pciutils.patch
 Download and compile http://assembler.cz/flashrom/libgetopt/
 Compile pciutils, see README.DJGPP for instructions.
 Enter the flashrom directory.
 ../libpci should contain pciutils source and binaries.
 ../libgetopt should contain getopt.a from libgetopt.
 Run either (change settings where appropriate)
 make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip OS_ARCH=DOS
 or (above settings hardcoded)
 make djgpp-dos
 You might have to add WARNERROR=no to the make command line.
 To run flashrom.exe, download and unpack
 http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi7b.zip and make sure
 CWSDPMI.EXE is in the current directory.

Processor architecture dependent features:

 On non-x86 architectures you have to disable a few programmers because they
 use port-based I/O which is not directly available on non-x86. Please add
 CONFIG_RAYER_SPI=no CONFIG_NIC3COM=no CONFIG_ATAHPT=no CONFIG_NICREALTEK=no \
 CONFIG_NICNATSEMI=no
 as parameters to the "make" invocation.
 Besides that, the internal programmer is only supported on x86 and MIPS. On
 other architectures, please add
 CONFIG_INTERNAL=no
 as parameter to the "make" invocation.

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
