summaryrefslogtreecommitdiff
path: root/common/image-sig.c
diff options
context:
space:
mode:
authorPeter Tyser <ptyser@xes-inc.com>2015-02-03 11:58:13 -0600
committerScott Wood <scottwood@freescale.com>2015-03-30 23:24:38 -0500
commit6b94f118a213583ada80bab25fedacc08562392d (patch)
tree6179ae2226a094c0579464a3ef3b4dca3616da8b /common/image-sig.c
parent59b5a2ad83dfefae75011a839e94d4880ff02933 (diff)
downloadu-boot-imx-6b94f118a213583ada80bab25fedacc08562392d.zip
u-boot-imx-6b94f118a213583ada80bab25fedacc08562392d.tar.gz
u-boot-imx-6b94f118a213583ada80bab25fedacc08562392d.tar.bz2
cmd_nand: Verify writes to NAND
Previously NAND writes were only verified when CONFIG_MTD_NAND_VERIFY_WRITE was defined. On boards without this define writes could fail silently. Boards with CONFIG_MTD_NAND_VERIFY_WRITE could prematurely report failures which ECC could correct. Add a verification step after all "nand write[.x]" commands to ensure the writes were successful. The verification uses ECC for for "normal" writes, but does not for raw and yaffs writes. Some test cases which inject fake bad bits on a 2K page flash are below. Test cases with CONFIG_MTD_NAND_VERIFY_WRITE defined: Example of an ECC write which previously failed when CONFIG_MTD_NAND_VERIFY_WRITE was defined, but now succeeds because ECC is used during verification: nand erase 0 0x10000 dhcp /somefile mw.b 0x10000 0xff 0x2000 mw.b 0x10020 0xfe 1 nand write.raw 0x10000 0x800 1 mw.b 0x1000020 0x01 1 nand write 0x1000000 0x800 0x1800 Test cases without CONFIG_MTD_NAND_VERIFY_WRITE defined: Example of an ECC write which previously silently failed: nand erase 0 0x10000 dhcp /somefile mw.b 0x10000 0xff 0x2000 mw.b 0x10020 0x00 1 nand write.raw 0x10000 0x800 1 mw.b 0x1000020 0xff 1 nand write 0x1000000 0x800 0x1800 Example of a raw write which previously failed silently due to stuck data bit, but now errors out: nand erase 0 0x10000 dhcp /somefile mw.b 0x10000 0xff 0x2000 mw.b 0x10020 0xfe 1 nand write.raw 0x10000 0x800 1 mw.b 0x1000020 0x01 1 nand write.raw 0x1000000 0x800 3 Example of a raw write which previously failed silently due to stuck OOB bit, but now errors out: nand erase 0 0x10000 dhcp /somefile mw.b 0x10000 0xff 0x2000 mw.b 0x10810 0xfe 1 nand write.raw 0x10000 0x800 1 mw.b 0x1000810 0x01 1 nand write.raw 0x1000000 0x800 3 Signed-off-by: Peter Tyser <ptyser@xes-inc.com> Tested-by: Heiko Schocher <hs@denx.de> Acked-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'common/image-sig.c')
0 files changed, 0 insertions, 0 deletions