
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
このエラーはボードのちらつきの問題に関連しています。つまり:
誤って新しい画像を更新しました。削除していません。みんなフラッシュ
新しい画像をフラッシュします。作成した消去ブロックのみを削除し、残りの消去ブロックは削除しません。
想像できる
- あなたはあなたの
nand erase
またはを省略しました - NANDに不良とマークされたブロックを持つイメージを書き込み、次にNANDに不良とマークされたN-1ブロックを持つ同じイメージを書き込みます。現在の画像が終わると、前の画像の最後に1ブロックが残り、上書きされません。