File: v_1_4.rst

package info (click to toggle)
flashrom 1.6.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,268 kB
  • sloc: ansic: 67,220; sh: 1,118; python: 104; makefile: 97
file content (329 lines) | stat: -rw-r--r-- 8,951 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
================
v1.4 (July 2024)
================

This document describes the major changes in flashrom version 1.4.0,
from more than 400 patches contributed by more than 70 authors (thank you!)
in the 18 months since version 1.3.0 was branched.

Download
========

flashrom 1.4 can be downloaded in various ways:

Anonymous checkout from the git repository at https://review.coreboot.org/flashrom.git
(tag v1.4.0)

A tarball is available for download at
https://download.flashrom.org/releases/flashrom-1.4.0.tar.xz
(signature https://download.flashrom.org/releases/flashrom-1.4.0.tar.xz.asc)

fingerprint: 6E6E F9A0 BA47 8006 E277 6E4C C037 BB41 3134 D111

Known issue
===========

AMD-based PCs with FCH are unable to read flash contents for internal (BIOS flash)
chips larger than 16 MB, and attempting to do so may crash the system.
Systems with AMD "Promontory" IO extenders (mostly "Zen" desktop platforms) are not currently
supported.

https://ticket.coreboot.org/issues/370

Major updates
=============

Optimised erase and write logic
-------------------------------

Significant performance improvements with new logic which is based on:
the optimal selection of erase blocks for the given logical layout,
available erase functions, and size of memory area to erase/write.

**Legacy code path still exists in the source tree, but it will be deleted by the next release.**

Optimised delays logic
----------------------

Optimised logic and refactorings of delays functionality, in particular for SPI chips.

* Flashrom now sleeps more aggressively when a delay is required, rather than
  polling in a loop. This should reduce power consumption significantly, but
  may require more time to complete operations on systems experiencing high
  CPU load.
* An unconditional 1-second delay was removed for SPI flashes. This is not
  believed to be needed for any SPI flashes, but may be needed for some old
  parallel flashes (where it remains in use).
* Cycle-counting busy loops are now only used on DOS builds of flashrom. All
  other platforms use OS timers for timed delays, which are expected to be
  more accurate.
* Tree-wide refactorings around programmer_delay and internal_delay

Documentation is in the git tree
--------------------------------

Docs are available in the same repository as the code, in ``doc/`` directory.

Website content is automatically generated from docs in the git tree.

**Patches with code changes and new features can (and should) update documentation
in the same patch, which makes it a lot easier to maintain up-to-date docs.**

Note: the migration process for documents from flashrom wiki to the git tree is half way.
Wiki is deprecated now, and will go away once the migration process complete.

Makefile scheduled for removal
------------------------------

**Future versions of flashrom will drop support for building via Makefile**:
Meson will become the only supported build system.

The Makefile and meson build systems are currently at feature parity,
except automated testing is supported only with meson.
To reduce the maintenance burden, we plan to remove the Makefile after this release.

Write-protect updates
---------------------

* Support reading security register
* Support reading/writing configuration register
* More range functions (with different block sizes and handling of CMP bit)

Protected regions support
-------------------------

* Support to allow programmers to handle protected regions on the flash.
* get_region() function is added so that programmers can expose access permissions
  for multiple regions within the flash.
* A get_region() implementation is added for the ichspi driver

Chipset support added
=====================

* Tiger Lake
* Emmitsburg Chipset SKU
* Meteor Lake-P/M
* Panther Lake-U/H 12Xe
* Panther Lake-H 4Xe

Chip models support added or updated
====================================

New models support
------------------

* AT25DF011

* B.25D80A
* B25Q64AS

* GD25LB128E/GD25LR128E
* GD25LB256E
* GD25LF128E
* GD25Q127C/GD25Q128E
* GD25LQ255E
* GD25LR256E
* GD251R512ME

* IS25LP016
* IS25LQ016
* IS25WP016
* IS25WP020
* IS25WP040
* IS25WP080
* IS25WQ040

* MX25L1633E
* MX25L1636E
* MX25L3239E
* MX25L3255E
* MX25L3273F
* MX25L6473F
* MX25L6436E/MX25L6445E/MX25L6465E
* MX25L6473E
* MX25L12850F
* MX77L25650F
* MX25R2035F
* MX25R4035F
* MX25R8035F
* MX25U25643G
* MX25V16066

* P25Q06H
* P25Q11H
* P25Q21H

* W25Q16JV_M

* XM25QH128A
* XM25QH80B
* XM25QH16C/XM25QH16D
* XM25QU80B
* XM25RU256C

* XT25F02E
* XT25F64B
* XT25F128B

* ZD25D20

Added write-protect support
---------------------------

* EN25QH32
* EN25QH64

* MX25L3206E/MX25L3208E
* MX25L6405
* MX25L6405D
* MX25L6406E/MX25L6408E
* MX25L12833F
* MT25QL512
* MX25R1635F
* MX25R1635F
* MX25U25643G
* MX25V1635F
* MX25V4035F
* MX25V8035F

* N25Q032..1E
* N25Q032..3E
* N25Q064..1E
* N25Q064..3E

* W25Q16.V
* W25Q32BV/W25Q32CV/W25Q32DV
* W25Q32FV
* W25Q32JV
* W25Q32BW/W25Q32CW/W25Q32DW
* W25Q32FW
* W25Q32JW...Q
* W25Q32JW...M
* W25Q64JW...M
* W25Q256JW_DTR
* W25Q512NW-IM
* W25X05
* W25X10
* W25X16
* W25X20
* W25X32
* W25X40
* W25X64
* W25X80

Marked as tested
----------------

* AM29LV040B

* AT29C010A

* FM25F01
* FM25Q16

* MT25QL128

* S25FL128L

* W25Q128.V

* XM25QH64C
* XM25QH256C
* XM25QU256C

Programmers support added or updated
====================================

* New programmer for ASM106x SATA controllers
* New programmer for WCH CH347, supports CH347T and CH347F packaging.

* buspirate: Add option for setting the aux pin
* jlink_spi: add cs=tms option to jlink_spi programmer
* raiden: Support target index with generic REQ_ENABLE
* buspirate_spi: add support for hiz output with pullups=off
* serprog: Add support for multiple SPI chip selects

Utilities
=========

* Bash completion (enabled by default with command line interface)

* CI checks for Signed-off-by line in commit message

* CI builds documentation

Unit tests
==========

Added coverage for erase and write logic
----------------------------------------

20 test cases for each operation, with various logical layouts and chip memory states,
and additional 6 for each, with protected regions configured.
The test for erase and write is set up so that new test cases can be added whenever needed.

selfcheck
---------

selfcheck is now also implemented as a unit test.

selfcheck provides critical sanity checks for the programmer table, board matches table,
and array of flashchip definitions.

Note that selfcheck currently, by default, still runs on flashrom init,
because at the moment we can't run unit tests on all supported platforms,
and we don't have continuous integration for all platforms.

This gives an opportunity for performance improvement for developers or companies
who build their own flashrom binary and, importantly,
can run unit tests with the build (Linux, BSD).
For their own binary, it is possible to disable selfcheck on init and save some time
(**under their own responsibility to run unit tests**).

Coverage report
---------------

Unit tests coverage report can be generated with gcov or lcov / llvm.

ch341a_spi test
---------------

Unit test which covers initialization-probing-shutdown of ch341a_spi.

Reduces the risk of breakage for the very popular programmer.

Write-protect
-------------

Added coverage for write-protect operation

Some of the other misc fixes and improvements
=============================================

* bitbang_spi.c: Fix unchecked heap allocation
* writeprotect.c: skip unnecessary writes
* writeprotect.c: refuse to work with chip if OTP WPS == 1
* flashrom.c: Drop redundant chip read validation in verify_range()
* ichspi: Clear Fast SPI HSFC register before HW seq operation
* ichspi: Fix number of bytes for HW seq operations
* writeprotect,ichspi,spi25: handle register access constraints
* tree/: Make heap alloc checks err msg consistent
* flashrom.c: Replace 'exit(1)' leaks with return codes on err paths
* flashrom: Check for flash access restricitons in read_flash()
* flashrom: Check for flash access restricitons in verify_range()
* flashrom: Check for flash access restricitons in write_flash()
* flashrom: Check for flash access restrictions in erase path
* flashrom: Use WP-based unlocking on opaque masters
* ni845x_spi: Fix signed - unsigned comparisons
* flashrom: only perform WP unlock for write/erase operations
* tree: Rename master branch to main
* serial: Fix sp_flush_incoming for serprog TCP connections
* Makefile,meson.build: Add support for Sphinx versions prior to 4.x
* Makefile: Fix cleanup for Sphinx versions prior to 4.x
* Makefile: Fix version string for non-Git builds
* serprog protocol: Add SPI Mode and CS Mode commands
* util/list_yet_unsupported_chips.h: Fix path
* flashrom_udev.rules: Add rule for CH347
* Add documentation for pico-serprog
* cli_classic: Defer flashrom_init calibration until after options parsing
* hwaccess_x86_io: Fix Android compilation with bionic libc