mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00

Example usage: flashrom -p buspiratespi:spispeed=2.6MHz,dev=/dev/foo flashrom -p buspiratespi:dev=/dev/foo,spispeed=2.6M Refactor programmer option parsing (this allows cleanups in other programmers as well). Increase SPI read size from 8 to 12 bytes (current single-transaction limit of the Bus Pirate raw SPI protocol). Add Bus Pirate to the list of programmers supporting 4 byte RDID. Add Bus Pirate syntax to the man page. Tested-by: Sean Nelson <audiohacked@gmail.com> Corresponding to flashrom svn r776. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Sean Nelson <audiohacked@gmail.com>
303 lines
9.2 KiB
Groff
303 lines
9.2 KiB
Groff
.TH FLASHROM 8 "May 21, 2009"
|
|
.SH NAME
|
|
flashrom \- detect, read, write, verify and erase flash chips
|
|
.SH SYNOPSIS
|
|
.B flashrom \fR[\fB\-VfLzhRn\fR] [\fB\-E\fR|\fB\-r\fR file|\fB\-w\fR file|\fB\-v\fR file] [\fB\-c\fR chipname]
|
|
[\fB\-m\fR [vendor:]part] [\fB\-l\fR file] [\fB\-i\fR image] [\fB\-p\fR programmer]
|
|
.SH DESCRIPTION
|
|
.B flashrom
|
|
is a utility for detecting, reading, writing, verifying and erasing flash
|
|
chips. It's 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.
|
|
.PP
|
|
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.
|
|
.SH OPTIONS
|
|
Please note that the command line interface for flashrom will change before
|
|
flashrom 1.0. Do not use flashrom in scripts or other automated tools without
|
|
checking that your flashrom version won't interpret options in a different way.
|
|
.PP
|
|
You can specify one of \-E, \-r, \-w, \-v or no operation.
|
|
If no operation is specified, then all that happens
|
|
is that flash info is dumped and the flash chip is set to writable.
|
|
.TP
|
|
.B "\-r, \-\-read <file>"
|
|
Read flash ROM contents and save them into the given
|
|
.BR <file> .
|
|
.TP
|
|
.B "\-w, \-\-write <file>"
|
|
Write file into flash ROM.
|
|
.TP
|
|
.B "\-n, \-\-noverify"
|
|
Do
|
|
.B not
|
|
verify the flash ROM contents after writing them to the chip. Using this
|
|
option is
|
|
.B not
|
|
recommended, you should only use it if you know what you are doing and you
|
|
feel that the time for verification takes too long.
|
|
.sp
|
|
Typical usage is:
|
|
.B "flashrom -wn file"
|
|
.sp
|
|
This option is only useful in combination with
|
|
.BR \-\-write .
|
|
.TP
|
|
.B "\-v, \-\-verify <file>"
|
|
Verify the flash ROM contents against the given
|
|
.BR <file> .
|
|
.TP
|
|
.B "\-E, \-\-erase"
|
|
Erase the flash ROM chip.
|
|
.TP
|
|
.B "\-V, \-\-verbose"
|
|
More verbose output.
|
|
.TP
|
|
.B "\-c, \-\-chip" <chipname>
|
|
Probe only for specified flash ROM chip.
|
|
.sp
|
|
flashrom supports ROM layouts. This allows you to flash certain parts of
|
|
the flash chip only. A ROM layout file looks like follows:
|
|
.sp
|
|
00000000:00008fff gfxrom
|
|
00009000:0003ffff normal
|
|
00040000:0007ffff fallback
|
|
.sp
|
|
i.e.:
|
|
startaddr:endaddr name
|
|
.sp
|
|
All addresses are offsets within the file, not absolute addresses!
|
|
If you only want to update the normal image in a ROM you can say:
|
|
.sp
|
|
.B " flashrom -w --layout rom.layout --image normal agami_aruma.rom"
|
|
.sp
|
|
To update normal and fallback but leave the VGA BIOS alone, say:
|
|
.sp
|
|
.B " flashrom -w -l rom.layout -i normal \"
|
|
.br
|
|
.B " -i fallback agami_aruma.rom"
|
|
.sp
|
|
Currently overlapping sections are not supported.
|
|
.sp
|
|
ROM layouts should replace the \-s and \-e option since they are more
|
|
flexible and they should lead to a ROM update file format with the
|
|
ROM layout and the ROM image in one file (cpio, zip or something?).
|
|
.TP
|
|
.B "\-m, \-\-mainboard" <[vendor:]part>
|
|
Override mainboard settings.
|
|
.sp
|
|
flashrom reads the coreboot table to determine the current mainboard. If no
|
|
coreboot table could be read or if you want to override these values, you can
|
|
specify \-m, e.g.:
|
|
.sp
|
|
.B " flashrom -w --mainboard AGAMI:ARUMA agami_aruma.rom"
|
|
.sp
|
|
See the 'Supported mainboards' section in the output of 'flashrom \-L' for
|
|
a list of boards which require the specification of the board name, if no
|
|
coreboot table is found.
|
|
.TP
|
|
.B "\-f, \-\-force"
|
|
Force write without checking whether the ROM image file is really meant
|
|
to be used on this board.
|
|
.sp
|
|
Note: This check only works while coreboot is running, and only for those
|
|
boards where the coreboot code supports it.
|
|
.TP
|
|
.B "\-l, \-\-layout <file>"
|
|
Read ROM layout from
|
|
.BR <file> .
|
|
.TP
|
|
.B "\-i, \-\-image <name>"
|
|
Only flash image
|
|
.B <name>
|
|
from flash layout.
|
|
.TP
|
|
.B "\-L, \-\-list\-supported"
|
|
List the flash chips, chipsets, mainboards, and PCI card "programmers"
|
|
supported by flashrom.
|
|
.sp
|
|
There are many unlisted boards which will work out of the box, without
|
|
special support in flashrom. Please let us know if you can verify that
|
|
other boards work or do not work out of the box. For verification you have
|
|
to test an ERASE and/or WRITE operation, so make sure you only do that
|
|
if you have proper means to recover from failure!
|
|
.TP
|
|
.B "\-z, \-\-list\-supported-wiki"
|
|
Same as
|
|
.BR \-\-list\-supported ,
|
|
but outputs the supported hardware in MediaWiki syntax, so that it can be
|
|
easily pasted into the wiki page at http://www.flashrom.org/.
|
|
.TP
|
|
.B "\-p, \-\-programmer <name>"
|
|
Specify the programmer device. Currently supported are:
|
|
.sp
|
|
.BR "* internal" " (default, for in-system flashing in the mainboard)"
|
|
.sp
|
|
.BR "* dummy" " (just prints all operations and accesses)"
|
|
.sp
|
|
.BR "* nic3com" " (for flash ROMs on 3COM network cards)"
|
|
.sp
|
|
.BR "* gfxnvidia" " (for flash ROMs on NVIDIA graphics cards)"
|
|
.sp
|
|
.BR "* drkaiser" " (for flash ROMs on Dr. Kaiser PC-Waechter PCI cards)"
|
|
.sp
|
|
.BR "* satasii" " (for flash ROMs on Silicon Image SATA/IDE controllers)"
|
|
.sp
|
|
.BR "* it87spi" " (for flash ROMs behind an ITE IT87xx Super I/O LPC/SPI translation unit)"
|
|
.sp
|
|
.BR "* ft2232spi" " (for flash ROMs attached to a FT2232H/FT4232H based USB SPI programmer)"
|
|
.sp
|
|
.BR "* serprog" " (for flash ROMs attached to Urja's AVR programmer)"
|
|
.sp
|
|
.BR "* buspiratespi" " (for flash ROMs attached to a Bus Pirate)"
|
|
.sp
|
|
The dummy programmer has an optional parameter specifying the bus types it
|
|
should support. For that you have to use the
|
|
.B "flashrom -p dummy:type"
|
|
syntax where
|
|
.B type
|
|
can be any comma-separated combination of
|
|
.B parallel lpc fwh spi all
|
|
in any order.
|
|
.sp
|
|
Example:
|
|
.B "flashrom -p dummy:lpc,fwh"
|
|
.sp
|
|
If you have multiple supported PCI cards which can program flash chips
|
|
(NICs, SATA/IDE controllers, etc.) in your system, you must use the
|
|
.B "flashrom -p xxxx:bb:dd.f"
|
|
syntax to explicitly select one of them, where
|
|
.B xxxx
|
|
is the name of the programmer
|
|
.B bb
|
|
is the PCI bus number,
|
|
.B dd
|
|
is the PCI device number, and
|
|
.B f
|
|
is the PCI function number of the desired NIC.
|
|
.sp
|
|
Example:
|
|
.B "flashrom -p nic3com:05:04.0"
|
|
.sp
|
|
Currently the following programmers support this mechanism:
|
|
.BR nic3com ,
|
|
.BR gfxnvidia ,
|
|
.BR satasii .
|
|
.sp
|
|
The it87spi programmer has an optional parameter which will set the I/O base
|
|
port of the IT87* SPI controller interface to the port specified in the
|
|
parameter. For that you have to use the
|
|
.B "flashrom -p it87spi:port=portnum"
|
|
syntax where
|
|
.B portnum
|
|
is an I/O port number which must be a multiple of 8.
|
|
.sp
|
|
The ft2232spi programmer has an optional parameter specifying the controller
|
|
type and interface/port it should support. For that you have to use the
|
|
.B "flashrom -p ft2232spi:model,port=interface"
|
|
syntax where
|
|
.B model
|
|
can be any of
|
|
.B 2232H 4232H
|
|
and
|
|
.B interface
|
|
can be any of
|
|
.B A
|
|
.BR B .
|
|
The default model is
|
|
.B 4232H
|
|
and the default interface is
|
|
.BR B .
|
|
.sp
|
|
The serprog programmer has an optional parameter specifying either a serial
|
|
device/baud combination or an IP/port combination for communication with the
|
|
programmer. For serial, you have to use the
|
|
.B "flashrom -p serprog:/dev/device:baud"
|
|
syntax and for IP, you have to use
|
|
.B "flashrom -p serprog:ip:port"
|
|
instead. More information about serprog is available in serprog-protocol.txt in
|
|
the source distribution.
|
|
.sp
|
|
The buspiratespi programmer has a required dev parameter specifying the Bus
|
|
Pirate device node and an optional spispeed parameter specifying the frequency
|
|
of the SPI bus. The parameter delimiter is a comma. Syntax is
|
|
.B "flashrom -p buspiratespi:dev=/dev/device,spispeed=frequency"
|
|
where
|
|
.B frequency
|
|
can be any of
|
|
.B 30k 125k 250k 1M 2M 2.6M 4M 8M
|
|
(in Hz).
|
|
.sp
|
|
Support for some programmers can be disabled at compile time.
|
|
.B "flashrom -h"
|
|
lists all supported programmers.
|
|
.TP
|
|
.B "\-h, \-\-help"
|
|
Show a help text and exit.
|
|
.TP
|
|
.B "\-R, \-\-version"
|
|
Show version information and exit.
|
|
.SH EXIT STATUS
|
|
flashrom exits with 0 on success, 1 on most failures but with 2 if /dev/mem
|
|
(/dev/xsvc on Solaris) can not be opened and with 3 if a call to mmap() fails.
|
|
.SH BUGS
|
|
Please report any bugs at
|
|
.BR http://www.flashrom.org/trac/flashrom/newticket ","
|
|
or on the flashrom mailing list
|
|
.RB "(" http://www.flashrom.org/mailman/listinfo/flashrom ")."
|
|
.SH LICENCE
|
|
.B flashrom
|
|
is covered by the GNU General Public License (GPL), version 2. Some files are
|
|
additionally available under the GPL (version 2, or any later version).
|
|
.SH COPYRIGHT
|
|
.br
|
|
Please see the individual files.
|
|
.SH AUTHORS
|
|
Carl-Daniel Hailfinger
|
|
.br
|
|
Claus Gindhart <claus.gindhart@kontron.com>
|
|
.br
|
|
Dominik Geyer <dominik.geyer@kontron.com>
|
|
.br
|
|
Eric Biederman <ebiederman@lnxi.com>
|
|
.br
|
|
Giampiero Giancipoli <gianci@email.it>
|
|
.br
|
|
Joe Bao <Zheng.Bao@amd.com>
|
|
.br
|
|
Luc Verhaegen <libv@skynet.be>
|
|
.br
|
|
Li-Ta Lo
|
|
.br
|
|
Markus Boas <ryven@ryven.de>
|
|
.br
|
|
Nikolay Petukhov <nikolay.petukhov@gmail.com>
|
|
.br
|
|
Peter Stuge <peter@stuge.se>
|
|
.br
|
|
Reinder E.N. de Haan <lb_reha@mveas.com>
|
|
.br
|
|
Ronald G. Minnich <rminnich@gmail.com>
|
|
.br
|
|
Ronald Hoogenboom <ronald@zonnet.nl>
|
|
.br
|
|
Stefan Reinauer <stepan@coresystems.de>
|
|
.br
|
|
Stefan Wildemann <stefan.wildemann@kontron.com>
|
|
.br
|
|
Steven James <pyro@linuxlabs.com>
|
|
.br
|
|
Uwe Hermann <uwe@hermann-uwe.de>
|
|
.br
|
|
Wang Qingpei <Qingpei.Wang@amd.com>
|
|
.br
|
|
Yinghai Lu <yinghai.lu@amd.com>
|
|
.br
|
|
some others
|
|
.PP
|
|
This manual page was written by Uwe Hermann <uwe@hermann-uwe.de>.
|
|
It is licensed under the terms of the GNU GPL (version 2 or later).
|