我有一个 USB 读卡器,奥林巴斯 MAUSB-10。它使用 Linuxalauda
驱动程序提供对 SmartMedia 或 xD 卡的直接闪存访问。这与典型的读卡器不同,典型的读卡器只是将其暴露为标准 USB 大容量存储设备。
Linux 内核中的驱动程序可以执行 FTL 操作并将其公开为标准块设备,但我想要直接访问闪存。我想知道是否可以使用各种实用程序mtd-tools
直接读取、写入和擦除它。
因此设备被 识别lsusb
,并且驱动程序aluada
和nand_ecc
被加载。但cat /proc/mtd
没有透露另一个可用的 MTD 设备,而且我在/dev
.如何创建新的 mtd 设备并将其连接到 alauda 驱动程序?
答案1
如果我们查看Linux内核中的驱动程序源代码(drivers/mtd/nand/alauda.c
),我们会发现mtd设备应该被称为“alauda”。
例如,在 cmx270_nand.c 中 mtd 名称为 cmx270-0。在有关它的内核日志信息中,如下所示:
Creating 1 MTD partitions on "NAND 512MiB 3,3V 8-bit":
0x00000000-0x20000000 : "cmx270-0"
检查 dmesg (grep alauda, MTD),如果您的 xD 卡成功识别,最后为了访问 MTD 设备,您可以尝试创建/dev/mtdblockX
并/dev/mtdX
使用mknod
.
答案2
- 删除 (rmmod) ums-alauda 驱动程序
- 插入设备后,通过 dmesg 检查是否可以看到模块 alauda 的探针打印
- 如果没有看到设备 /dev/mtd0,则 rmmod alauda,然后再次 insmod
- 不需要点头。 (尝试关闭“盖子”)。