<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的TMS320VC5421與CF存儲(chǔ)卡的接口實(shí)現(xiàn)

          基于DSP的TMS320VC5421與CF存儲(chǔ)卡的接口實(shí)現(xiàn)

          作者: 時(shí)間:2012-07-23 來源:網(wǎng)絡(luò) 收藏

          2.2 卡的編址方式

          卡的扇區(qū)尋址有兩種方式:物理尋址方式(CHS)和邏輯尋址方式(LBA)。物理尋址方式使用柱面、磁頭和扇區(qū)號(hào)表示一個(gè)特定的扇區(qū)。起始扇區(qū)是0磁道、0磁頭、1扇區(qū),接下來是2扇區(qū),一直到EOF扇區(qū);接下來是同一柱面1頭、1扇區(qū)等。邏輯尋址方式將整個(gè)卡同一尋址。邏輯塊地址和物理地址的關(guān)系為:

          LBA地址=(柱面號(hào)×磁頭數(shù)+磁頭號(hào)) ×扇區(qū)數(shù)+扇區(qū)數(shù)-1

          采用邏輯尋址方式,沒有磁頭和磁道的轉(zhuǎn)換操作,因此在訪問連續(xù)扇區(qū)時(shí),操作速度比物理尋址方式塊。

          3 磁盤文件管理系統(tǒng)簡(jiǎn)介

          為了能夠?qū)Υ笕萘看疟P上的數(shù)據(jù)進(jìn)行有效的管理,Win9X在磁盤上建立了一個(gè)文件系統(tǒng)。該文件系統(tǒng)可對(duì)磁盤上的數(shù)據(jù)進(jìn)行有效的管理。

          磁盤文件系統(tǒng)將整個(gè)磁盤劃分為4個(gè)獨(dú)立的區(qū)域,每個(gè)區(qū)域包含磁盤的獨(dú)立信息,且這4個(gè)獨(dú)立區(qū)域中的信息組合成一個(gè)完整有效的磁盤文件管理系統(tǒng),如表1所示。

          (1)DOS引導(dǎo)扇區(qū):該扇區(qū)是磁盤的引導(dǎo)扇區(qū),包含一些重要的磁盤系統(tǒng)信息,如:磁盤總共包含多少個(gè)扇區(qū),每個(gè)族包含多少個(gè)扇區(qū),每個(gè)扇區(qū)包含多少個(gè)字節(jié)等。通過這些磁盤系統(tǒng)信息可以計(jì)算出磁盤的容量、FAT表和FDT表的起始位置以及文件數(shù)據(jù)存放的起始位置等。

          (2)文件分配區(qū)(FAT):文件分配區(qū)包含兩個(gè)完全相同的FAT表,其中一個(gè)FAT表用作備份FAT。每個(gè)FAT表以16字節(jié)為個(gè)單元。FAT的每一個(gè)單元都映射磁盤上的一個(gè)簇,其中的值就反映了該簇的使用情況。

          (3)根目錄區(qū)(FDT):根目錄區(qū)專用來存放根目錄下的文件信息。根目錄下的每一個(gè)文件在該目錄區(qū)都對(duì)應(yīng)一個(gè)32字節(jié)的目錄項(xiàng)。這32字節(jié)的目錄項(xiàng)包含文件的名稱、屬性、文件的長(zhǎng)度、文件在磁盤上的起始簇號(hào)、文件建立和最后修改和日期和時(shí)間等。這些32字節(jié)的小單元互相首尾相接,中間沒有任何分隔標(biāo)志。

          (4)文件數(shù)據(jù)區(qū):該區(qū)是磁盤存放所有信息的場(chǎng)所為了便于管理,文件管理系統(tǒng)以簇為單位將文件分配在文件數(shù)據(jù)區(qū)的存儲(chǔ)空間。1族總是2n個(gè)連續(xù)扇區(qū)。文件在文件數(shù)據(jù)區(qū)存放的起始位置存放在其對(duì)應(yīng)目錄下的FDT表中,當(dāng)文件的長(zhǎng)度大于1K時(shí),文件數(shù)據(jù)區(qū)的后續(xù)位置保存在FAT表中,即對(duì)應(yīng)的FAT單元中的數(shù)值就是文件的后續(xù)部分所存放位置的簇號(hào)。

          文件管理系統(tǒng)通過以上4個(gè)區(qū)域對(duì)磁盤上的文件進(jìn)行有效的管理。文件管理系統(tǒng)將文件數(shù)據(jù)存放在文件數(shù)據(jù)區(qū),將文件的屬性存放在文件對(duì)應(yīng)目錄下的FDT表中,將文件的存放位置存放在FAT表中。因此文件管理系統(tǒng)通過FAT表和FDT表可以很方便地對(duì)文件數(shù)據(jù)區(qū)的文件進(jìn)行管理。

          4
          與CF卡的硬件

          對(duì)外有I/O、程序和數(shù)據(jù)3個(gè)并行的16位訪問空間,分別由對(duì)應(yīng)的空間選擇信號(hào)線選通。本硬件電路選用的I/O空間與CF卡,采用數(shù)據(jù)線分時(shí)復(fù)用方式。

          如圖3所示,本電路使用子系統(tǒng)A與前向通道相連。子系統(tǒng)A對(duì)采集到的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,完成數(shù)據(jù)的實(shí)時(shí)處理后,通過核間的3種數(shù)據(jù)傳輸方式將采集到的數(shù)據(jù)發(fā)送到子系統(tǒng)B中,并且通過核間中斷IPIRQ通知DSP子系統(tǒng)B可以存儲(chǔ)CF卡。



          4.1 CF卡即插即用的

          (1)硬件提供判斷條件。CF卡為了即插即用的功能,在自身電路上提供了兩個(gè)用來檢測(cè)CF卡是否存在的管腳(CD1、CD2)。CD1和CD2的有效電平為低電平,即當(dāng)主機(jī)檢測(cè)到與其相連的CD1和CD2兩個(gè)管腳同時(shí)為低電平時(shí),可判斷出CF卡與主機(jī)相連;當(dāng)主機(jī)檢測(cè)到與其相連的CD1和CD2有一個(gè)管腳不為低,則可判斷出CF卡未與主機(jī)相連。

          (2)軟件實(shí)現(xiàn)。首選定義全局變量(如:IsExist)用于記錄CF卡是否與主機(jī)相連,當(dāng)IsExist為0時(shí)表示CF卡未與主機(jī)相連;當(dāng)IsExist為1時(shí)表示CF卡與主機(jī)相連。其次在每次操作CF卡時(shí)檢測(cè)CF卡的CD1和CD2管腳。當(dāng)檢測(cè)到CD1和CD2管腳為低電平且IsExist為0時(shí)復(fù)位CF卡,重新檢測(cè)CF卡的FAT表統(tǒng)計(jì)還剩余多少空間可以分配,檢測(cè)完FAT表后置變量IsExist為1。當(dāng)檢測(cè)到CD1和CD2管腳為低電平且IsExist為1時(shí),繼續(xù)CF卡的正常操作。當(dāng)檢測(cè)到CD1和CD2為高時(shí),停止CF卡操作,置變量IsExist為0。

          4.2 文件的存儲(chǔ)

          向CF卡創(chuàng)建文件的流程如圖4所示。在CF卡初始化后(包含CF卡上電復(fù)位和統(tǒng)計(jì)剩余空間等),DSP向CF卡存儲(chǔ)數(shù)據(jù)的核心部分就是首先向一些必要的寄存器填寫必要的信息,如向扇區(qū)號(hào)寄存器填寫讀寫數(shù)據(jù)的起始扇區(qū)號(hào)(LBA地址)和扇區(qū)數(shù)寄存器填寫讀寫數(shù)據(jù)所占的扇區(qū)個(gè)數(shù)等。然后向CF卡的命令寄存器寫入CF卡操作的命令字,如寫操作則向CF卡的命令寄存器寫入30H,讀操作向CF卡的命令寄存器寫入20H等。

          本文引用地址:http://www.ex-cimer.com/article/148735.htm
          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();