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 addedSupport 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>
)
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)
FT2232 SPI dongles
New parameter to search FTDI by description, i.e. product string (
description
)
SEGGER J-Link and compatible devices
New parameter to active the 5V power supply during a flash operation (
power
)
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
fileRename
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
optionInstall 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
targetDrop
distclean
targetDrop 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