从用户空间打印 NAND 闪存中的坏块列表

从用户空间打印 NAND 闪存中的坏块列表

是否有任何用户空间工具可以检索和转储 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;
    }

相关内容