在特定情况下,我使用 NOR + NAND 配置,在 NOR 上使用 U-Boot,在 NAND 上使用 ubi 映像(内核 + fs)。
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 代码的哪一部分.