无法从 Linux 访问 nand 或 emmc 分区

无法从 Linux 访问 nand 或 emmc 分区

我有一个基于 i.mx6 的板,使用 buildroot 和 linux 运行。该板有两个存储 nand 和 emmc。 nand 本身具有完整的 rootfs 和内核。我现在从 SD 卡启动。从启动日志中我可以看到 nand 和 emmc 分区被检测到

[    3.440294] 5 ofpart partitions found on MTD device gpmi-nand
[    3.446084] Creating 5 MTD partitions on "gpmi-nand":
[    3.451148] 0x000000000000-0x000000200000 : "boot"
[    3.456431] 0x000000200000-0x000000500000 : "scratch"
[    3.461632] 0x000000500000-0x000000b00000 : "kernel"
[    3.467091] 0x000000b00000-0x000001100000 : "recovery"
[    3.472521] 0x000001100000-0x000010000000 : "rootfs"
[    3.481312] gpmi-nand 112000.gpmi-nand: driver registered.

和 emmc

[    4.318175]  mmcblk0: p1 p2

我可以看到 nand 设备已注册并显示在 中/dev/mtd*。现在我使用的nand and mmc-utils是buildroot提供的。我正在尝试像这样在nand上写入一些数据。编写一个简单的文本文件test.txt,

#nandwrite -b 1 -n /dev/mtd0 -p /test.txt

查看 PasteBin 上的完整错误日志

#flash_erase /dev/mtd0

flash_erase: error!: no start erase block specified
flash_erase: error!: no erase block count specified
flash_erase: error!: Try `--help' for more information

谁能告诉我们在 nand、sd 交互时应遵循的正确方法/步骤。我关注了这个线程

StackExchange:如何-i-flash-erase-mtd0

同样,我无法刷新或使用 emmc 执行任何操作。

#mmc status get /dev/mmcblk0
SEND_STATUS response: 0x00000900

这看起来不错,但是如何真正写入或擦除mmc呢?有很多与 mmc 相关的命令,不知道应该使用哪个,

mmc-utils 联机帮助页

更多检查

# mtdinfo 
Count of MTD devices: 5
Present MTD devices: mtd0, mtd1, mtd2, mtd3, mtd4
Sysfs interface supported: yes
# mtd
mtd_debug mtdev-test mtdev2tuio mtdinfo
# mtdev
mtdev-test mtdev2tuio
# mtdev-test 
Usage: mtdev <device>
# mtdev-test /dev/mtd0
error: could not grab the device

我猜测也许 nand 设备被锁定了,但是如何检查呢?

访问nand有哪些先决条件/步骤?

相关内容