日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀] 本文介紹了DSP TMS320LF2407A和FAT32文件系統(tǒng)結(jié)構(gòu),分析了基于TMS320LF2407A支持 FAT32文件系統(tǒng)結(jié)構(gòu)的嵌入式軟件實(shí)現(xiàn)。

  引言

  近幾年來(lái),隨著閃爍存儲(chǔ)技術(shù)的進(jìn)步,由于Flash閃爍存儲(chǔ)體系具有容量大和功耗低等優(yōu)點(diǎn),被廣泛用于數(shù)碼相機(jī)、媒體播放器和PDA等各種數(shù)碼產(chǎn)品中。當(dāng)前各種流行的嵌入式操作系統(tǒng)雖然功能完備,但在許多具體的應(yīng)用中,仍需要編寫特定的系統(tǒng)控制軟件。數(shù)碼產(chǎn)品中一個(gè)必要的軟件模塊就是對(duì)一種或多種文件系統(tǒng)的支持。FAT32文件系統(tǒng)被Windows和Linux等當(dāng)前流行的PC操作系統(tǒng)廣泛支持,這也是許多數(shù)碼產(chǎn)品選擇FAT32的原因。本文介紹了FAT32文件系統(tǒng)結(jié)構(gòu)和基于DSP TMS320LF2407A為硬件平臺(tái)支持 FAT32文件系統(tǒng)結(jié)構(gòu)的嵌入式軟件實(shí)現(xiàn)。

  FAT32文件系統(tǒng)結(jié)構(gòu)簡(jiǎn)介

  單FAT32分區(qū)的磁盤或閃爍存儲(chǔ)器(以下沒(méi)有特殊情況均指單FAT32分區(qū)情況)由主引導(dǎo)區(qū)(MBR)、系統(tǒng)引導(dǎo)區(qū)、文件分配表FAT1、文件分配表備份FAT2、文件根目錄FDT和文件數(shù)據(jù)區(qū)組成,它們?cè)诖疟P上是順序分布的,如圖1所示。

  主引導(dǎo)區(qū)從物理第一扇區(qū)開始,記錄了第一磁盤分區(qū)的入口和剩余磁盤分區(qū)的入口信息、第一分區(qū)的文件系統(tǒng)格式、起始扇區(qū)號(hào)和大小。接下來(lái)就是FAT32文件系統(tǒng)的引導(dǎo)區(qū),存放著BPB參數(shù)和系統(tǒng)引導(dǎo)程序,如圖1左上方表格所示。然后是文件分配表及其備份FAT1和FAT2,用于管理和分配文件區(qū)的磁盤空間,其位置和大小由系統(tǒng)引導(dǎo)區(qū)中的參數(shù)計(jì)算可得。簇是FAT表給文件分配磁盤空間的最小單位,每個(gè)簇在FAT表中占有一個(gè)登記項(xiàng),簇的編號(hào)與FAT登記項(xiàng)的編號(hào)一一對(duì)應(yīng)。FAT表從第2個(gè)表項(xiàng)開始分配給文件,最開始兩個(gè)表項(xiàng)即序號(hào)為0和1的表項(xiàng)為保留表項(xiàng)值為:0FFFFFF8和FFFFFFFF。其它的表項(xiàng)則以鏈表的形式存放下一個(gè)在邏輯上連續(xù)的簇號(hào)值,結(jié)束用0FFFFFFF標(biāo)記表示不再有后續(xù)的表項(xiàng),用00000000表示該簇沒(méi)有被使用,F(xiàn)AT管理磁盤空間的工作機(jī)理如圖1所示。磁盤空間的最后的部分為根目錄和文件區(qū),根目錄FDT、普通文件目錄和文件具體內(nèi)容由FAT表統(tǒng)一管理,與FAT16文件系統(tǒng)為根目錄劃出專用的磁盤空間不同,這也是FAT32與FAT16的最大區(qū)別之一。在系統(tǒng)引導(dǎo)區(qū)第一扇區(qū)偏移量為2Ch處存放著根目錄的入口簇號(hào),根據(jù)FAT32系統(tǒng)信息可計(jì)算出根目錄的具體位置,一般根目錄的入口簇號(hào)為00000002。FAT32文件系統(tǒng)的文件登記表格式請(qǐng)參考圖1,限于篇幅這里不介紹超長(zhǎng)文件名。

  另外,對(duì)于支持ATA協(xié)議標(biāo)準(zhǔn)塊存儲(chǔ)設(shè)備有物理尋址(CHS)和邏輯尋址(LBA)兩種方式。在物理尋址方式下,存儲(chǔ)空間通過(guò)磁頭(Head)、柱面(Cylinder)和扇區(qū)(Sector)三個(gè)參數(shù)組織起來(lái)的,每一組H/C/S參數(shù)唯一確定存儲(chǔ)載體中的一個(gè)扇區(qū),通常一個(gè)扇區(qū)擁有512個(gè)字節(jié)的數(shù)據(jù)空間。邏輯尋址方式下,按照連續(xù)的邏輯扇區(qū)編號(hào)進(jìn)行尋址,使用28個(gè)數(shù)據(jù)位來(lái)表示邏輯扇區(qū)的地址。下面給出物理尋址方式與邏輯尋址方式的對(duì)應(yīng)關(guān)系,設(shè)NS為每磁道扇區(qū)數(shù),NH為磁頭數(shù),C、H、S分別表示磁盤的柱面、磁頭和扇區(qū)編號(hào),LBA表示邏輯扇區(qū)號(hào),Div為整除計(jì)算,mod為求余計(jì)算,則:LBA=NH×NS×C+NS×H+S-1;C=(LBA div NS)div NH;H=(LBA div NS)mod NH;S=(LBA mod NS)+1。了解了FAT32文件系統(tǒng)的結(jié)構(gòu),就可以獲取相關(guān)文件系統(tǒng)參數(shù)(參見(jiàn)圖1),對(duì)文件進(jìn)行管理,包括一下幾個(gè)方面:

  *系統(tǒng)引導(dǎo)扇區(qū)開始的邏輯扇區(qū)號(hào),由主分區(qū)第一扇區(qū)即物理第一扇區(qū)偏移量1C6h處獲得。

  *計(jì)算文件分配表及備份FAT1和FAT2的位置和大?。篎AT1的起始邏輯扇區(qū)號(hào)=保留扇區(qū)的大小+系統(tǒng)引導(dǎo)扇區(qū)開始的邏輯扇區(qū)號(hào);FAT2的邏輯扇區(qū)號(hào)=FAT1的邏輯扇區(qū)號(hào)+每個(gè)FAT所占的扇區(qū)數(shù)。

  *根據(jù)根目錄的起始簇號(hào)計(jì)算根目錄的位置:根目錄的起始邏輯扇區(qū)號(hào)=FAT2的邏輯扇區(qū)號(hào)+每個(gè)FAT所占的扇區(qū)數(shù)+(根目錄的起始簇號(hào)-2)×每簇扇區(qū)數(shù)。這也是根據(jù)簇號(hào)計(jì)算邏輯扇區(qū)號(hào)的公式。

  

 

  圖1 FAT32文件系統(tǒng)的實(shí)現(xiàn)機(jī)制

  

 

  圖2 TMS320LF240A數(shù)據(jù)空間的分配[!--empirenews.page--]

  TMS320LF2407A簡(jiǎn)介及資源配置

  TMS320LF2407A采用高性能靜態(tài)CMOS技術(shù),25ns指令周期,速度為40MIPS,低電壓3.3V設(shè)計(jì);總尋址范圍192K字,其中包括64K 程序空間, 64K 數(shù)據(jù)空間, 64K I/O空間;片內(nèi)程序空間集成32K字Flash;數(shù)據(jù)空間集成2.5K字RAM,包括544字DARAM,2K字SARAM;兩個(gè)事件管理模塊EVA、EVB,分別提供兩個(gè)16bit全局計(jì)數(shù)器,8個(gè)脈沖寬度可調(diào)調(diào)制通道PWM,三個(gè)外部事件的定時(shí)采樣捕獲單元;同步的16通道高性能10bit ADC,轉(zhuǎn)換速率為500ns;串行異步通信接口(SCI)、串行同步外設(shè)接口(SPI)、CAN總線2.0接口。由于TMS320LF2407A集成了多種數(shù)據(jù)傳輸接口,并且片內(nèi)集成ADC模塊,可被廣泛用于控制、接口轉(zhuǎn)換以及數(shù)據(jù)采集等領(lǐng)域。

  充分利用TMS320LF2407A芯片自身的資源,其數(shù)據(jù)空間的分配如圖2所示。在地址0060-007F數(shù)據(jù)空間,存放FAT32文件系統(tǒng)的重要參數(shù)和3個(gè)文件信息表,可以同時(shí)訪問(wèn)3個(gè)文件,滿足很多應(yīng)用場(chǎng)合的要求。文件信息表極為簡(jiǎn)單,其結(jié)構(gòu)見(jiàn)圖2,它提供了文件訪問(wèn)所需要的必要信息,能夠方便的對(duì)文件操作。在文件信息表中,直接存放要訪問(wèn)的文件的目錄所在的邏輯扇區(qū)號(hào),避免了地址的重復(fù)計(jì)算,并記錄了當(dāng)前文件內(nèi)容緩沖區(qū)存放的內(nèi)容所在的簇號(hào),便于對(duì)FAT分區(qū)表進(jìn)行搜索。由于對(duì)文件的訪問(wèn)需要經(jīng)常搜索FAT分區(qū)表,為了減少重復(fù)讀取同一扇區(qū)的次數(shù),分配了兩個(gè)FAT表扇區(qū)緩沖區(qū)。為要訪問(wèn)的文件分配了文件目錄緩沖區(qū)和文件內(nèi)容緩沖區(qū),大小均為256字(1個(gè)扇區(qū)的大小)。很多應(yīng)用場(chǎng)合可能僅需要同時(shí)訪問(wèn)一個(gè)文件,為了提高數(shù)據(jù)傳輸率,可將文件內(nèi)容緩沖區(qū)大小擴(kuò)充到256×5字,即將文件目錄緩沖區(qū)2、3和文件內(nèi)容緩沖區(qū)2、3作為文件內(nèi)容緩沖區(qū)1的擴(kuò)充。由于TMS320LF2407A只有8級(jí)硬件堆棧,為保證系統(tǒng)軟件工作的穩(wěn)定性和正確性,且方便函數(shù)調(diào)用進(jìn)行參數(shù)傳遞和臨時(shí)變量的存放,將地址0200-02FF的數(shù)據(jù)空間作為系統(tǒng)函數(shù)調(diào)用堆棧段。另外,TMS320LF2407A集成了多種通訊接口和兩個(gè)事件管理器,很多實(shí)時(shí)功能實(shí)現(xiàn)均依賴中斷來(lái)實(shí)現(xiàn),能響應(yīng)的中斷信號(hào)多達(dá)50個(gè),為了滿足實(shí)時(shí)性的要求減少軟件設(shè)計(jì)的復(fù)雜度,將地址0300-03FF的數(shù)據(jù)空間作為中斷程序的堆棧段。

  

 

  圖3 獲取FAT32為按系統(tǒng)相關(guān)參數(shù)的流程圖

  軟件實(shí)現(xiàn)

  由于塊存儲(chǔ)設(shè)備內(nèi)部數(shù)據(jù)按照字節(jié)為單位順序存放,而TMS320LF2407A的數(shù)據(jù)總線均為16位,如果使用16位數(shù)據(jù)總線并行讀取數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)中,將會(huì)產(chǎn)生高低字節(jié)顛倒,需要軟件進(jìn)行調(diào)整(其實(shí)很多情況下不進(jìn)行調(diào)整反而軟件處理起來(lái)比較方便)。本軟件實(shí)現(xiàn)流程圖中,假定進(jìn)行了高低字節(jié)調(diào)整,在緩沖區(qū)中的數(shù)據(jù)按照字節(jié)為單位順序存放。獲得FAT32分區(qū)的參數(shù)是對(duì)FAT32文件系統(tǒng)進(jìn)行文件訪問(wèn)的基礎(chǔ),本文選擇FAT表1起始邏輯扇區(qū)號(hào)、FAT表的長(zhǎng)度、文件數(shù)據(jù)區(qū)起始邏輯扇區(qū)號(hào)、每簇扇區(qū)數(shù)、分區(qū)總扇區(qū)數(shù)、根目錄的入口首簇號(hào)作為一組參數(shù)。也可以根據(jù)軟件實(shí)現(xiàn)的復(fù)雜度、信息是否冗余等條件,選擇別的參數(shù),比如FAT表2起始邏輯扇區(qū)號(hào)、根目錄的起始扇區(qū)號(hào)等。圖3給出了基于TMS320LF2407A獲取FAT32文件系統(tǒng)的上述參數(shù)的流程圖,其中用到的FAT32文件系統(tǒng)的相關(guān)參數(shù)位置信息和計(jì)算公式在此不再重復(fù)。首先讀取主引導(dǎo)扇區(qū)到緩沖區(qū)并進(jìn)行結(jié)束標(biāo)志(55AAh)判斷;然后根據(jù)第一分區(qū)入口處讀取該分區(qū)的分區(qū)類型信息,判斷是否為FAT32分區(qū)格式;再根據(jù)第一分區(qū)入口處提供的第一分區(qū)的起始邏輯扇區(qū)地址信息將系統(tǒng)引導(dǎo)扇區(qū)到緩沖區(qū)并進(jìn)行結(jié)束標(biāo)志(55AAh)判斷;最后根據(jù)系統(tǒng)引導(dǎo)扇區(qū)提供的BPB參數(shù),經(jīng)過(guò)必要的計(jì)算,依次獲得FAT32文件系統(tǒng)的相關(guān)參數(shù)。

  以在根目錄下新建一個(gè)文件為例,說(shuō)明基于TMS320LF2407A對(duì)FAT32文件系統(tǒng)中的文件進(jìn)行訪問(wèn)的軟件。

  

 

  圖4 在根目錄下搜索未用文件目錄登記表項(xiàng)流程圖

  搜索根目錄下的未用的目錄表項(xiàng),空白表項(xiàng)以00字節(jié)開始,被刪除的表項(xiàng)以E5字節(jié)開始。流程圖見(jiàn)圖4,由三重循環(huán)實(shí)現(xiàn),最內(nèi)層循環(huán)檢測(cè)文件目錄緩沖扇區(qū)(0A00-0AFF)是否有以00或E5字節(jié)開始的目錄表項(xiàng);中間層循環(huán)將一個(gè)簇下的所有扇區(qū)順序讀到文件目錄緩沖扇區(qū)以供最內(nèi)層循環(huán)檢測(cè);最外層循環(huán)則從文件根目錄入口簇號(hào)開始,搜索入口簇號(hào)對(duì)應(yīng)的FAT表鏈(在圖4中由子程序1實(shí)現(xiàn)),將鏈中的簇號(hào)提供給中間層循環(huán)使用,直到鏈尾0FFFFFFF結(jié)束。如果在循環(huán)過(guò)程中檢測(cè)到有空白或者已經(jīng)被刪除的目錄表項(xiàng)存在,則跳至3,否則進(jìn)入2。

  在根目錄入口簇號(hào)對(duì)應(yīng)的FAT表鏈鏈尾追加一個(gè)新的FAT表項(xiàng)(在圖4中由子程序2實(shí)現(xiàn)),并將新的FAT表項(xiàng)對(duì)應(yīng)的文件數(shù)據(jù)空間全賦0值(因?yàn)槲幢皇褂玫腇AT表項(xiàng)對(duì)應(yīng)的文件數(shù)據(jù)空間并非一定為0值而將被來(lái)用存放根目錄的目錄表項(xiàng),為保證目錄表項(xiàng)的正確性將這段數(shù)據(jù)空間賦0值表示所有目錄表項(xiàng)都是空白的)。將新的FAT表項(xiàng)對(duì)應(yīng)數(shù)據(jù)空間第一扇區(qū)前32字節(jié)作為空白的目錄表項(xiàng),進(jìn)入3(第1、2兩步的流程圖請(qǐng)參見(jiàn)圖4)。

  在找到的空白目錄表項(xiàng)寫入相關(guān)數(shù)據(jù):文件名、擴(kuò)展名、屬性等,但此時(shí)只能在文件入口首簇號(hào)和文件長(zhǎng)度參數(shù)賦0值。將目錄緩沖扇區(qū)數(shù)據(jù)回寫到磁盤后,在Windows等操作系統(tǒng)中就能在根目錄找到相應(yīng)的文件名了。

  搜索FAT表中空白表項(xiàng)并計(jì)算其對(duì)應(yīng)的簇號(hào),將搜索到FAT空白表項(xiàng)寫入0FFFFFFF值并回寫到磁盤,同時(shí)要修改分區(qū)表FAT表1和其備份FAT表2;將得到的簇號(hào)寫入目錄表項(xiàng)中緩沖區(qū)中相應(yīng)位置并回寫到磁盤。

  向第4步中搜索到FAT空白表項(xiàng)對(duì)應(yīng)的磁盤空間寫入數(shù)據(jù),并修改文件長(zhǎng)度參數(shù)回寫到磁盤。

  如果文件長(zhǎng)度較長(zhǎng),則在該文件對(duì)應(yīng)的FAT表鏈鏈尾追加一個(gè)新的FAT表項(xiàng),并向新表項(xiàng)對(duì)應(yīng)的磁盤空間寫入數(shù)據(jù)修改文件長(zhǎng)度參數(shù)回寫到磁盤。

  重復(fù)第6步,直到將文件數(shù)據(jù)全部寫入磁盤空間或者用盡磁盤空間為止。

  刪除文件是新建文件的逆過(guò)程,但比新建文件簡(jiǎn)單的多,僅需要?jiǎng)h除文件目錄表項(xiàng)(在文件表項(xiàng)第一字節(jié)賦值E5h即可)和文件對(duì)應(yīng)的FAT表鏈即可。

  結(jié)語(yǔ)

  TMS320LF2407A可以方便地與Flash閃爍存儲(chǔ)載體搭建硬件平臺(tái),并且在芯片集成了多種數(shù)據(jù)傳輸接口和ADC模塊,可被廣泛用于控制、接口轉(zhuǎn)換以及數(shù)據(jù)采集存儲(chǔ)等領(lǐng)域。由于FAT32文件系統(tǒng)被當(dāng)前流行的PC操作系統(tǒng),如Windows和Linux支持,按照FAT32文件系統(tǒng)進(jìn)行數(shù)據(jù)管理的意義在于,使得PC機(jī)與這些閃爍存儲(chǔ)載體很方便的進(jìn)行數(shù)據(jù)交換,有更好的通用性、兼容性和更廣闊的應(yīng)用場(chǎng)合。筆者用TI公司的DSP匯編編寫了完整的FAT32文件系統(tǒng)支持程序,其核心代碼不足500行,運(yùn)行穩(wěn)定可靠,可以直接燒入到TMS320LF2407A片內(nèi)程序Flash空間,不需要外擴(kuò)Flash存儲(chǔ)芯片。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

瑞典烏普薩拉,2025年6月24日 — 全球嵌入式系統(tǒng)軟件解決方案領(lǐng)導(dǎo)者IAR正式發(fā)布適用于瑞薩RX和RL78系列微控制器的新版本開發(fā)工具鏈:Renesas RX v5.20和RL78 v5.20。此次更新進(jìn)一步鞏固了I...

關(guān)鍵字: MCU 嵌入式軟件 工具鏈

為增進(jìn)大家對(duì)嵌入式軟件的認(rèn)識(shí),本文將對(duì)嵌入式軟件的發(fā)展以及分析嵌入式軟件問(wèn)題的方法予以介紹。

關(guān)鍵字: 嵌入式 指數(shù) 嵌入式軟件

為增進(jìn)大家對(duì)嵌入式軟件的認(rèn)識(shí),本文將對(duì)嵌入式軟件的開發(fā)流程予以詳細(xì)介紹。

關(guān)鍵字: 嵌入式 指數(shù) 嵌入式軟件

為增進(jìn)大家對(duì)嵌入式軟件的認(rèn)識(shí),本文將對(duì)嵌入式軟件的特征、嵌入式軟件的分類以及嵌入式軟件Vector予以介紹。

關(guān)鍵字: Vector 指數(shù) 嵌入式軟件

在嵌入式系統(tǒng)開發(fā)中,硬件資源的限制和測(cè)試環(huán)境的搭建常常成為開發(fā)者面臨的挑戰(zhàn)。QEMU(Quick Emulator)作為一款開源的機(jī)器模擬器和虛擬化器,能夠在主機(jī)系統(tǒng)上模擬目標(biāo)硬件環(huán)境,為嵌入式軟件的仿真測(cè)試提供了強(qiáng)大的...

關(guān)鍵字: QEMU 嵌入式軟件 仿真

隨著汽車電子化程度的不斷提高,汽車嵌入式軟件的功能復(fù)雜性也在日益增長(zhǎng)。為了確保這些軟件在復(fù)雜多變的車載環(huán)境中能夠穩(wěn)定、可靠地運(yùn)行,功能安全(Functional Safety)成為了汽車軟件開發(fā)過(guò)程中不可或缺的一環(huán)。IS...

關(guān)鍵字: ISO 26262 功能安全 嵌入式軟件

嵌入式軟件可編程邏輯控制器(PLC)是工業(yè)自動(dòng)化領(lǐng)域的核心設(shè)備,廣泛應(yīng)用于生產(chǎn)線控制、過(guò)程控制、運(yùn)動(dòng)控制等場(chǎng)景。隨著工業(yè)4.0和智能制造的發(fā)展,PLC控制器需要具備更高的實(shí)時(shí)性、可靠性和可擴(kuò)展性。本文將探討工業(yè)PLC控制...

關(guān)鍵字: PLC控制器 嵌入式軟件

嵌入式軟件開發(fā)團(tuán)隊(duì)面臨的最大挑戰(zhàn)之一是,他們花費(fèi)太多時(shí)間來(lái)調(diào)試軟件。當(dāng)我與全球團(tuán)隊(duì)和工程師交談時(shí),在我參加的各種會(huì)議上,顯然,開發(fā)人員平均將其40%的時(shí)間或更多時(shí)間用于調(diào)試軟件。

關(guān)鍵字: 嵌入式軟件 合同設(shè)計(jì)

開發(fā)靈活且可擴(kuò)展的嵌入式軟件已成為產(chǎn)品開發(fā)的重要方面。越來(lái)越多的公司不是開發(fā)單個(gè)單片產(chǎn)品,而是開發(fā)一個(gè)核心平臺(tái),從中可以創(chuàng)建幾個(gè)不同的產(chǎn)品線。在核心代碼中,有時(shí)會(huì)有所需的軟件行為未知,并且必須滿足特定產(chǎn)品需求。為了實(shí)現(xiàn)代...

關(guān)鍵字: 代碼靈活性 嵌入式軟件

軟件體系結(jié)構(gòu)是其組件中體現(xiàn)的系統(tǒng)的基本組織,彼此之間的關(guān)系以及環(huán)境的關(guān)系以及指導(dǎo)其設(shè)計(jì)和進(jìn)化的原則。軟件體系結(jié)構(gòu)并不是要?jiǎng)?chuàng)建一次并將其設(shè)置為石頭。相反,軟件體系結(jié)構(gòu)應(yīng)在整個(gè)產(chǎn)品的一生中發(fā)展和變化。多年來(lái),我聽到工程師和經(jīng)...

關(guān)鍵字: 嵌入式軟件 軟件體系結(jié)構(gòu)
關(guān)閉