NANDフラッシュデバイスで不良ブロックのリストを検索してダンプするためのユーザースペースツールはありますか?mtdinfo
コマンドラインユーティリティを確認して検索し/proc
ましたが、/sys
何も見つかりませんでした。
シェルスクリプトで使用するのに適したものを探しています。
カーネルを分析してinitから不良ブロック情報を印刷できますが、dmesg
より良い方法があることを願っています。
答え1
必要な操作を実行するために必要なユーザースペースユーティリティが見つかりません。私が見つけた最も近いnanddump
ユーティリティはmtd-utils、不良ブロックを含むNANDコンテンツをダンプできます。
答え2
最近この問題が発生し、オープンソースのmtd-utilsを参照してCコードを書いています。重要な部分は次のとおりです。
offset = 0;
while (1) {
int rc = ioctl(fd, MEMGETBADBLOCK, &offset);
if (rc < 0) {
perror("Failed to check bad block");
close(fd);
return 1;
} else if (rc > 0) {
// Block is bad, print the block information
printf("Bad block at offset 0x%llx \n", offset);
}
offset += mtd_info.erasesize;
if (offset > mtd_info.size)
break;
}