2012-05-25 19 views
1

我製作了一個代碼,用於從閃存Nand(無文件系統)讀取數據。C錯誤在只讀閃存上打開O_RDWR NAND NAND MTD0

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_WRONLYO_RDWR

有什麼辦法解開這MTD0,或寫在它上面沒有解鎖?

回答

1

我試圖改變我的NAND閃存在Device Tree Source(DTS)中的分區。

有一個只讀選項。 但是,我只改變了它們的大小。

ANd it done ..我的NAND閃存可以訪問。

1

該操作很可能被您的設備的內核驅動程序禁止。很可能您的設備實際上是隻讀的或由驅動程序標記。

+0

所以..有沒有任何選項來解鎖它?無需修改內核? –

+0

檢查dmesg是否有關該設備的任何相關消息。什麼是物理硬件?哪位司機選擇了它?是否有任何參數傳遞給模塊? –

+0

(ST Micro NAND 256MiB 3.3V 8位),我正在使用Linux嵌入式 –