v1.3 (Feb 2023)¶
It has been almost three years since our last release. All this time we have been working on enhancing the flashrom code base. This new release comes with a lot of new features, programmers, improvements, and bug fixes. A detailed but not exhaustive change log is presented below.
New major user-visible features¶
- Support for the Linux I2C subsystem
- Option to read/write only region to/from ROM is renamed to
--include
(--image
option is deprecated and exist only for back compatibility). An optional sub-parameter (--include <region>[:<file>]
) to allow building the image to be written from multiple files is added - Support different SPI modes (Dual IO, Quad IO, Normal, Fast Read) for AMD’s chipsets (>= Bolton)
- Support for Write Protection configuration (
--wp-disable
,--wp-enable
,--wp-list
,--wp-status
,--wp-range
,--wp-region
) - Add SPI SR2/SR3 read/write support
- The Intel chipset detection has been improved
- Bus Pirate SPI
- New parameter to control the external Vcc state (
psus=<on|off>
)
- New parameter to control the external Vcc state (
- Dediprog
- Add 4BA support on SF600 protocol version 3
- Dummyflasher
- New parameter to allows emulating a bus/chip frequency (
freq
) - New parameter to emulate flash erase with either 0x00 or 0xff (
erase_to_zero
) - Add emulation for S25FL128L chip
- SR2, SR3 and WP is emulated for W25Q128FV
- Emulate variable-size SPI flash chip (4-byte address format is supported)
- New parameter to allows emulating a bus/chip frequency (
- FT2232 SPI dongles
- New parameter to search FTDI by description, i.e. product string (
description
)
- New parameter to search FTDI by description, i.e. product string (
- SEGGER J-Link and compatible devices
- New parameter to active the 5V power supply during a flash operation (
power
)
- New parameter to active the 5V power supply during a flash operation (
- Drop “Promontory” architecture (AMD) support
- End Of Life (EOL) for ITE IT85* specific code
- README and man page updated with additional information
The greatest increase in the speed of operations can be seen on the following programmers: SPI on Intel NICs, FT2232 SPI dongles
Libflashrom¶
- Add Write Protect functions to the API
- Add rust Foreign Function Interface bindings for the libflashrom API
- Move documentation from source file to header
- Drop
flashrom_system_info()
- Drop
flashrom_supported_programmers()
- Add
flashrom_layout_get_region_range()
- Declaration change from
flashrom_layout_read_fmap_from_rom(struct flashrom_layout **const, struct flashctx *const, off_t, size_t)
toflashrom_layout_read_fmap_from_rom(struct flashrom_layout **const, struct flashctx *const, size_t, size_t)
- Allow NULL-pointer argument in
flashrom_flash_release()
Infrastructure expansion¶
- Add blackbox test uber-script
- Add E2E tester for a specific chip/chipset combo
- Build script for Jenkins was upgraded and move to repository -
test_build.sh
- Add a set of Dockerfiles for build testing -
util/manibuilder
- Add a Nix shell file which is able to compile flashrom -
util/shell.nix
- Add CMocka unit-test infrastructure into the meson build system (test for drivers available only
if its driver is built). The following tests are included:
- Core logic tests
- Basic lifecycle for
dediprog
,nicrealtek
,raiden_debug_spi
,parade_lspcon
,mediatek_i2c_spi
,realtek_mst_i2c_spi
- Basic lifecycle + chip probe for
dummyflasher
,linux_mtd
,linux_spi
- Layout tests (overlapping, sanity checks, invalid range/address)
- Erasing/reading/writing/verifying chip tests
- Write Protect tests
- And others!
- Introduce
MAINTAINERS
file - Rename
z60_flashrom.rules
toflashrom_udev.rules
- Introduce linter for git sign-off-by line
- Move all header files to the new
include
directory.
Meson¶
The minimum version has been increased. Requires at least 0.53.0
.
- Added build instructions -
Documentation/building.md
- Allow libflashrom to be built as a static or shared library.
- Add new options:
print_wiki
,ich_descriptors_tool
,classic_cli
- Rename
print_wiki
toclassic_cli_print_wiki
option - Install the man file
- Fix compilation under uClibc-ng
- Add missing config option for J-Link SPI
- Treat warnings as errors and use the same warning options as in Makefile.
Makefile¶
- Add support for Elbrus (e2k) architecture
- Make pkg-config mandatory to find
libftdi1
,libjaylink
,libusb1
,libpci
(you still can override detection and set cflags and ldflags manually) - Merge
compiler
,hwlibs
,features
targets intoconfig
target - Drop
distclean
target - Drop STANDALONE mode
- Summarize systems with the same CPPFLAGS and LDFLAGS
- Only enable I2C programmers on Linux (linux-specific code)
- Revise C compiler check, utsname and clock_gettime test, detection of Linux specific headers
- Since the NI-845x is a Windows only proprietary library, disable it by default.
- Enable the internal programmer on x86 or linux.
- Fix building on AArch64 NixOS
Various broken and missing dependencies have been fixed for these two build systems.
New programmers¶
- Chrome EC based debug tools - SuzyQable, Servo V4, C2D2 & uServo
- Realtek RTD2142 MST
- Parade lspcon USB-C to HDMI protocol translator
- DirtyJTAG (a USB-JTAG firmware for STM32 MCUs)
- MediaTek LCD controller
- Programmers based on FT4233H FTDI
- Kristech KT-LINK
- Variants of STLINK-V3: STLINK-V3E, STLINK-V3S, STLINK-V3 With dual VCP, STLINK-V3 Without MSD
- Intel Gemini Lake PCH
- Intel Meteor Lake PCH
- Intel Elkhart Lake PCH
- Intel Emmitsburg PCH
- Intel Comet Lake-U/400-series PCH
- Intel Tiger Point/500-series PCH
- Intel Jasper Lake PCH
- Intel Alder Lake/600-series PCH
- Intel PCH7 Desktop/Mobile/SFF Sample
- More Intel PCHs variants (Apollo Lake, Cannon Point, Union Point, Lewisburg)
At some point, flashrom supported ENE LPC interface keyboard controller and Microchip MEC1308 embedded controller. But they were dropped before the release because the code was no longer maintained by anyone. If you’re interested, take a look at git history.
New Boards¶
- ASUS P3B-F
- Jetway P4MDPT
- ASUS P5W DH Deluxe
New chips¶
- AT25SF128A
- B.25D16A
- BY25Q128AS
- FM25F01
- FM25F02(A)
- FM25F04(A)
- FM25F005
- FM25Q08
- FM25Q16
- FM25Q32
- F29C51001B
- GD25LQ128E
- GD25Q256E
- GD25WQ80E
- MX25L12833F
- MX25L12873F
- MX25L3233F
- MX25L5121E
- MX25R3235F
- MX66L1G45G
- S25FL128L
- S25FL128S
- S25FL129P
- S25FL256L
- S25FL256S
- S25FS128S
- S29C51001B
- V29C51001B
- W25Q32JW…M
- W25Q64JV
- W25Q64JW…M
- W25Q256JW
- W25Q256JW_DTR
- W25Q512JV
- W25Q512NW-IM
- W25X05(CL)
- XM25QU64C
- XM25QU128C
- XM25QU256C
- XM25QH64C
- XM25QH128C
- XM25QH256C
Download¶
flashrom 1.3 can be downloaded in various ways:
Anonymous checkout from the git repository at https://review.coreboot.org/flashrom.git (tag v1.3.0)
A tarball is available for download at
https://download.flashrom.org/releases/flashrom-v1.3.0.tar.bz2 (GPG signature),
fingerprint: 6E6E F9A0 BA47 8006 E277 6E4C C037 BB41 3134 D111
and more in the “Tags” section of CGit at https://review.coreboot.org/cgit/flashrom.git