基于System ACE的DSP文件系統(tǒng)設(shè)計(jì)
4 DSP對(duì)CF卡的讀寫操作
4.1 DSP對(duì)CF卡讀寫的硬件電路
通過(guò)在MPU端口處連接DSP來(lái)實(shí)現(xiàn)DSP對(duì)CF卡的讀寫,圖2為DSP讀寫CF卡的示意圖,圖3為硬件連接圖。
4.2 DSP對(duì)CF卡讀寫的軟件流程
圖4為DSP讀寫CF卡數(shù)據(jù)的軟件流程。首先,DSP通過(guò)MPU端口訪問(wèn)CF卡前必須獲得CF卡鎖,否則進(jìn)入等待直到CF卡處于空閑狀態(tài)或者強(qiáng)制獲得CF卡鎖。其次,CF卡數(shù)據(jù)的讀寫是以扇區(qū)為單位的。1個(gè)扇區(qū)可以分為若干個(gè)sector,每個(gè)sector的大小固定為512字節(jié),每個(gè)sector又可分為16個(gè)buffer。若已知CF卡的容量就可以通過(guò)計(jì)算來(lái)設(shè)置LBA、sector變量以及buffer變量。最后,對(duì)buffer進(jìn)行讀寫,讀寫結(jié)束后釋放CF卡鎖。
4.3 程序設(shè)計(jì)
可以通過(guò)以下函數(shù)來(lái)實(shí)現(xiàn)DSP對(duì)CF卡的讀寫。
◆獲得CF卡鎖:Uint32 get_CF_lock(void);
◆檢測(cè)CF卡當(dāng)前狀態(tài):Uint32 check_CF_ready (void);
◆檢測(cè)buffer是否準(zhǔn)備就緒:Uint32 wait_buffer_ready(void);
◆讀CF卡數(shù)據(jù):Uint32 read_data_from_CF(Uint8*p_data,Uint32 LBA,Uint16 Sector Count);
◆向CF卡寫數(shù)據(jù):Uint32 write_data_to_CF(Uint8*p_data,Uint32 LBA,Uint16 Sector_Count);
◆復(fù)位:void reset(void)。
結(jié) 語(yǔ)
本文實(shí)現(xiàn)了DSP通過(guò)System ACE對(duì)CF卡進(jìn)行數(shù)據(jù)存儲(chǔ)管理,充分利用了SystemACE技術(shù)的系統(tǒng)內(nèi)配置方案,突破了傳統(tǒng)的多FPGA應(yīng)用環(huán)境。
CF卡作為存儲(chǔ)介質(zhì)具有容量大、接口簡(jiǎn)單、體積小、價(jià)格低廉和可靠性較高等特點(diǎn),結(jié)合FAT16文件系統(tǒng),可以很方便地存儲(chǔ)和回放數(shù)據(jù)。
評(píng)論