2012-12-26 64 views
1

我正在嘗試在我的嵌入式系統中對eMMC進行原始寫入。該設備節點/dev/mmcblk1p1,我試圖二進制example.bin複製到在eMMC一個特定的地址,說0x1000在Linux中的eMMC RAW訪問

可能有人請幫助我,我怎麼能去這個問題。我正在使用運行Linux的ARM平臺。任何幫助真的會有用。提前致謝。

+1

究竟是什麼你想怎麼辦?如果你想閃到MMC的圖像,你的引導程序將命令這樣做,viz.nand.write。 – itisravi

+0

這不是我正在處理的引導裝載程序。我想要一個應用程序將二進制文件寫入eMMC中的特定地址。如果我沒有錯,引導程序會處理內核映像等。我只想將我自己的二進制文件閃存到一個地址。希望這可以幫助.. – Prashanth

+0

我想你可以編寫一個程序來打開(/ dev/mmcblkp1),seek()到與eMMC地址對應的期望偏移量並開始編寫你的二進制文件。 – itisravi

回答

-4

您需要首先將設備節點掛載到Linux文件系統。

# mount -t msdos /dev/mmcblk1p1 /mnt/ 
# cp /mnt/libnsl.so /lib/libnsl.so.1 
# /mnt/lrz 

lrz是將使用ZMODEM協議傳送文件的應用程序。使用TeraTerm,打開

文件 - >傳輸 - > ZMODEM - > example.bin然後單擊OK

+0

不,這是行不通的,因爲我想執行一個RAW寫入地址。你所建議的是通過文件系統。 – Prashanth

4

這可以用dd命令行程序來完成。複製example.bin/dev/mmcblk1在0x1000的偏移將被如下進行:

dd if=example.bin of=/dev/mmcblk1 seek=8 

的所述出文件(/dev/mmcblk1)的偏移量與尋求選項指定並且是8在本實施例中如在512個塊DD作品字節默認情況下。有關更多信息,請參見man dd

這也可以編程用C使用就出文件的打開文件描述符lseek的()函數來完成。

注意,在問題的文件/dev/mmcblk1p1提及,但是這是MMC設備(P1)上的第一個分區的設備節點。 /dev/mmcblk1文件是實際MMC設備的正確節點。