基于System ACE的DSP文件系統設計

發(fā)布時(shí)間:2010-11-28 20:50    發(fā)布者:designer
關(guān)鍵詞: ACE , dsp , System , 文件系統
目前,對圖像處理系統的速度和精度要求越來(lái)越高,采樣的數據量也越來(lái)越大。而嵌入式系統中的硬件資源環(huán)境一般比較苛刻,嵌入式微處理器和微控制器的內存一般都不大。為了能夠實(shí)現DSP(Digital Signal Processing)系統的獨立運行,需要大容量的存儲介質(zhì)用于保存采樣結果。但是板載的Flash等容量通常不大,SDRAM掉電后數據會(huì )丟失,并且它們無(wú)法方便地把數據轉移到計算機主機上。閃存技術(shù)的不斷發(fā)展,使得閃存卡(如CF卡、SD卡等)因其體積小、容量大、可靠性高等優(yōu)點(diǎn)而在嵌入式存儲領(lǐng)域得到越來(lái)越廣泛的應用。因此,本文介紹一種使用CF卡作為數據存儲介質(zhì)存儲大量數據的方法。FAT16文件系統具有出色的文件管理性能,能被大多數操作系統識別,因此將CF卡與FAT16文件系統相結合是嵌入式存儲、記錄系統的一個(gè)理想方案。

1   System ACE原理


1.1    System ACE簡(jiǎn)介

System ACE(System Advanced Configuration Environment)是Xilinx公司開(kāi)發(fā)的系統高級配置系列,用以滿(mǎn)足面向多個(gè)FPGA的系統對高效空間、預置、高密度配置需求的解決方案。System ACE技術(shù)是一種突破性的系統內可配置的解決方案,大幅節省了開(kāi)發(fā)工作;與傳統的PROM相比,每比特成本也大大降低。System ACE技術(shù)是高容量FPGA系統的嵌入式解決方案。

System ACE系列把xilinx配置控制的專(zhuān)業(yè)技術(shù)和專(zhuān)注于存儲的產(chǎn)業(yè)結合在一起,它的第1個(gè)成員是SystemACE CF(CompactFlash)。

System ACE CF是1個(gè)芯片集,由2部分組成:一個(gè)是ACE控制器,另一個(gè)就是用于存儲的CF卡。

1.2   ACE控制器

如圖1所示,ACE控制器有4個(gè)接口,分別用來(lái)連接CF(CompactFlash)、MPU(Microprocessor)、用于連接FPGA的CFGJTAG(Configration JTAG)、允許高度靈活配置的TSTJTAG(Test JTAG)。下面著(zhù)重介紹CF卡接口和MPU接口。



1.3   CF卡接口

CF卡接口可以連接的CF卡類(lèi)型有Xilinx ACEFlash卡、任意標準的CF卡、高達8 Gb的IBM微型硬盤(pán),以及所有有相同外形和電路板空間需求的存儲卡。

CF卡接口由2部分組成:一是CF卡控制器,二是CF卡仲裁器。CF卡控制器不僅用來(lái)檢測和維護CF卡設備的狀態(tài),而且還處理所有的CF設備的訪(fǎng)問(wèn)總線(xiàn)周期及提煉和執行CF命令(如軟復位、讀/寫(xiě)段)等。CF卡仲裁器決定微處理器和配置JTAG控制器哪一個(gè)來(lái)訪(fǎng)問(wèn)CF卡的數據緩沖。

1.4   MPU接口

MPU接口功能:
◆MPU接口提供了監控System ACE控制器和ACE Flash讀寫(xiě)數據的功能。
◆MPU接口能夠識別CF卡并對CF卡進(jìn)行讀寫(xiě)。
◆MPU接口能夠控制配置流,包括監控ACE控制器的配置狀態(tài)和錯誤狀態(tài),還能延時(shí)配置、開(kāi)始配置、決定CF卡或MPU的配置源,控制比特流版本以及復位設備等。

本文就是利用ACE控制器的MPU接口,在該接口處連接DSP芯片,并通過(guò)CF卡為DSP加載文件系統。

1.5   System ACE的文件和目錄

.ACE是在目錄結構的最底層。Xilinx的SystemACE軟件能夠將比特流轉換為.ACE文件。1個(gè).ACE文件代表特定設備鏈的比特流。

.collection是目錄結構中緊挨著(zhù).ACE的上一層,由8個(gè).ACE組成。在System ACE環(huán)境下,同一.collection下的所有.ACE文件都可以處理。

在1個(gè)CF卡設備中有多個(gè)collection,但在任意一時(shí)問(wèn)只能有1個(gè)被激活,至于哪一個(gè)被操作是通過(guò)xilinx.sys文件來(lái)決定的。xilinx.sys文件在A(yíng)CE Flash設備的根目錄下。ACE控制器能夠解析xilinx.sys文件。若根目錄下面沒(méi)有xilinx.sys文件,則必須有1個(gè).ACE文件來(lái)充當此角色。

System ACE目錄結構的分層設計使得它能夠維護多個(gè)版本或者是不同設計的collection。每一個(gè)collection目錄可以有1個(gè)或者多個(gè)不同的子目錄。每一個(gè)子目錄只能包含1個(gè).ACE文件。

Sysrem ACE目錄結構的規則如下:
◆Sysrem ACE配置文件必須放在CF卡設備的第1分區。
◆Sysrem ACE分區必須被格式化為FAT12或者FAT16格式。
◆xilinx.sys必須在根目錄下。當xilinx.sys不存在時(shí),根目錄下必須有1個(gè).ACE來(lái)充當此角色。

2   CF卡原理

CF(Compact Flash)卡是以閃存為存儲,具有容量大(512 MB)、功耗低和可靠性高等優(yōu)點(diǎn),得到廣泛的應用。CF卡讀寫(xiě)的最小單位為1個(gè)扇區(512字節),讀寫(xiě)操作是通過(guò)卡內緩沖區進(jìn)行的,不支持直接讀寫(xiě)存儲區域。

CF卡可以工作在3種模式:PC Card Memory(Memory模式),PC Card I/O(I/O模式)和True IDE模式。PCCARD模式與PCMCIA標準兼容。TRUE IDE模式與ATA/ATAPI-4標準兼容。當上電時(shí),如果OE接地,則進(jìn)入True IDE模式,在此模式下只可以存取任務(wù)寄存器。另外2種模式需要通過(guò)設備結構寄存器來(lái)選擇。

CF卡的操作方式與硬盤(pán)的操作方式相似。CF卡讀寫(xiě)必須以扇區為單位,每個(gè)扇區為512字節,每次可以讀寫(xiě)1個(gè)扇區或連續多個(gè)扇區。扇區的尋址方式有2種:邏輯尋址(LBA)和物理尋址(CHS),它們之間的關(guān)系為:

LBA=(柱面號×磁頭數+磁頭號)×扇區數+扇區數-1

尋址方式采用LBA(Logic Block Address),該方式將全部扇區映射至1塊連續的地址空間中,這樣可以大大簡(jiǎn)化編程的工作,同時(shí)避免了柱面、磁頭和扇區之間的換算,使尋址更方便。對CF卡的配置及各種操作,如讀寫(xiě)、刪除、格式化等,都通過(guò)寫(xiě)特殊功能寄存器完成。

3   文件系統的建立

3.1 文件系統的引入

100個(gè)數在文件系統中是如何存放的呢?在計算機中是以0/1二進(jìn)制的形式簡(jiǎn)單地存放在存儲介質(zhì)中。如果不同的數多,如何處理?這就引出了文件系統。文件系統實(shí)際上就是對存儲的數據進(jìn)行管理。本文在CF卡上建立的文件系統是FAT16。FAT16是Microsoft較早推出的文件系統,具有高度兼容性,目前仍然廣泛應用于個(gè)人電腦尤其是移動(dòng)存儲設備中。

硬盤(pán)上的數據按照其不同的特點(diǎn)和作用大致可分為5部分:MBR(Main Boot Record,主引導扇)區,DBR(DosBoot Record,操作系統引導記錄)區,FAT(File AllocationTable,文件分配表)區,DIR(Directory,根目錄)區,DATA區。

MBR區位于整個(gè)硬盤(pán)的0柱面0磁頭1扇區(可以看作是硬盤(pán)的第1個(gè)扇區),bios在執行自己固有的程序以后就會(huì )跳轉到mbr中的第1條指令,將系統的控制權交由mbr來(lái)執行。在總共512字節的主引導記錄中,MBR的引導程序占了其中的前446字節(偏移0H~偏移1BDH),隨后的64字節(偏移1BEH~偏移1FDH)為DPT(Disk Partition Table,硬盤(pán)分區表),最后的2字節“55 AA”(偏移1FEH~偏移1FFH)是分區有效結束標志。MBR不隨操作系統的不同而不同,即不同的操作系統可能會(huì )存在相同的MBR,即使不同,MBR也不會(huì )夾帶操作系統的性質(zhì),具有公共引導的特性。

DBR(Dos Boot Record,操作系統引導記錄)區通常占用分區的第0扇區,共512字節(特殊情況下也要占用其他保留扇區,這里先說(shuō)第0扇)。在這512字節中,其實(shí)又是由跳轉指令、廠(chǎng)商標志和操作系統版本號、BPB(BIOS Parameter Block)、擴展BPB、os引導程序、結束標志幾部分組成。

FAT表是用FAT16來(lái)記錄磁盤(pán)數據區簇鏈結構的。如前面的例子,FAT將磁盤(pán)空間按一定數目的扇區為單位進(jìn)行劃分,這樣的單位稱(chēng)為簇。通常情況下,每扇區512字節的原則是不變的。簇的大小一般是2n(n為整數)個(gè)扇區的大小,像512 B、1 KB、2 KB、4 KB、8 KB、16 KB、32 KB、64 KB。實(shí)際中通常不超過(guò)32 KB。之所以簇為單位而不以扇區為單位進(jìn)行磁盤(pán)的分配,是因為當分區容量較大時(shí),采用大小為512位的扇區管理會(huì )增加FAT表的項數,對大文件存取增加消耗,文件系統效率不高。

DIR(Directory)是根目錄區,緊接著(zhù)第二FAT表(即備份的FAT表)之后,記錄著(zhù)根目錄下每個(gè)文件(目錄)的起始單元、文件的屬性等。定位文件位置時(shí),操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在硬盤(pán)中的具體位置和大小了。

數據區是真正意義上的數據存儲的地方,位于DIR區之后,占據硬盤(pán)上的大部分數據空間。

3.2   FAT16文件系統存儲原理

在FAT文件系統中,文件的存儲依照FAT表制定的簇鏈式數據結構來(lái)進(jìn)行。同時(shí),FAT文件系統將組織數據時(shí)使用的目錄也抽象為文件,以簡(jiǎn)化對數據的管理。格式化FAT16分區時(shí),格式化程序根據分區的大小確定簇的大小,然后根據保留扇區的數目、根目錄的扇區數目、數據區可分的簇數與FAT表本身所占空間來(lái)確定FAT表所需的扇區數目,之后將計算結果寫(xiě)入DBR的相關(guān)位置。FAT16 DBR參數的偏移0x11處記錄了根目錄所占扇區的數目。偏移0x16記錄了FAT表所占扇區的數據。偏移0x10記錄了FAT表的副本數目。系統在得到這幾項參數以后,就可以確定數據區的開(kāi)始扇區偏移了。FAT16文件系統從根目錄所占的32個(gè)扇區之后的第1個(gè)扇區開(kāi)始以簇為單位進(jìn)行數據的處理,這之前仍以扇區為單位。對于根目錄之后的第1個(gè)簇,系統并不編號為第0簇或第1簇,而是編號為第2簇,也就是說(shuō)數據區順序上的第1個(gè)簇也是編號上的第2簇。FAT文件系統之所以有12、16、32不同的版本之分,其根本在于FAT表用來(lái)記錄任意一簇鏈接的二進(jìn)制位數。以FAT16為例,每一簇在FAT表中占據2字節(二進(jìn)制16位)。所以,FAT16最大可以表示的簇號為0xFFFF(十進(jìn)制的65535),以32 KB為簇的大小的話(huà),FAT32可以管理的最大磁盤(pán)空間為:32 KB×65 535=2 048 MB,這就是為什么FAT16不支持超過(guò)2 GB分區的原因。FAT表實(shí)際上是1個(gè)數據表,以2字節為單位,我們暫將這個(gè)單位稱(chēng)為FAT記錄項,通常情況其第1、2個(gè)記錄項(前4個(gè)字節)用作介質(zhì)描述。從第3個(gè)記錄項開(kāi)始記錄除根目錄外的其他文件及文件夾的簇鏈情況。

4   DSP對CF卡的讀寫(xiě)操作

4.1   DSP對CF卡讀寫(xiě)的硬件電路

通過(guò)在MPU端口處連接DSP來(lái)實(shí)現DSP對CF卡的讀寫(xiě),圖2為DSP讀寫(xiě)CF卡的示意圖,圖3為硬件連接圖。







4.2    DSP對CF卡讀寫(xiě)的軟件流程

圖4為DSP讀寫(xiě)CF卡數據的軟件流程。首先,DSP通過(guò)MPU端口訪(fǎng)問(wèn)CF卡前必須獲得CF卡鎖,否則進(jìn)入等待直到CF卡處于空閑狀態(tài)或者強制獲得CF卡鎖。其次,CF卡數據的讀寫(xiě)是以扇區為單位的。1個(gè)扇區可以分為若干個(gè)sector,每個(gè)sector的大小固定為512字節,每個(gè)sector又可分為16個(gè)buffer。若已知CF卡的容量就可以通過(guò)計算來(lái)設置LBA、sector變量以及buffer變量。最后,對buffer進(jìn)行讀寫(xiě),讀寫(xiě)結束后釋放CF卡鎖。




4.3 程序設計

可以通過(guò)以下函數來(lái)實(shí)現DSP對CF卡的讀寫(xiě)。
◆獲得CF卡鎖:Uint32 get_CF_lock(void);
◆檢測CF卡當前狀態(tài):Uint32 check_CF_ready (void);
◆檢測buffer是否準備就緒:Uint32 wait_buffer_ready(void);
◆讀CF卡數據:Uint32 read_data_from_CF(Uint8*p_data,Uint32 LBA,Uint16 Sector Count);
◆向CF卡寫(xiě)數據:Uint32 write_data_to_CF(Uint8*p_data,Uint32 LBA,Uint16 Sector_Count);
◆復位:void reset(void)。

結 語(yǔ)

本文實(shí)現了DSP通過(guò)System ACE對CF卡進(jìn)行數據存儲管理,充分利用了SystemACE技術(shù)的系統內配置方案,突破了傳統的多FPGA應用環(huán)境。

CF卡作為存儲介質(zhì)具有容量大、接口簡(jiǎn)單、體積小、價(jià)格低廉和可靠性較高等特點(diǎn),結合FAT16文件系統,可以很方便地存儲和回放數據。
本文地址:http://selenalain.com/thread-42525-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页