是否有任何用户空间工具可以检索和转储 NAND 闪存设备中的坏块列表?我检查了mtdinfo
命令行实用程序,还搜索了/proc
和/sys
,但找不到任何内容。
我正在寻找适合从 shell 脚本使用的东西。
我可以解析dmesg
内核在 init 上打印坏块信息,但我希望有更好的方法。
答案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;
}