web-dev-qa-db-ja.com

u-boot不良ブロックをマークする方法

アームベースのボード(wb45n)でUブートしているときに、手動で消去してから、ブロックに不良のマークを付けます。

U-Boot> nand消去0x0072000020000

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

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

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

ソフトウェアの作成後、再起動しましたが、不良ブロックはありません。

U-Boot> nand bad
>
デバイス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:サポートされていないオンフラッシュUBI形式
UBIエラー:ubi_attach_mtd_dev:mtd6の接続に失敗しました、エラー-22
UBIエラー:ubi_init:mtd6をアタッチできません
UBIFSエラー(pid 1):ubifs_mount:「ubi0:rootfs」を開くことができません。エラー-19
カーネルパニック-同期していません:VFS:ルートfsを不明にマウントできません-block(0,0)

私がやろうとしているのは、ボードをテストして、失敗する前に処理できる不良ブロックの数を確認することです。

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

3
user199251

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

エラーは、ボードのフラッシュの問題に関連しています。つまり、次のとおりです。

  1. 新しい画像を誤ってフラッシュします-全体フラッシュを消去しません

  2. 新しい画像をフラッシュします。書き込みを行った消去ブロックのみを消去し、残りの消去ブロックは消去しません。

私はこれが起こっていると想像することができます

  • nand eraseを省略したか
  • nANDでNブロックが不良とマークされたイメージを作成し、その後、同じイメージを書き込みましたが、NANDでN-1ブロックが不良とマークされました。現在の画像の終了後、前の画像の最後に1ブロックが残り、上書きされませんでした。
2
sourcejedi