| ------------------------------------------------------------------------------- |
| 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) |
| |
| 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.19.1-10ap.i386.rpm |
| djcross-gcc-4.3.2-8ap.i686.rpm |
| djcrx-2.04pre_20090725-13ap.i386.rpm |
| The cross toolchain packages for your distribution may have slightly different |
| names (look for packages named *djgpp*). |
| |
| You will need the following library source trees containing their compiled |
| static libraries either in the parent directory of the flashrom source or |
| specify the base folder on compile time with the LIBS_BASE parameter. |
| The default as described above is equal to calling |
| 'make djgpp-dos LIBS_BASE=..' |
| |
| To get and build said libraries... |
| Download pciutils 3.1.5 and apply http://flashrom.org/File:Pciutils.patch.gz |
| Compile pciutils, see README.DJGPP for instructions. |
| Download and compile http://flashrom.org/File:Libgetopt.tar.gz |
| Enter the flashrom directory. |
| Run either (change settings where appropriate) |
| make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip |
| or (above settings hardcoded) |
| make djgpp-dos |
| 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 |