.\" Load the www device when using groff; provide a fallback for groff's MTO macro that formats email addresses.
.ie \n[.g] \
.  mso www.tmac
.el \{
.  de MTO
     \\$2 \(la\\$1 \(ra\\$3 \
.  .
.\}
.\" Create wrappers for .MTO and .URL that print only text on systems w/o groff or if not outputting to a HTML
.\" device. To that end we need to distinguish HTML output on groff from other configurations first.
.nr groffhtml 0
.if \n[.g] \
.  if "\*[.T]"html" \
.    nr groffhtml 1
.\" For code reuse it would be nice to have a single wrapper that gets its target macro as parameter.
.\" However, this did not work out with NetBSD's and OpenBSD's groff...
.de URLB
.  ie (\n[groffhtml]==1) \{\
.    URL \\$@
.  \}
.  el \{\
.    ie "\\$2"" \{\
.      BR "\\$1" "\\$3"
.    \}
.    el \{\
.      RB "\\$2 \(la" "\\$1" "\(ra\\$3"
.    \}
.  \}
..
.de MTOB
.  ie (\n[groffhtml]==1) \{\
.    MTO \\$@
.  \}
.  el \{\
.    ie "\\$2"" \{\
.      BR "\\$1" "\\$3"
.    \}
.    el \{\
.      RB "\\$2 \(la" "\\$1" "\(ra\\$3"
.    \}
.  \}
..
.TH FLASHPROG 8 "@MAN_DATE@" "flashprog-@VERSION@" "@MAN_DATE@"
.SH NAME
flashprog \- detect, read, write, verify and erase flash chips
.SH SYNOPSIS
.B flashprog \fR[\fB\-h\fR|\fB\-R\fR|\fB\-L\fR|\fB\-z\fR|
          \fB\-p\fR <programmername>[:<parameters>] [\fB\-c\fR <chipname>]
            (\fB\-\-flash\-name\fR|\fB\-\-flash\-size\fR|
             [\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\fB\-v\fR <file>]
             [(\fB\-l\fR <file>|\fB\-\-ifd\fR|\fB\-\-fmap\fR|\fB\-\-fmap-file\fR <file>)
              [\fB\-i\fR <include>]...]
             [\fB\-n\fR] [\fB\-N\fR] [\fB\-f\fR])]
         [\fB\-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>]
.SH DESCRIPTION
.B flashprog
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. However, it also supports various external
PCI/USB/parallel-port/serial-port based devices which can program flash chips,
including some network cards (NICs), SATA/IDE controller cards, graphics cards,
the Bus Pirate device, various FTDI FT2232/FT4232H/FT232H based USB devices, and more.
.PP
It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40,
TSOP48, and BGA chips, which use various protocols such as LPC, FWH,
parallel flash, or SPI.
.SH OPTIONS
You can specify one of
.BR \-h ", " \-R ", " \-L ", " \-z ", " \-E ", " \-r ", " \-w ", " \-v
or no operation.
If no operation is specified, flashprog will only probe for flash chips. It is
recommended that if you try flashprog the first time on a system, you run it
in probe-only mode and check the output. Also you are advised to make a
backup of your current ROM contents with
.B \-r
before you try to write a new image. All operations involving any chip access (probe/read/write/...) require the
.B -p/--programmer
option to be used (please see below).
.TP
.B "\-r, \-\-read <file>"
Read flash ROM contents and save them into the given
.BR <file> .
If the file already exists, it will be overwritten.
.TP
.B "\-w, \-\-write (<file>|-)"
Write
.B <file>
into flash ROM. If
.B -
is provided instead, contents will be read from stdin. This will first automatically
.B erase
the chip, then write to it.
.sp
In the process the chip is also read several times. First an in-memory backup
is made for disaster recovery and to be able to skip regions that are
already equal to the image file. This copy is updated along with the write
operation. In case of erase errors it is even re-read completely. After
writing has finished and if verification is enabled, the whole flash chip is
read out and compared with the input image.
.TP
.B "\-n, \-\-noverify"
Skip the automatic verification of flash ROM contents after writing. Using this
option is
.B not
recommended, you should only use it if you know what you are doing and if you
feel that the time for verification takes too long.
.sp
Typical usage is:
.B "flashprog \-p prog \-n \-w <file>"
.sp
This option is only useful in combination with
.BR \-\-write .
.TP
.B "\-N, \-\-noverify-all"
Skip not included regions during automatic verification after writing (cf.
.BR "\-l " "and " "\-i" ).
You should only use this option if you are sure that communication with
the flash chip is reliable (e.g. when using the
.BR internal
programmer). Even if flashprog is instructed not to touch parts of the
flash chip, their contents could be damaged (e.g. due to misunderstood
erase commands).
.sp
This option is required to flash an Intel system with locked ME flash
region using the
.BR internal
programmer. It may be enabled by default in this case in the future.
.TP
.B "\-v, \-\-verify (<file>|-)"
Verify the flash ROM contents against the given
.BR <file> .
If
.BR -
is provided instead, contents will be read from stdin.
.TP
.B "\-E, \-\-erase"
Erase the flash ROM chip.
.TP
.B "\-V, \-\-verbose"
More verbose output. This option can be supplied multiple times
(max. 3 times, i.e.
.BR \-VVV )
for even more debug output.
.TP
.B "\-c, \-\-chip" <chipname>
Probe only for the specified flash ROM chip. This option takes the chip name as
printed by
.B "flashprog \-L"
without the vendor name as parameter. Please note that the chip name is
case sensitive.
.TP
.B "\-f, \-\-force"
Force one or more of the following actions:
.sp
* Force chip read and pretend the chip is there.
.sp
* Force chip access even if the chip is bigger than the maximum supported \
size for the flash bus.
.sp
* Force erase even if erase is known bad.
.sp
* Force write even if write is known bad.
.TP
.B "\-l, \-\-layout <file>"
Read ROM layout from
.BR <file> .
.sp
flashprog supports ROM layouts. This allows you to flash certain parts of
the flash chip only. A ROM layout file contains multiple lines with the
following syntax:
.sp
.B "  startaddr:endaddr imagename"
.sp
.BR "startaddr " "and " "endaddr "
are hexadecimal addresses within the ROM file and do not refer to any
physical address. Please note that using a 0x prefix for those hexadecimal
numbers is not necessary, but you can't specify decimal/octal numbers.
.BR "imagename " "is an arbitrary name for the region/image from"
.BR " startaddr " "to " "endaddr " "(both addresses included)."
.sp
Example:
.sp
  00000000:00008fff gfxrom
  00009000:0003ffff normal
  00040000:0007ffff fallback
.sp
If you only want to update the image named
.BR "normal " "in a ROM based on the layout above, run"
.sp
.B "  flashprog \-p prog \-\-layout rom.layout \-\-image normal \-w some.rom"
.sp
To update only the images named
.BR "normal " "and " "fallback" ", run:"
.sp
.B "  flashprog \-p prog \-l rom.layout \-i normal -i fallback \-w some.rom"
.sp
Overlapping sections are not supported.
.TP
.B "\-\-fmap"
Read layout from fmap in flash chip.
.sp
flashprog supports the fmap binary format which is commonly used by coreboot
for partitioning a flash chip. The on-chip fmap will be read and used to generate
the layout.
.sp
If you only want to update the
.BR "COREBOOT"
region defined in the fmap, run
.sp
.B " flashprog -p prog \-\-fmap \-\-image COREBOOT \-w some.rom"
.TP
.B "\-\-fmap-file <file>"
Read layout from a
.BR <file>
containing binary fmap (e.g. coreboot roms).
.sp
flashprog supports the fmap binary format which is commonly used by coreboot
for partitioning a flash chip. The fmap in the specified file will be read and
used to generate the layout.
.sp
If you only want to update the
.BR "COREBOOT"
region defined in the binary fmap file, run
.sp
.B "  flashprog \-p prog \-\-fmap-file some.rom \-\-image COREBOOT \-w some.rom"
.TP
.B "\-\-ifd"
Read ROM layout from Intel Firmware Descriptor.
.sp
flashprog supports ROM layouts given by an Intel Firmware Descriptor
(IFD). The on-chip descriptor will be read and used to generate the
layout. If you need to change the layout, you have to update the IFD
only first.
.sp
The following ROM images may be present in an IFD:
.sp
  fd    the IFD itself
  bios  the host firmware aka. BIOS
  me    Intel Management Engine firmware
  gbe   gigabit ethernet firmware
  pd    platform specific data
.TP
.B "\-i, \-\-image <imagename>"
Only flash region/image
.B <imagename>
from flash layout.
.TP
.B "\-\-flash\-name"
Prints out the detected flash chips name.
.TP
.B "\-\-flash\-size"
Prints out the detected flash chips size.
.TP
.B "\-\-flash\-contents <ref\-file>"
The file contents of
.BR <ref\-file>
will be used to decide which parts of the flash need to be written. Providing
this saves an initial read of the full flash chip. Be careful, if the provided
data doesn't actually match the flash contents, results are undefined.
.TP
.B "\-L, \-\-list\-supported"
List the flash chips, chipsets, mainboards, and external programmers
(including PCI, USB, parallel port, and serial port based devices)
supported by flashprog.
.sp
There are many unlisted boards which will work out of the box, without
special support in flashprog. Please let us know if you can verify that
other boards work or do not work out of the box.
.sp
.B IMPORTANT:
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
.URLB https://flashprog.org/Supported_hardware "supported hardware wiki page" .
Please note that MediaWiki output is not compiled in by default.
.TP
.B "\-p, \-\-programmer <name>[:parameter[,parameter[,parameter]]]"
Specify the programmer device. This is mandatory for all operations
involving any chip access (probe/read/write/...). Currently supported are:
.sp
.BR "* internal" " (for in-system flashing in the mainboard)"
.sp
.BR "* dummy" " (virtual programmer for testing flashprog)"
.sp
.BR "* nic3com" " (for flash ROMs on 3COM network cards)"
.sp
.BR "* nicrealtek" " (for flash ROMs on Realtek and SMC 1211 network cards)"
.sp
.BR "* nicnatsemi" " (for flash ROMs on National Semiconductor DP838* network \
cards)"
.sp
.BR "* nicintel" " (for parallel flash ROMs on Intel 10/100Mbit 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 "* satamv" " (for flash ROMs on Marvell SATA controllers)"
.sp
.BR "* atahpt" " (for flash ROMs on Highpoint ATA/RAID controllers)"
.sp
.BR "* atavia" " (for flash ROMs on VIA VT6421A SATA controllers)"
.sp
.BR "* atapromise" " (for flash ROMs on Promise PDC2026x ATA/RAID controllers)"
.sp
.BR "* it8212" " (for flash ROMs on ITE IT8212F ATA/RAID controller)"
.sp
.BR "* ft2232_spi" " (for SPI flash ROMs attached to an FT2232/FT4232H/FT232H family based USB SPI programmer).
.sp
.BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog, \
including some Arduino-based devices)."
.sp
.BR "* buspirate_spi" " (for SPI flash ROMs attached to a Bus Pirate)"
.sp
.BR "* dediprog" " (for SPI flash ROMs attached to a Dediprog SF100)"
.sp
.BR "* rayer_spi" " (for SPI flash ROMs attached to a parallel port by one of various cable types)"
.sp
.BR "* pony_spi" " (for SPI flash ROMs attached to a SI-Prog serial port "
bitbanging adapter)
.sp
.BR "* nicintel_spi" " (for SPI flash ROMs on Intel Gigabit network cards)"
.sp
.BR "* ogp_spi" " (for SPI flash ROMs on Open Graphics Project graphics card)"
.sp
.BR "* linux_gpio_spi" " (for SPI flash ROMs attached to a GPIO chip device accessible via /dev/gpiochipX on Linux)"
.sp
.BR "* linux_mtd" " (for SPI flash ROMs accessible via /dev/mtdX on Linux)"
.sp
.BR "* linux_spi" " (for SPI flash ROMs accessible via /dev/spidevX.Y on Linux)"
.sp
.BR "* usbblaster_spi" " (for SPI flash ROMs attached to an Altera USB-Blaster compatible cable)"
.sp
.BR "* nicintel_eeprom" " (for SPI EEPROMs on Intel Gigabit network cards)"
.sp
.BR "* mstarddc_spi" " (for SPI flash ROMs accessible through DDC in MSTAR-equipped displays)"
.sp
.BR "* pickit2_spi" " (for SPI flash ROMs accessible via Microchip PICkit2)"
.sp
.BR "* ch341a_spi" " (for SPI flash ROMs attached to WCH CH341A)"
.sp
.BR "* ch347_spi" " (for SPI flash ROMs attached to WCH CH347)"
.sp
.BR "* digilent_spi" " (for SPI flash ROMs attached to iCEblink40 development boards)"
.sp
.BR "* jlink_spi" " (for SPI flash ROMs attached to SEGGER J-Link and compatible devices)"
.sp
.BR "* ni845x_spi" " (for SPI flash ROMs attached to National Instruments USB-8451 or USB-8452)"
.sp
.BR "* stlinkv3_spi" " (for SPI flash ROMs attached to STMicroelectronics STLINK V3 devices)"
.sp
.BR "* dirtyjtag_spi" " (for SPI flash ROMs attached to DirtyJTAG-compatible devices)"
.sp
Some programmers have optional or mandatory parameters which are described
in detail in the
.B PROGRAMMER-SPECIFIC INFORMATION
section. Support for some programmers can be disabled at compile time.
.B "flashprog \-h"
lists all supported programmers.
.TP
.B "\-h, \-\-help"
Show a help text and exit.
.TP
.B "\-o, \-\-output <logfile>"
Save the full debug log to
.BR <logfile> .
If the file already exists, it will be overwritten. This is the recommended
way to gather logs from flashprog because they will be verbose even if the
on-screen messages are not verbose and don't require output redirection.
.TP
.B "\-R, \-\-version"
Show version information and exit.
.SH PROGRAMMER-SPECIFIC INFORMATION
Some programmer drivers accept further parameters to set programmer-specific
parameters. These parameters are separated from the programmer name by a
colon. While some programmers take arguments at fixed positions, other
programmers use a key/value interface in which the key and value is separated
by an equal sign and different pairs are separated by a comma or a colon.
.SS
.BR "internal " programmer
.TP
.B Board Enables
.sp
Some mainboards require to run mainboard specific code to enable flash erase
and write support (and probe support on old systems with parallel flash).
The mainboard brand and model (if it requires specific code) is usually
autodetected using one of the following mechanisms: If your system is
running coreboot, the mainboard type is determined from the coreboot table.
Otherwise, the mainboard is detected by examining the onboard PCI devices
and possibly DMI info. If PCI and DMI do not contain information to uniquely
identify the mainboard (which is the exception), or if you want to override
the detected mainboard model, you can specify the mainboard using the
.sp
.B "  flashprog \-p internal:mainboard=<vendor>:<board>"
syntax.
.sp
See the 'Known boards' or 'Known laptops' section in the output
of 'flashprog \-L' for a list of boards which require the specification of
the board name, if no coreboot table is found.
.sp
Some of these board-specific flash enabling functions (called
.BR "board enables" )
in flashprog have not yet been tested. If your mainboard is detected needing
an untested board enable function, a warning message is printed and the
board enable is not executed, because a wrong board enable function might
cause the system to behave erratically, as board enable functions touch the
low-level internals of a mainboard. Not executing a board enable function
(if one is needed) might cause detection or erasing failure. If your board
protects only part of the flash (commonly the top end, called boot block),
flashprog might encounter an error only after erasing the unprotected part,
so running without the board-enable function might be dangerous for erase
and write (which includes erase).
.sp
The suggested procedure for a mainboard with untested board specific code is
to first try to probe the ROM (just invoke flashprog and check that it
detects your flash chip type) without running the board enable code (i.e.
without any parameters). If it finds your chip, fine. Otherwise, retry
probing your chip with the board-enable code running, using
.sp
.B "  flashprog \-p internal:boardenable=force"
.sp
If your chip is still not detected, the board enable code seems to be broken
or the flash chip unsupported. Otherwise, make a backup of your current ROM
contents (using
.BR \-r )
and store it to a medium outside of your computer, like
a USB drive or a network share. If you needed to run the board enable code
already for probing, use it for reading too.
If reading succeeds and the contents of the read file look legit you can try to write the new image.
You should enable the board enable code in any case now, as it
has been written because it is known that writing/erasing without the board
enable is going to fail. In any case (success or failure), please report to
the flashprog mailing list, see below.
.sp
.TP
.B Coreboot
.sp
On systems running coreboot, flashprog checks whether the desired image matches
your mainboard. This needs some special board ID to be present in the image.
If flashprog detects that the image you want to write and the current board
do not match, it will refuse to write the image unless you specify
.sp
.B "  flashprog \-p internal:boardmismatch=force"
.TP
.B ITE IT87 Super I/O
.sp
If your mainboard is manufactured by GIGABYTE and supports DualBIOS it is very likely that it uses an
ITE IT87 series Super I/O to switch between the two flash chips. Only one of them can be accessed at a time
and you can manually select which one to use with the
.sp
.B "  flashprog \-p internal:dualbiosindex=chip"
.sp
syntax where
.B chip
is the index of the chip to use (0 = main, 1 = backup). You can check which one is currently selected by
leaving out the
.B chip
parameter.
.sp
If your mainboard uses an ITE IT87 series Super I/O for LPC<->SPI flash bus
translation, flashprog should autodetect that configuration. If you want to
set the I/O base port of the IT87 series SPI controller manually instead of
using the value provided by the BIOS, use the
.sp
.B "  flashprog \-p internal:it87spiport=portnum"
.sp
syntax where
.B portnum
is the I/O port number (must be a multiple of 8). In the unlikely case
flashprog doesn't detect an active IT87 LPC<->SPI bridge, please send a bug
report so we can diagnose the problem.
.sp
.TP
.B AMD chipsets
.sp
Beginning with the SB700 chipset there is an integrated microcontroller (IMC) based on the 8051 embedded in
every AMD southbridge. Its firmware resides in the same flash chip as the host's which makes writing to the
flash risky if the IMC is active. Flashprog tries to temporarily disable the IMC but even then changing the
contents of the flash can have unwanted effects: when the IMC continues (at the latest after a reboot) it will
continue executing code from the flash. If the code was removed or changed in an unfortunate way it is
unpredictable what the IMC will do. Therefore, if flashprog detects an active IMC it will disable write support
unless the user forces it with the
.sp
.B "  flashprog \-p internal:amd_imc_force=yes"
.sp
syntax. The user is responsible for supplying a suitable image or leaving out the IMC region with the help of
a layout file. This limitation might be removed in the future when we understand the details better and have
received enough feedback from users. Please report the outcome if you had to use this option to write a chip.
.sp
An optional
.B spispeed
parameter specifies the frequency of the SPI bus where applicable (i.e.\& SB600 or later with an SPI flash chip
directly attached to the chipset).
Syntax is
.sp
.B "  flashprog \-p internal:spispeed=frequency"
.sp
where
.B frequency
can be
.BR "'16.5\ MHz'" ", " "'22\ MHz'" ", " "'33\ MHz'" ", " "'66\ MHz'" ", " "'100\ MHZ'" ", or " "'800\ kHz'" "."
Support of individual frequencies depends on the generation of the chipset:
.sp
* SB6xx, SB7xx, SP5xxx: from 16.5 MHz up to and including 33 MHz
.sp
* SB8xx, SB9xx, Hudson: from 16.5 MHz up to and including 66 MHz
.sp
* Yangtze (with SPI 100 engine as found in Kabini and Tamesh): all of them
.sp
The default is to use 16.5 MHz and disable Fast Reads.
.TP
.B Intel chipsets
.sp
If you have an Intel chipset with an ICH8 or later southbridge with SPI flash
attached, and if a valid descriptor was written to it (e.g.\& by the vendor), the
chipset provides an alternative way to access the flash chip(s) named
.BR "Hardware Sequencing" .
It is much simpler than the normal access method (called
.BR "Software Sequencing" "),"
but does not allow the software to choose the SPI commands to be sent.
You can use the
.sp
.B "  flashprog \-p internal:ich_spi_mode=value"
.sp
syntax where
.BR "value " "can be"
.BR auto ", " swseq " or " hwseq .
By default
.RB "(or when setting " ich_spi_mode=auto )
the module tries to use swseq and only activates hwseq if need be (e.g.\& if
important opcodes are inaccessible due to lockdown; or if more than one flash
chip is attached). The other options (swseq, hwseq) select the respective mode
(if possible).
.sp
ICH8 and later southbridges may also have locked address ranges of different
kinds if a valid descriptor was written to it. The flash address space is then
partitioned in multiple so called "Flash Regions" containing the host firmware,
the ME firmware and so on respectively. The flash descriptor can also specify up
to 5 so called "Protected Regions", which are freely chosen address ranges
independent from the aforementioned "Flash Regions". All of them can be write
and/or read protected individually.
.sp
If you have an Intel chipset with an ICH2 or later southbridge and if you want
to set specific IDSEL values for a non-default flash chip or an embedded
controller (EC), you can use the
.sp
.B "  flashprog \-p internal:fwh_idsel=value"
.sp
syntax where
.B value
is the 48-bit hexadecimal raw value to be written in the
IDSEL registers of the Intel southbridge. The upper 32 bits use one hex digit
each per 512 kB range between 0xffc00000 and 0xffffffff, and the lower 16 bits
use one hex digit each per 1024 kB range between 0xff400000 and 0xff7fffff.
The rightmost hex digit corresponds with the lowest address range. All address
ranges have a corresponding sister range 4 MB below with identical IDSEL
settings. The default value for ICH7 is given in the example below.
.sp
Example:
.B "flashprog \-p internal:fwh_idsel=0x001122334567"
.TP
.B Laptops
.sp
Using flashprog on older laptops that don't boot from the SPI bus is
dangerous and may easily make your hardware unusable (see also the
.B BUGS
section). The embedded controller (EC) in some
machines may interact badly with flashing.
More information is
.URLB https://flashprog.org/Laptops "in the wiki" .
Problems occur when the flash chip is shared between BIOS
and EC firmware, and the latter does not expect flashprog
to access the chip. While flashprog tries to change the contents of
that memory the EC might need to fetch new instructions or data from it and
could stop working correctly. Probing for and reading from the chip may also
irritate your EC and cause fan failure, backlight failure, sudden poweroff, and
other nasty effects. flashprog will attempt to detect if it is running on such a
laptop and limit probing to SPI buses. If you want to probe the LPC bus
anyway at your own risk, use
.sp
.B "  flashprog \-p internal:laptop=force_I_want_a_brick"
.sp
We will not help you if you force flashing on a laptop because this is a really
dumb idea.
.sp
You have been warned.
.sp
Currently we rely on the chassis type encoded in the DMI/SMBIOS data to detect
laptops. Some vendors did not implement those bits correctly or set them to
generic and/or dummy values. flashprog will then issue a warning and restrict
buses like above. In this case you can use
.sp
.B "  flashprog \-p internal:laptop=this_is_not_a_laptop"
.sp
to tell flashprog (at your own risk) that it is not running on a laptop.
.SS
.BR "dummy " programmer
.IP
The dummy programmer operates on a buffer in memory only. It provides a safe and fast way to test various
aspects of flashprog and is mainly used in development and while debugging.
It is able to emulate some chips to a certain degree (basic
identify/read/erase/write operations work).
.sp
An optional parameter specifies the bus types it
should support. For that you have to use the
.sp
.B "  flashprog \-p dummy:bus=[type[+type[+type]]]"
.sp
syntax where
.B type
can be
.BR parallel ", " lpc ", " fwh ", " spi
in any order. If you specify bus without type, all buses will be disabled.
If you do not specify bus, all buses will be enabled.
.sp
Example:
.B "flashprog \-p dummy:bus=lpc+fwh"
.sp
The dummy programmer supports flash chip emulation for automated self-tests
without hardware access. If you want to emulate a flash chip, use the
.sp
.B "  flashprog \-p dummy:emulate=chip"
.sp
syntax where
.B chip
is one of the following chips (please specify only the chip name, not the
vendor):
.sp
.RB "* ST " M25P10.RES " SPI flash chip (128 kB, RES, page write)"
.sp
.RB "* SST " SST25VF040.REMS " SPI flash chip (512 kB, REMS, byte write)"
.sp
.RB "* SST " SST25VF032B " SPI flash chip (4096 kB, RDID, AAI write)"
.sp
.RB "* Macronix " MX25L6436 " SPI flash chip (8192 kB, RDID, SFDP)"
.sp
.RB "* Winbond " W25Q128FV " SPI flash chip (16384 kB, RDID)"
.sp
.RB "* Spansion " S25FL128L " SPI flash chip (16384 kB, RDID)"
.sp
Example:
.B "flashprog -p dummy:emulate=SST25VF040.REMS"
.TP
.B Persistent images
.sp
If you use flash chip emulation, flash image persistence is available as well
by using the
.sp
.B "  flashprog \-p dummy:emulate=chip,image=image.rom"
.sp
syntax where
.B image.rom
is the file where the simulated chip contents are read on flashprog startup and
where the chip contents on flashprog shutdown are written to.
.sp
Example:
.B "flashprog -p dummy:emulate=M25P10.RES,image=dummy.bin"
.TP
.B SPI write chunk size
.sp
If you use SPI flash chip emulation for a chip which supports SPI page write
with the default opcode, you can set the maximum allowed write chunk size with
the
.sp
.B "  flashprog \-p dummy:emulate=chip,spi_write_256_chunksize=size"
.sp
syntax where
.B size
is the number of bytes (min.\& 1, max.\& 256).
.sp
Example:
.sp
.B "  flashprog -p dummy:emulate=M25P10.RES,spi_write_256_chunksize=5"
.TP
.B SPI blacklist
.sp
To simulate a programmer which refuses to send certain SPI commands to the
flash chip, you can specify a blacklist of SPI commands with the
.sp
.B "  flashprog -p dummy:spi_blacklist=commandlist"
.sp
syntax where
.B commandlist
is a list of two-digit hexadecimal representations of
SPI commands. If commandlist is e.g.\& 0302, flashprog will behave as if the SPI
controller refuses to run command 0x03 (READ) and command 0x02 (WRITE).
commandlist may be up to 512 characters (256 commands) long.
Implementation note: flashprog will detect an error during command execution.
.sp
.TP
.B SPI ignorelist
.sp
To simulate a flash chip which ignores (doesn't support) certain SPI commands,
you can specify an ignorelist of SPI commands with the
.sp
.B "  flashprog -p dummy:spi_ignorelist=commandlist"
.sp
syntax where
.B commandlist
is a list of two-digit hexadecimal representations of
SPI commands. If commandlist is e.g.\& 0302, the emulated flash chip will ignore
command 0x03 (READ) and command 0x02 (WRITE).  commandlist may be up to 512
characters (256 commands) long.
Implementation note: flashprog won't detect an error during command execution.
.sp
.TP
.B SPI status register
.sp
You can specify the initial content of the chip's status register with the
.sp
.B "  flashprog -p dummy:spi_status=content"
.sp
syntax where
.B content
is a hexadecimal value of up to 24 bits. For example, 0x332211 assigns 0x11 to
SR1, 0x22 to SR2 and 0x33 to SR3. Shorter value is padded to 24 bits with
zeroes on the left. See datasheet for chosen chip for details about the
registers content.
.sp
.TP
.B Write protection
.sp
Chips with emulated WP: W25Q128FV, S25FL128L.
.sp
You can simulate state of hardware protection pin (WP) with the
.sp
.B "  flashprog -p dummy:hwwp=state"
.sp
syntax where
.B state
is "yes" or "no" (default value). "yes" means active state of the pin implies
that chip is write-protected (on real hardware the pin is usually negated, but
not here).
.SS
.BR "nic3com" , " nicrealtek" , " nicnatsemi" , " nicintel", " nicintel_eeprom"\
, " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii"\
, " satamv" , " atahpt", " atavia ", " atapromise " and " it8212 " programmers
.IP
These programmers have an option to specify the PCI address of the card
your want to use, which must be specified if more than one card supported
by the selected programmer is installed in your system. The syntax is
.sp
.BR "  flashprog \-p xxxx:pci=bb:dd.f" ,
.sp
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 device.
.sp
Example:
.B "flashprog \-p nic3com:pci=05:04.0"
.SS
.BR "atavia " programmer
.IP
Due to the mysterious address handling of the VIA VT6421A controller the user can specify an offset with the
.sp
.B "  flashprog \-p atavia:offset=addr"
.sp
syntax where
.B addr
will be interpreted as usual (leading 0x (0) for hexadecimal (octal) values, or else decimal).
For more information please see
.URLB https://flashprog.org/VT6421A "its wiki page" .
.SS
.BR "atapromise " programmer
.IP
This programmer is currently limited to 32 kB, regardless of the actual size of the flash chip. This stems
from the fact that, on the tested device (a Promise Ultra100), not all of the chip's address lines were
actually connected. You may use this programmer to flash firmware updates, since these are only 16 kB in
size (padding to 32 kB is required).
.SS
.BR "nicintel_eeprom " programmer
.IP
This is the first programmer module in flashprog that does not provide access to NOR flash chips but EEPROMs
mounted on gigabit Ethernet cards based on Intel's 82580 NIC. Because EEPROMs normally do not announce their
size nor allow themselves to be identified, the controller relies on correct size values written to predefined
addresses within the chip. Flashprog follows this scheme but assumes the minimum size of 16 kB (128 kb) if an
unprogrammed EEPROM/card is detected. Intel specifies following EEPROMs to be compatible:
Atmel AT25128, AT25256, Micron (ST) M95128, M95256 and OnSemi (Catalyst) CAT25CS128.
.SS
.BR "ft2232_spi " programmer
.IP
This module supports various programmers based on FTDI FT2232/FT4232H/FT4233H/FT232H chips including the DLP Design
DLP-USB1232H, openbiosprog-spi, Amontec JTAGkey/JTAGkey-tiny/JTAGkey-2, Dangerous Prototypes Bus Blaster,
Olimex ARM-USB-TINY/-H, Olimex ARM-USB-OCD/-H, OpenMoko Neo1973 Debug board (V2+), TIAO/DIYGADGET USB
Multi-Protocol Adapter (TUMPA), TUMPA Lite, GOEPEL PicoTAP, Google Servo v1/v2, Tin Can Tools
Flyswatter/Flyswatter 2 and Kristech KT-LINK.
.sp
An optional parameter specifies the controller
type, channel/interface/port it should support. For that you have to use the
.sp
.B "  flashprog \-p ft2232_spi:type=model,port=interface"
.sp
syntax where
.B model
can be
.BR 2232H ", " 4232H ", " 232H ", " jtagkey ", " busblaster ", " openmoko ", " \
arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \
", " tumpa ", " tumpalite ", " picotap ", " google-servo ", " google-servo-v2 \
", " google-servo-v2-legacy " or " kt-link
.B interface
can be
.BR A ", " B ", " C ", or " D .
The default model is
.B 4232H
the default interface is
.BR A
and GPIO is not used by default.
.sp
If there is more than one ft2232_spi-compatible device connected, you can select which one should be used by
specifying its serial number with the
.sp
.B "  flashprog \-p ft2232_spi:serial=number"
.sp
syntax where
.B number
is the serial number of the device (which can be found for example in the output of lsusb -v).
.sp
All models supported by the ft2232_spi driver can configure the SPI clock rate by setting a divisor. The
expressible divisors are all
.B even
numbers between 2 and 2^17 (=131072) resulting in SPI clock frequencies of
6 MHz down to about 92 Hz for 12 MHz inputs (non-H chips) and 30 MHz down to about 458 Hz for 60 MHz inputs ('H' chips). The default
divisor is set to 2, but you can use another one by specifying the optional
.B divisor
parameter with the
.sp
.B "  flashprog \-p ft2232_spi:divisor=div"
.sp
syntax.
.sp
Using the parameter
.B csgpiol (DEPRECATED - use gpiol instead)
an additional CS# pin can be chosen, where the value can be a number between 0 and 3, denoting GPIOL0-GPIOL3
correspondingly. Example:
.sp
.B "  flashprog \-p ft2232_spi:csgpiol=3"
.sp
The parameter
.B gpiolX=[HLC]
allows use of the GPIOL pins either as generic gpios with a fixed value during flashing or as additional CS#
signal, where
.B X
can be a number between 0 and 3, denoting GPIOL0-GPIOL3 correspondingly. The parameter may be specified
multiple times, one time per GPIOL pin.
Valid values are
.B H
,
.B L
and
.B C
:
.br
.B "  H "
- Set GPIOL output high
.br
.B "  L "
- Set GPIOL output low
.br
.B "  C "
- Use GPIOL as additional CS# output
.sp
.B Example:
.sp
.B "  flashprog \-p ft2232_spi:gpiol0=H"
.sp
.B Note
that not all GPIOL pins are freely usable with all programmers as some have special functionality.
.SS
.BR "serprog " programmer
.IP
This module supports all programmers speaking the serprog protocol. This includes some Arduino-based devices
as well as various programmers by Urja Rannikko, Juhana Helovuo, Stefan Tauner, Chi Zhang and many others.
.sp
A mandatory parameter specifies either a serial device (and baud rate) or an IP/port combination for
communicating with the programmer.
The device/baud combination has to start with
.B dev=
and separate the optional baud rate with a colon.
For example
.sp
.B "  flashprog \-p serprog:dev=/dev/ttyS0:115200"
.sp
If no baud rate is given the default values by the operating system/hardware will be used.
For IP connections you have to use the
.sp
.B "  flashprog \-p serprog:ip=ipaddr:port"
.sp
syntax.
In case the device supports it, you can set the SPI clock frequency with the optional
.B spispeed
parameter. The frequency is parsed as hertz, unless an
.BR M ", or " k
suffix is given, then megahertz or kilohertz are used respectively.
Example that sets the frequency to 2 MHz:
.sp
.B "  flashprog \-p serprog:dev=/dev/ttyACM0,spispeed=2M"
.sp
In case the device supports it, you can set which SPI Chip Select to use with the optional
.B cs
parameter. Example that tells the programmer to use chip select number 0:
.sp
.B "  flashprog \-p serprog:dev=/dev/ttyACM0:cs=0"
.sp
More information about serprog is available in
.B serprog-protocol.txt
in the source distribution.
.SS
.BR "buspirate_spi " programmer
.IP
A required
.B dev
parameter specifies the Bus Pirate device node and an optional
.B spispeed
parameter specifies the frequency of the SPI bus. The parameter
delimiter is a comma. Syntax is
.sp
.B "  flashprog \-p buspirate_spi:dev=/dev/device,spispeed=frequency"
.sp
where
.B frequency
can be
.BR 30k ", " 125k ", " 250k ", " 1M ", " 2M ", " 2.6M ", " 4M " or " 8M
(in Hz). The default is the maximum frequency of 8 MHz.
.sp
The baud rate for communication between the host and the Bus Pirate can be specified with the optional
.B serialspeed
parameter. Syntax is
.sp
.B "  flashprog -p buspirate_spi:serialspeed=baud
.sp
where
.B baud
can be
.BR 115200 ", " 230400 ", " 250000 " or " 2000000 " (" 2M ")."
The default is 2M baud for Bus Pirate hardware version 3.0 and greater, and 115200 otherwise.
.sp
An optional pullups parameter specifies the use of the Bus Pirate internal pull-up resistors. This may be
needed if you are working with a flash ROM chip that you have physically removed from the board. Syntax is
.sp
.B "  flashprog -p buspirate_spi:pullups=state"
.sp
where
.B state
can be
.BR on " or " off .
More information about the Bus Pirate pull-up resistors and their purpose is available
.URLB "http://dangerousprototypes.com/docs/Practical_guide_to_Bus_Pirate_pull-up_resistors" \
"in a guide by dangerousprototypes" .
.sp
The state of the Bus Pirate power supply pins is controllable through an optional
.B psus
parameter. Syntax is
.sp
.B "  flashprog -p buspirate_spi:psus=state"
.sp
where
.B state
can be
.BR on " or " off .
This allows the bus pirate to power the ROM chip directly. This may also be used to provide the
required pullup voltage (when using the
.B pullups
option), by connecting the Bus Pirate's Vpu input to the appropriate Vcc pin.
.SS
.BR "pickit2_spi " programmer
.IP
An optional
.B voltage
parameter specifies the voltage the PICkit2 should use. The default unit is Volt if no unit is specified.
You can use
.BR mV ", " millivolt ", " V " or " Volt
as unit specifier. Syntax is
.sp
.B "  flashprog \-p pickit2_spi:voltage=value"
.sp
where
.B value
can be
.BR 0V ", " 1.8V ", " 2.5V ", " 3.5V
or the equivalent in mV.
.sp
An optional
.B spispeed
parameter specifies the frequency of the SPI bus. Syntax is
.sp
.B "  flashprog \-p pickit2_spi:spispeed=frequency"
.sp
where
.B frequency
can be
.BR 250k ", " 333k ", " 500k " or " 1M "
(in Hz). The default is a frequency of 1 MHz.
.SS
.BR "dediprog " programmer
.IP
An optional
.B voltage
parameter specifies the voltage the Dediprog should use. The default unit is
Volt if no unit is specified. You can use
.BR mV ", " milliVolt ", " V " or " Volt
as unit specifier. Syntax is
.sp
.B "  flashprog \-p dediprog:voltage=value"
.sp
where
.B value
can be
.BR 0V ", " 1.8V ", " 2.5V ", " 3.5V
or the equivalent in mV.
.sp
An optional
.B device
parameter specifies which of multiple connected Dediprog devices should be used.
Please be aware that the order depends on libusb's usb_get_busses() function and that the numbering starts
at 0.
Usage example to select the second device:
.sp
.B "  flashprog \-p dediprog:device=1"
.sp
An optional
.B spispeed
parameter specifies the frequency of the SPI bus. The firmware on the device needs to be 5.0.0 or newer.
Syntax is
.sp
.B "  flashprog \-p dediprog:spispeed=frequency"
.sp
where
.B frequency
can be
.BR 375k ", " 750k ", " 1.5M ", " 2.18M ", " 3M ", " 8M ", " 12M " or " 24M
(in Hz). The default is a frequency of 12 MHz.
.sp
An optional
.B target
parameter specifies which target chip should be used. Syntax is
.sp
.B "  flashprog \-p dediprog:target=value"
.sp
where
.B value
can be
.BR 1 " or " 2
to select target chip 1 or 2 respectively. The default is target chip 1.
.SS
.BR "rayer_spi " programmer
.IP
The default I/O base address used for the parallel port is 0x378 and you can use
the optional
.B iobase
parameter to specify an alternate base I/O address with the
.sp
.B "  flashprog \-p rayer_spi:iobase=baseaddr"
.sp
syntax where
.B baseaddr
is base I/O port address of the parallel port, which must be a multiple of
four. Make sure to not forget the "0x" prefix for hexadecimal port addresses.
.sp
The default cable type is the RayeR cable. You can use the optional
.B type
parameter to specify the cable type with the
.sp
.B "  flashprog \-p rayer_spi:type=model"
.sp
syntax where
.B model
can be
.BR rayer " for the RayeR cable, " byteblastermv " for the Altera ByteBlasterMV, " stk200 " for the Atmel \
STK200/300, " wiggler " for the Macraigor Wiggler, " xilinx " for the Xilinx Parallel Cable III (DLC 5), or" \
" spi_tt" " for SPI Tiny Tools-compatible hardware.
.sp
More information about the RayeR hardware is available at
.nh
.URLB "http://rayer.g6.cz/elektro/spipgm.htm" "RayeR's website" .
The Altera ByteBlasterMV datasheet can be obtained from
.URLB "http://www.altera.co.jp/literature/ds/dsbytemv.pdf" Altera .
For more information about the Macraigor Wiggler see
.URLB "http://www.macraigor.com/wiggler.htm" "their company homepage" .
The schematic of the Xilinx DLC 5 was published in
.URLB "http://www.xilinx.com/support/documentation/user_guides/xtp029.pdf" "a Xilinx user guide" .
.SS
.BR "pony_spi " programmer
.IP
The serial port (like /dev/ttyS0, /dev/ttyUSB0 on Linux or COM3 on windows) is
specified using the mandatory
.B dev
parameter. The adapter type is selectable between SI-Prog (used for
SPI devices with PonyProg 2000) or a custom made serial bitbanging programmer
named "serbang". The optional
.B type
parameter accepts the values "si_prog" (default) or "serbang".
.sp
Information about the SI-Prog adapter can be found at
.URLB "http://www.lancos.com/siprogsch.html" "its website" .
.sp
An example call to flashprog is
.sp
.B "  flashprog \-p pony_spi:dev=/dev/ttyS0,type=serbang"
.sp
Please note that while USB-to-serial adapters work under certain circumstances,
this slows down operation considerably.
.SS
.BR "ogp_spi " programmer
.IP
The flash ROM chip to access must be specified with the
.B rom
parameter.
.sp
.B "  flashprog \-p ogp_spi:rom=name"
.sp
Where
.B name
is either
.B cprom
or
.B s3
for the configuration ROM and
.B bprom
or
.B bios
for the BIOS ROM. If more than one card supported by the ogp_spi programmer
is installed in your system, you have to specify the PCI address of the card
you want to use with the
.B pci=
parameter as explained in the
.B nic3com et al.\&
section above.
.SS
.BR "linux_gpio_spi " programmer
.IP
Either the GPIO device node or the chip number as well as the GPIO numbers
of the SPI lines must be specified like in the following examples:
.sp
.B "  flashprog \-p linux_gpio_spi:dev=/dev/gpiochip0,cs=8,sck=11,mosi=10,miso=9"
.sp
or
.sp
.B "  flashprog \-p linux_gpio_spi:gpiochip=0,cs=8,sck=11,mosi=10,miso=9"
.sp
Here,
.B gpiochip=0
selects the GPIO chip 0, accessible through Linux device node /dev/gpiochip0, and the
.B cs, sck, mosi, miso
arguments select the GPIO numbers used as SPI lines connected to the flash ROM chip. In this example
the GPIO numbers of the hardware SPI lines of of a Raspberry Pi single board computer are specified.
All programmer arguments are mandatory.
Note that this is a bitbanged driver, and if your device has a hardware SPI controller, use the
.B linux_spi
programmer driver instead for better performance.
.sp
Refer to the output of the
.B gpioinfo
utility to make sure the GPIO numbers are correct and unused.
.sp
Please note that the linux_gpio_spi driver only works on Linux, and depends on libgpiod.
.SS
.BR "linux_mtd " programmer
.IP
You may specify the MTD device to use with the
.sp
.B "  flashprog \-p linux_mtd:dev=/dev/mtdX"
.sp
syntax where
.B /dev/mtdX
is the Linux device node for your MTD device. If left unspecified the first MTD
device found (e.g. /dev/mtd0) will be used by default.
.sp
Please note that the linux_mtd driver only works on Linux.
.SS
.BR "linux_spi " programmer
.IP
You have to specify the SPI controller to use with the
.sp
.B "  flashprog \-p linux_spi:dev=/dev/spidevX.Y"
.sp
syntax where
.B /dev/spidevX.Y
is the Linux device node for your SPI controller.
.sp
In case the device supports it, you can set the SPI clock frequency with the optional
.B spispeed
parameter. The frequency is parsed as kilohertz.
Example that sets the frequency to 8 MHz:
.sp
.B "  flashprog \-p linux_spi:dev=/dev/spidevX.Y,spispeed=8000"
.sp
Please note that the linux_spi driver only works on Linux.
.SS
.BR "mstarddc_spi " programmer
.IP
The Display Data Channel (DDC) is an I2C bus present on VGA and DVI connectors, that allows exchanging
information between a computer and attached displays. Its most common uses are getting display capabilities
through EDID (at I2C address 0x50) and sending commands to the display using the DDC/CI protocol (at address
0x37). On displays driven by MSTAR SoCs, it is also possible to access the SoC firmware flash (connected to
the Soc through another SPI bus) using an In-System Programming (ISP) port, usually at address 0x49.
This flashprog module allows the latter via Linux's I2C driver.
.sp
.B IMPORTANT:
Before using this programmer, the display
.B MUST
be in standby mode, and only connected to the computer that will run flashprog using a VGA cable, to an
inactive VGA output. It absolutely
.B MUST NOT
be used as a display during the procedure!
.sp
You have to specify the DDC/I2C controller and I2C address to use with the
.sp
.B "  flashprog \-p mstarddc_spi:dev=/dev/i2c-X:YY"
.sp
syntax where
.B /dev/i2c-X
is the Linux device node for your I2C controller connected to the display's DDC channel, and
.B YY
is the (hexadecimal) address of the MSTAR ISP port (address 0x49 is usually used).
Example that uses I2C controller /dev/i2c-1 and address 0x49:
.sp
.B "  flashprog \-p mstarddc_spi:dev=/dev/i2c-1:49
.sp
It is also possible to inhibit the reset command that is normally sent to the display once the flashprog
operation is completed using the optional
.B noreset
parameter. A value of 1 prevents flashprog from sending the reset command.
Example that does not reset the display at the end of the operation:
.sp
.B "  flashprog \-p mstarddc_spi:dev=/dev/i2c-1:49,noreset=1
.sp
Please note that sending the reset command is also inhibited if an error occurred during the operation.
To send the reset command afterwards, you can simply run flashprog once more, in chip probe mode (not specifying
an operation), without the
.B noreset
parameter, once the flash read/write operation you intended to perform has completed successfully.
.sp
Please also note that the mstarddc_spi driver only works on Linux.
.SS
.BR "ch341a_spi " programmer
The WCH CH341A programmer does not support any parameters currently. SPI frequency is fixed at 2 MHz, and CS0 is
used as per the device.
.SS
.BR "ch347_spi " programmer
.IP
The driver is currently hard-coded to use
.BR CS0 .
An optional
.B spispeed
parameter specifies the frequency of the SPI bus.
Syntax is
.sp
.B "  flashprog \-p ch347_spi:spispeed=frequency"
.sp
where
.B frequency
is given in
.B kHz
and can be in the range 468 .. 60000. The frequency will be rounded down to
a supported value (60 MHz divided by a power of 2). The default is a frequency
of 7.5 MHz.
.SS
.BR "ni845x_spi " programmer
.IP
An optional
.B voltage
parameter could be used to specify the IO voltage. This parameter is available for the NI USB-8452 device.
The default unit is Volt if no unit is specified. You can use
.BR mV ", " milliVolt ", " V " or " Volt
as unit specifier.
Syntax is
.sp
.B "  flashprog \-p ni845x_spi:voltage=value"
.sp
where
.B value
can be
.BR 1.2V ", " 1.5V ", " 1.8V ", " 2.5V ", " 3.3V
or the equivalent in mV.
.sp
In the case if none of the programmer's supported IO voltage is within the supported voltage range of
the detected flash chip the flashprog will abort the operation (to prevent damaging the flash chip).
You can override this behaviour by passing "yes" to the
.B ignore_io_voltage_limits
parameter (for e.g. if you are using an external voltage translator circuit).
Syntax is
.sp
.B "  flashprog \-p ni845x_spi:ignore_io_voltage_limits=yes"
.sp
You can use the
.B serial
parameter to explicitly specify which connected NI USB-845x device should be used.
You should use your device's 7 digit hexadecimal serial number.
Usage example to select the device with 1230A12 serial number:
.sp
.B "  flashprog \-p ni845x_spi:serial=1230A12"
.sp
An optional
.B spispeed
parameter specifies the frequency of the SPI bus.
Syntax is
.sp
.B "  flashprog \-p ni845x_spi:spispeed=frequency"
.sp
where
.B frequency
should a number corresponding to the desired frequency in kHz.
The maximum
.B frequency
is 12 MHz (12000 kHz) for the USB-8451 and 50 MHz (50000 kHz) for the USB-8452.
The default is a frequency of 1 MHz (1000 kHz).
.sp
An optional
.B cs
parameter specifies which target chip select line should be used. Syntax is
.sp
.B "  flashprog \-p ni845x_spi:csnumber=value"
.sp
where
.B value
should be between
.BR 0 " and " 7
By default the CS0 is used.
.SS
.BR "digilent_spi " programmer
.IP
An optional
.B spispeed
parameter specifies the frequency of the SPI bus.
Syntax is
.sp
.B "  flashprog \-p digilent_spi:spispeed=frequency"
.sp
where
.B frequency
can be
.BR 62.5k ", " 125k ", " 250k ", " 500k ", " 1M ", " 2M " or " 4M
(in Hz). The default is a frequency of 4 MHz.
.SS
.BR "dirtyjtag_spi " programmer
.IP
An optional
.B spispeed
parameter specifies the frequency of the SPI bus.
Syntax is
.sp
.B "  flashprog \-p dirtyjtag_spi:spispeed=frequency"
.sp
where
.B frequency
can be any value in hertz, kilohertz or megahertz supported by the programmer.
The default is a frequency of 100 kHz.
.SS
.BR "jlink_spi " programmer
.IP
This module supports SEGGER J-Link and compatible devices.

The \fBMOSI\fP signal of the flash chip must be attached to \fBTDI\fP pin of
the programmer, \fBMISO\fP to \fBTDO\fP and \fBSCK\fP to \fBTCK\fP.
The chip select (\fBCS\fP) signal of the flash chip can be attached to
different pins of the programmer which can be selected with the
.sp
.B "  flashprog \-p jlink_spi:cs=pin"
.sp
syntax where \fBpin\fP can be either \fBTRST\fP or \fBRESET\fP.
The default pin for chip select is \fBRESET\fP.
Note that, when using \fBRESET\fP, it is normal that the indicator LED blinks
orange or red.
.br
Additionally, the \fBVTref\fP pin of the programmer must be attached to the
logic level of the flash chip.
The programmer measures the voltage on this pin and generates the reference
voltage for its input comparators and adapts its output voltages to it.
.sp
Pinout for devices with 20-pin JTAG connector:
.sp
    +-------+
    |  1  2 |     1: VTref     2:
    |  3  4 |     3: TRST      4: GND
    |  5  6 |     5: TDI       6: GND
  +-+  7  8 |     7:           8: GND
  |    9 10 |     9: TCK      10: GND
  |   11 12 |    11:          12: GND
  +-+ 13 14 |    13: TDO      14:
    | 15 16 |    15: RESET    16:
    | 17 18 |    17:          18:
    | 19 20 |    19: PWR_5V   20:
    +-------+
.sp
If there is more than one compatible device connected, you can select which one
should be used by specifying its serial number with the
.sp
.B "  flashprog \-p jlink_spi:serial=number"
.sp
syntax where
.B number
is the serial number of the device (which can be found for example in the
output of lsusb -v).
.sp
The SPI speed can be selected by using the
.sp
.B "  flashprog \-p jlink_spi:spispeed=frequency"
.sp
syntax where \fBfrequency\fP is the SPI clock frequency in kHz.
The maximum speed depends on the device in use.
.sp
The \fBpower=on\fP option can be used to activate the 5 V power supply (PWR_5V)
of the J-Link during a flash operation.
.SS
.BR "stlinkv3_spi " programmer
.IP
This module supports SPI flash programming through the STMicroelectronics
STLINK V3 programmer/debugger's SPI bridge interface
.sp
.B "  flashprog \-p stlinkv3_spi"
.sp
If there is more than one compatible device connected, you can select which one
should be used by specifying its serial number with the
.sp
.B "  flashprog \-p stlinkv3_spi:serial=number"
.sp
syntax where
.B number
is the serial number of the device (which can be found for example in the
output of lsusb -v).
.sp
The SPI speed can be selected by using the
.sp
.B "  flashprog \-p stlinkv3_spi:spispeed=frequency"
.sp
syntax where \fBfrequency\fP is the SPI clock frequency in kHz.
If the passed frequency is not supported by the adapter the nearest lower
supported frequency will be used.
.SS

.SH EXAMPLES
To back up and update your BIOS, run
.sp
.B flashprog -p internal -r backup.rom -o backuplog.txt
.br
.B flashprog -p internal -w newbios.rom -o writelog.txt
.sp
Please make sure to copy backup.rom to some external media before you try
to write. That makes offline recovery easier.
.br
If writing fails and flashprog complains about the chip being in an unknown
state, you can try to restore the backup by running
.sp
.B flashprog -p internal -w backup.rom -o restorelog.txt
.sp
If you encounter any problems, please contact us and supply
backuplog.txt, writelog.txt and restorelog.txt. See section
.B BUGS
for contact info.
.SH EXIT STATUS
flashprog exits with 0 on success, 1 on most failures but with 3 if a call to mmap() fails.
.SH REQUIREMENTS
flashprog needs different access permissions for different programmers.
.sp
.B internal
needs raw memory access, PCI configuration space access, raw I/O port
access (x86) and MSR access (x86).
.sp
.B atavia
needs PCI configuration space access.
.sp
.BR nic3com ", " nicrealtek " and " nicnatsemi "
need PCI configuration space read access and raw I/O port access.
.sp
.B atahpt
needs PCI configuration space access and raw I/O port access.
.sp
.BR gfxnvidia ", " drkaiser " and " it8212
need PCI configuration space access and raw memory access.
.sp
.B rayer_spi
needs raw I/O port access.
.sp
.BR satasii ", " nicintel ", " nicintel_eeprom " and " nicintel_spi
need PCI configuration space read access and raw memory access.
.sp
.BR satamv " and " atapromise
need PCI configuration space read access, raw I/O port access and raw memory
access.
.sp
.B serprog
needs TCP access to the network or userspace access to a serial port.
.sp
.B buspirate_spi
needs userspace access to a serial port.
.sp
.BR  ft2232_spi ", " usbblaster_spi " and " pickit2_spi
need access to the respective USB device via libusb API version 0.1.
.sp
.BR ch341a_spi " and " dediprog
need access to the respective USB device via libusb API version 1.0.
.sp
.B dummy
needs no access permissions at all.
.sp
.BR internal ", " nic3com ", " nicrealtek ", " nicnatsemi ", "
.BR gfxnvidia ", " drkaiser ", " satasii ", " satamv ", " atahpt ", " atavia " and " atapromise
have to be run as superuser/root, and need additional raw access permission.
.sp
.BR serprog ", " buspirate_spi ", " dediprog ", " usbblaster_spi ", " ft2232_spi ", " pickit2_spi ", " \
ch341a_spi ", " digilent_spi " and " dirtyjtag_spi
can be run as normal user on most operating systems if appropriate device
permissions are set.
.sp
.B ogp
needs PCI configuration space read access and raw memory access.
.sp
On OpenBSD, you can obtain raw access permission by setting
.B "securelevel=-1"
in
.B "/etc/rc.securelevel"
and rebooting, or rebooting into single user mode.
.SH BUGS
You can report bugs, ask us questions or send success reports
via our communication channels listed here:
.URLB "https://www.flashprog.org/Contact" "" .
.sp
Also, we provide a
.URLB https://paste.flashrom.org "pastebin service"
that is very useful to share logs without spamming the communication channels.
.SS
.B Laptops
.sp
Using flashprog on older laptops is dangerous and may easily make your hardware
unusable. flashprog will attempt to detect if it is running on a susceptible
laptop and restrict flash-chip probing for safety reasons. Please see the
detailed discussion of this topic and associated flashprog options in the
.B Laptops
paragraph in the
.B internal programmer
subsection of the
.B PROGRAMMER-SPECIFIC INFORMATION
section and the information
.URLB "https://flashprog.org/Laptops" "in our wiki" .
.SS
One-time programmable (OTP) memory and unique IDs
.sp
Some flash chips contain OTP memory often denoted as "security registers".
They usually have a capacity in the range of some bytes to a few hundred
bytes and can be used to give devices unique IDs etc.  flashprog is not able
to read or write these memories and may therefore not be able to duplicate a
chip completely. For chip types known to include OTP memories a warning is
printed when they are detected.
.sp
Similar to OTP memories are unique, factory programmed, unforgeable IDs.
They are not modifiable by the user at all.
.SH LICENSE
.B flashprog
is covered by the GNU General Public License (GPL), version 2. Some files are
additionally available under any later version of the GPL.
.SH COPYRIGHT
.br
Please see the individual files.
.SH AUTHORS
Andrew Morgan
.br
Carl-Daniel Hailfinger
.br
Claus Gindhart
.br
David Borg
.br
David Hendricks
.br
Dominik Geyer
.br
Edward O'Callaghan
.br
Eric Biederman
.br
Giampiero Giancipoli
.br
Helge Wagner
.br
Idwer Vollering
.br
Joe Bao
.br
Joerg Fischer
.br
Joshua Roys
.br
Ky\[:o]sti M\[:a]lkki
.br
Luc Verhaegen
.br
Li-Ta Lo
.br
Mark Marshall
.br
Markus Boas
.br
Mattias Mattsson
.br
Michael Karcher
.br
Nikolay Petukhov
.br
Patrick Georgi
.br
Peter Lemenkov
.br
Peter Stuge
.br
Reinder E.N. de Haan
.br
Ronald G. Minnich
.br
Ronald Hoogenboom
.br
Sean Nelson
.br
Stefan Reinauer
.br
Stefan Tauner
.br
Stefan Wildemann
.br
Stephan Guilloux
.br
Steve Markgraf
.br
Steven James
.br
Urja Rannikko
.br
Uwe Hermann
.br
Wang Qingpei
.br
Yinghai Lu
.br
some others, please see the flashprog git history for details.
.br
Active maintainers can be reached via
.MTOB "flashprog@flashprog.org" "the mailing list" .
.PP
This manual page was written by
.MTOB "uwe@hermann-uwe.de" "Uwe Hermann" ,
Carl-Daniel Hailfinger, Stefan Tauner and others.
It is licensed under the terms of the GNU GPL (version 2 or later).
