mtd: support bad blocks within the mtd_fixtrx()
authorRafał Miłecki <rafal@milecki.pl>
Sun, 15 Jul 2018 14:51:41 +0000 (16:51 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Mon, 16 Jul 2018 21:18:45 +0000 (23:18 +0200)
commit5dca299fabc466183fdc973871b5f66e6ee4252d
tree5dc1270a22487ee5cf16471f1e56f3319a4e1737
parent5889cf70e99fe66bd17a439d8aceabcb5c495437
mtd: support bad blocks within the mtd_fixtrx()

Reading MTD data with (p)read doesn't return any error when accessing
bad block. As the result, with current code, CRC32 covers "data" stored
in bad blocks.

That behavior doesn't match CFE's one (bootloader simply skips bad
blocks) and may result in:
1) Invalid CRC32
2) CFE refusing to boot firmware with a following error:
Boot program checksum is invalid

Fix that problem by checking every block before reading its content.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit 0f54489f754e7bd34e0430c57a11b6a54740d58e)
package/system/mtd/Makefile
package/system/mtd/src/trx.c