U-Boot: NOR+NAND: ошибка UBI:
В конкретном сценарии я использую конфигурацию NOR + NAND с U-Boot на NOR и образом ubi (kernel+fs) на NAND.
Впервые U-boot(2016) может прочитать образ UBI и успешно загрузить ядро без каких-либо ошибок следующим образом.
ubi0: attaching mtd2
ubi0: attached mtd2 (name "mtd=0", size 32 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 256, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 191496598
ubi0: available PEBs: 134, total reserved PEBs: 122, PEBs reserved for bad PEB handling: 20
Read 0 bytes from volume kernel to 84000000
No size specified -> Using max size (2793472)
## Loading kernel from FIT Image at 84000000 ...
Но при попытке перезагрузки в следующий раз я получаю сообщение об ошибке UBI следующим образом.
ubi0: attaching mtd2
ubi0: scanning is finished
UBI error: cannot attach mtd2
UBI init error 22
Кажется, что когда UBI читается в первый раз, U-Boot выполняет некоторую печать или изменения в заголовке UBI или что-то в этом роде, но я не мог четко определить, что вызывает эту проблему и какую часть кода u-boot я должен изучить,
1 ответ
Убедитесь, что конфигурация UBI одинакова для ядра и загрузчика. Запустите ubinfo в обеих средах и проверьте каждую информацию по очереди.
Возможная ошибка - это номер PEB, ядро зарезервирует 2% (20/1024) блоков, но uboot резервирует только 1% (CONFIG_MTD_UBI_BEB_RESERVE 1)
Также убедитесь, что у вас одна и та же схема NAND-ECC для Kernel e U-Boot.