0

特定のシナリオでは、NOR で U-Boot を使用し、NAND で ubi イメージ (カーネル + fs) を使用する NOR + 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 コードのどの部分を調べる必要があるかを明確に見つけることができませんでした.

4

1 に答える 1

0

カーネルと uboot の UBI 構成が同じであることを確認してください。両方の環境で ubinfo を実行し、各情報を 1 つずつ確認します。

考えられるエラーは PEB 番号です。カーネルは 2% (20/1024) ブロックを予約しますが、uboot は 1% しか予約しません (CONFIG_MTD_UBI_BEB_RESERVE 1)

また、カーネルと U-Boot の両方に同じ NAND-ECC スキームがあることを確認してください。

于 2017-05-30T11:12:57.040 に答える