| ------------------------------------------------------------------------------- |
| 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. -I/usr/pkg/include" \ |
| 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 |