1

我制作了一个从闪存 Nand 读取数据的代码(没有文件系统)。

fd = open("/dev/mtd0", O_RDONLY)

它有效,然后我想尝试读写它..所以我将代码更改为:

fd = open("/dev/mtd0", O_RDWR)

但它返回-1,意味着无法打开。但对于其他 MTD,它有效。

然后我看到cat /proc/mtd说MTD0是RO,另一个是RW(我认为它是只读和读写)

我试着用MEMUNLOCK

ioctl(fd, MEMUNLOCK, &mtdLockInfo)

因为它需要fd,需要open所以我O_RDONLY不使用O_RDWR(返回-1)。

但它返回错误Bad file description。一定是因为O_RDONLY,, 不得不使用O_WRONLYor O_RDWR

有什么办法可以解锁这个 MTD0,或者在不解锁的情况下在上面写字?

4

2 回答 2

1

您的设备的内核驱动程序可能禁止该操作。您的设备很可能实际上是只读的或被驱动程序标记为只读的。

于 2012-05-25T03:26:08.040 回答
1

我试图在设备树源(DTS)中更改我的 NAND 闪存的分区。

有一个只读选项。但是,我只改变了它们的大小。

完成了。我的 NAND 闪存可以访问了。

于 2012-06-11T04:22:22.787 回答