Как обработать плохой блок перед смещением при записи изображения в nand fla sh в uboot - PullRequest
0 голосов
/ 19 февраля 2020

Фон

  • HW: RAM16MB, Fla sh 256MB. CPU atmel-SAM9260, U-Boot 2015.04
  • Метка: обновление Rootfs. Rootfs размером 60 МБ
  • Решение: разделите rootfs на 5 частей, используя tftp, чтобы получить каждый кусок (12 МБ) с tftp server {PC} в ОЗУ, а затем записать в nand fla sh. Все 5 раз sh завершают программу обновления.
  • Проблема: если в nand fla sh нет плохих блоков, решение может работать хорошо.

Но если первое [update_00 area] разделение имеет одну страницу неверных блоков [0x20000], то, что конечный адрес первого фрагмента не будет 0xe80000, он сместится на 0x20000 [one page] после 0xe80000. Потому что write.e пропустит плохой блок. Но начальный адрес второго фрагмента моего скрипта [update_01] также равен 0xe80000, это приведет к перезаписи первого адреса сдвига фрагмента из-за плохого блока. Второй кусок не знает, смещение нужно сдвинуть на одну страницу. Как решить эту проблему? Большое спасибо за вашу помощь.

nand erase 0x280000 0xfd80000
tftp 0x21500000  192.168.1.1:update_00
nand write.e 0x21500000 0x280000 $filesize
tftp 0x21500000  192.168.1.1:update_01
nand write.e 0x21500000 0xe80000 $filesize
tftp 0x21500000  192.168.1.1:update_02
nand write.e 0x21500000 0x1a80000 $filesize
tftp 0x21500000  192.168.1.1:update_03
nand write.e 0x21500000 0x2680000 $filesize
tftp 0x21500000  192.168.1.1:update_04
nand write.e 0x21500000 0x3280000 $filesize

...