Фон
- 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