mirror of
				https://review.coreboot.org/flashrom.git
				synced 2025-10-25 11:30:42 +02:00 
			
		
		
		
	 3578ec6a3d
			
		
	
	3578ec6a3d
	
	
	
		
			
			Tested with SEGGER J-Link EDU, Flasher ARM and flash chip W25Q16.V. Change-Id: Ie03a054a75457ec9e1cab36ea124bb53b10e8d7e Signed-off-by: Marc Schink <flashrom-dev@marcschink.de> Reviewed-on: https://review.coreboot.org/c/28087 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
		
			
				
	
	
		
			193 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -------------------------------------------------------------------------------
 | |
| 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
 |