flash: Add optional verify-after-write feature
Sometimes it might make sense to verify the written data to NOR flash. This patch adds this feature. To enable this verify-after-write, you need to define CONFIG_FLASH_VERIFY in your board config header. Please note that this option is useless in nearly all cases, since such flash programming errors usually are detected earlier while unprotecting/erasing/programming. Please only enable this option if you really know what you are doing. Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
d10f68ae47
commit
352ef3f1b6
9
README
9
README
@ -3248,6 +3248,15 @@ Configuration Settings:
|
||||
digits and dots. Recommended value: 45 (9..1) for 80
|
||||
column displays, 15 (3..1) for 40 column displays.
|
||||
|
||||
- CONFIG_FLASH_VERIFY
|
||||
If defined, the content of the flash (destination) is compared
|
||||
against the source after the write operation. An error message
|
||||
will be printed when the contents are not identical.
|
||||
Please note that this option is useless in nearly all cases,
|
||||
since such flash programming errors usually are detected earlier
|
||||
while unprotecting/erasing/programming. Please only enable
|
||||
this option if you really know what you are doing.
|
||||
|
||||
- CONFIG_SYS_RX_ETH_BUFFER:
|
||||
Defines the number of Ethernet receive buffers. On some
|
||||
Ethernet controllers it is recommended to set this value
|
||||
|
@ -149,6 +149,9 @@ flash_write (char *src, ulong addr, ulong cnt)
|
||||
flash_info_t *info_first = addr2info (addr);
|
||||
flash_info_t *info_last = addr2info (end );
|
||||
flash_info_t *info;
|
||||
__maybe_unused char *src_orig = src;
|
||||
__maybe_unused char *addr_orig = (char *)addr;
|
||||
__maybe_unused ulong cnt_orig = cnt;
|
||||
|
||||
if (cnt == 0) {
|
||||
return (ERR_OK);
|
||||
@ -185,6 +188,14 @@ flash_write (char *src, ulong addr, ulong cnt)
|
||||
addr += len;
|
||||
src += len;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_FLASH_VERIFY)
|
||||
if (memcmp(src_orig, addr_orig, cnt_orig)) {
|
||||
printf("\nVerify failed!\n");
|
||||
return ERR_PROG_ERROR;
|
||||
}
|
||||
#endif /* CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE */
|
||||
|
||||
return (ERR_OK);
|
||||
#endif /* CONFIG_SPD823TS */
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user