…………………………正文開始……………………………
最近想學習fatfs的原始碼,但是手上沒拿板子,而且可能需要實際除錯看程式怎麼執行的,這麼幹很容易壞sd卡。正好看到有人說可以使用ramdisk來模擬硬碟,而且可以在pc上執行,簡直完美。
先說一下怎麼開啟ramdisk,這個是基礎。當然是使用createfile(),writefile(),and readfile()了,具體引數不多說,下面是我測試的**。
路徑就使用你看到的碟符就可以,之前他們說用"\\.\phycaldrive0:",我試了老半天沒反應,最後用現在的可以了。
#include
#include
intmain()
setfilepointer
(pfile,
512*sector,null,file_begin)
; unsigned char
*buffer =
(unsigned char*)
malloc
(sizeof
(char
)*buff_size)
;for
(i=0
;i<
512;i++)if
(writefile
(pfile,buffer,buff_size,
&writesize,null)==0
)printf
("write size is %d\n"
,writesize)
; unsigned char
*buffer_1 =
(unsigned char*)
malloc
(sizeof
(char
)*buff_size)
;setfilepointer
(pfile,
512*sector,null,file_begin);if
(readfile
(pfile,buffer_1,buff_size,
&readsize,null)==0
)printf
("success read\n");
printf
("0\t");
for(i=
0;i<
512;i++
)return0;
}// bytespersec = 512 secperclus = 8
// rsvdseccnt = 8 numfats = 2
// fatsz16 = 256 totalsec = 0x07ffc1
這個剛開始是正確的,比如讀寫mbr,dbr。對了,不是每乙個硬碟都有mbr的,我居然對著他看了好久,分割槽表在哪呢,沒有,耍我呢!後來猛然突然發現,0扇區是dbr,好吧,是我學藝不精。反正能進行下去就行。開幹移植。
當我移植好,居然可以掛載檔案系統,而且可以開啟檔案時,多麼美好的時光啊。尤其是他還可以讀出檔案內容,你知道多麼興奮嗎。
but,but,but。
它不能寫檔案。然後我就一步步除錯,發現它在writefile()那裡出錯了。但是在出錯之前,也呼叫過writefile(),可是那就沒毛病。於是我懷疑是不同的位址,結果不一樣,我在上面的測試檔案試了一下,果然是,低位址可以讀寫,但是高位址,只能讀,不能寫。
#include
#include
intmain()
setfilepointer
(pfile,
512*sector,null,file_begin)
; unsigned char
*buffer =
(unsigned char*)
malloc
(sizeof
(char
)*buff_size)
;for
(i=0
;i<
512;i++)if
(!deviceiocontrol
(pfile,fsctl_lock_volume,null,
0,null,0,
&writesize,null)
)elseif(
writefile
(pfile,buffer,buff_size,
&writesize,null)==0
)printf
("write size is %d\n"
,writesize)
;deviceiocontrol
(pfile,fsctl_unlock_volume,null,
0,null,0,
&writesize,null);
unsigned char
*buffer_1 =
(unsigned char*)
malloc
(sizeof
(char
)*buff_size)
;setfilepointer
(pfile,
512*sector,null,file_begin);if
(readfile
(pfile,buffer_1,buff_size,
&readsize,null)==0
)printf
("success read\n");
printf
("0\t");
for(i=
0;i<
512;i++
)return0;
}// bytespersec = 512 secperclus = 8
//rsvdseccnt = 8 numfats = 2
//fatsz16= 256 totalsec = 0x07ffc1
在ARM中使用Ramdisk
linux啟動時,initrd可以在記憶體中,也可以在 flash或其它可用的裝置上 initrd檔案格式為 romfs minix ext2 gzip 相關的函式 drivers block rd.c identify ramdisk image 載入位置 init main.c prepare ...
在PC上安裝ccm5
主要的步驟是這樣的 1.先在虛擬機器裡安裝配置好ccm5,最好直接公升級到04 2.對這個虛擬機器執行ghost,全盤ghost,所以,這個時候你的安裝ccm5的虛擬機器要新增另外一塊hd,執行ghost的時候選擇disk to image 3.將剛才新增在ccm5的那個hd掛載到另外的虛擬機器裡,...
SDL在pc上的安裝與移植
sdl在pc上的安裝於移植 pc機1.在usr下面建立乙個sdl資料夾,把sdl的壓縮包放在sdl資料夾下,解壓sdl壓縮包,並進入sdl包。root localhost cd usr sdl root localhost sdl ls sdl 1.2.15.tar.gz root localhos...