u-bootが不良ブロックを表示する方法

u-bootが不良ブロックを表示する方法

Armベースのボード(wb45n)のU-bootでは、ブロックを手動で消去してから不良としてマークします。

U-Boot > NANDクリア 0x00720000 20000

NAND削除:デバイス0オフセット0x00720000、サイズ0x20000が
0x720000から削除されました - 100%完了。
OK
U-Boot> nand markbad 0x00720000
ブロック0x00720000正常に不良としてマークされた
U-Boot> nand不良
>
デバイス0不良ブロック:
00720000

私はソフトウェアを書いて、その過程で不良ブロックがスキップするのを見ることができます。

NAND書き込み:デバイス0オフセット0x5e0000、サイズ0x16c0000
不良ブロックをスキップ0x00720000
23855104バイト書き込み:OK

ソフトウェアの作成後に再起動したところ、不良ブロックが消えました。

U-Boot> nand不良
>
Device 0不良ブロック:
U-Boot>

自動的に修正されたようです。ブロックを不良としてマークする前にブロックをクリアしないと、ソフトウェアを正常に作成できますが(必ずしもそうではありませんが)、カーネルの起動中に次のエラーが発生します。 (これがなぜ生成されるのかわかりません。エラーメッセージ、説明歓迎)

UBIエラー:scan_peb:PEB 175の無効な画像シリアル番号1748114077、1578922167予想

カウンターヘッダーダンプの削除:

    magic          0x55424923
    version        1
    ec             1
    vid_hdr_offset 2048
    data_offset    4096
    image_seq      1748114077
    hdr_crc        0x285278f

カーネルの開始...

Linuxの開梱...完了、カーネルブート。

削除に追加されました:PEB 0、EC 0 UBIエラー:ubi_compare_lebs:サポートされていないFlash UBIフォーマット
UBIエラー:ubi_attach_mtd_dev:mtd6に接続できません。エラー-22
UBIエラー:ubi_init:mtd6に接続できません。
UBIFSエラー(pid 1):ubifs_mount:使用できません。 'ubi0:rootfs'を開くにはエラー-19
カーネルパニック - 非同期化:VFS:未知のブロック(0,0)にルートfsをマウントできません。

私が望むのは、マザーボードをテストし、失敗する前にどのくらいの不良ブロックを処理できるかを確認することです。

不良ブロックを正しい方法で表示していますか?
不良ブロックはなぜ消えますか?
永続的な不良ブロックを表示する方法はありますか?
最後のエラーはどういう意味ですか?

ベストアンサー1

https://community.nxp.com/thread/334536#comment-453692

このエラーはボードのちらつきの問題に関連しています。つまり:

  1. 誤って新しい画像を更新しました。削除していません。みんなフラッシュ

  2. 新しい画像をフラッシュします。作成した消去ブロックのみを削除し、残りの消去ブロックは削除しません。

想像できる

  • あなたはあなたのnand eraseまたはを省略しました
  • NANDに不良とマークされたブロックを持つイメージを書き込み、次にNANDに不良とマークされたN-1ブロックを持つ同じイメージを書き込みます。現在の画像が終わると、前の画像の最後に1ブロックが残り、上書きされません。

おすすめ記事