《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于TMS320LF2407A支持FAT32文件系統嵌入式軟件的實現
基于TMS320LF2407A支持FAT32文件系統嵌入式軟件的實現
摘要: 本文介紹了DSPTMS320LF2407A和FAT32文件系統結構,分析了基于TMS320LF2407A支持FAT32文件系統結構的嵌入式軟件實現。
Abstract:
Key words :

摘   要: 本文介紹了DSP TMS320LF2407A" title="TMS320LF2407A">TMS320LF2407A和FAT32" title="FAT32">FAT32文件系統結構,分析了基于TMS320LF2407A支持 FAT32文件系統結構的嵌入式軟件實現。
關鍵詞: TMS320LF2407A;FAT32;DSP
引言
        近幾年來,隨著閃爍存儲技術的進步,由于Flash閃爍存儲體系具有容量大和功耗低等優點,被廣泛用于數碼相機、媒體播放器和PDA等各種數碼產品中。當前各種流行的嵌入式操作系統雖然功能完備,但在許多具體的應用中,仍需要編寫特定的系統控制軟件。數碼產品中一個必要的軟件模塊就是對一種或多種文件系統的支持。FAT32文件系統被Windows和Linux等當前流行的PC操作系統廣泛支持,這也是許多數碼產品選擇FAT32的原因。本文介紹了FAT32文件系統結構和基于DSP TMS320LF2407A為硬件平臺支持 FAT32文件系統結構的嵌入式軟件實現。
FAT32文件系統結構簡介
        單FAT32分區的磁盤或閃爍存儲器(以下沒有特殊情況均指單FAT32分區情況)由主引導區(MBR)、系統引導區、文件分配表FAT1、文件分配表備份FAT2、文件根目錄FDT和文件數據區組成,它們在磁盤上是順序分布的,如圖1所示。
        主引導區從物理第一扇區開始,記錄了第一磁盤分區的入口和剩余磁盤分區的入口信息、第一分區的文件系統格式、起始扇區號和大小。接下來就是FAT32文件系統的引導區,存放著BPB參數和系統引導程序,如圖1左上方表格所示。然后是文件分配表及其備份FAT1和FAT2,用于管理和分配文件區的磁盤空間,其位置和大小由系統引導區中的參數計算可得。簇是FAT表給文件分配磁盤空間的最小單位,每個簇在FAT表中占有一個登記項,簇的編號與FAT登記項的編號一一對應。FAT表從第2個表項開始分配給文件,最開始兩個表項即序號為0和1的表項為保留表項值為:0FFFFFF8和FFFFFFFF。其它的表項則以鏈表的形式存放下一個在邏輯上連續的簇號值,結束用0FFFFFFF標記表示不再有后續的表項,用00000000表示該簇沒有被使用,FAT管理磁盤空間的工作機理如圖1所示。磁盤空間的最后的部分為根目錄和文件區,根目錄FDT、普通文件目錄和文件具體內容由FAT表統一管理,與FAT16文件系統為根目錄劃出專用的磁盤空間不同,這也是FAT32與FAT16的最大區別之一。在系統引導區第一扇區偏移量為2Ch處存放著根目錄的入口簇號,根據FAT32系統信息可計算出根目錄的具體位置,一般根目錄的入口簇號為00000002。FAT32文件系統的文件登記表格式請參考圖1,限于篇幅這里不介紹超長文件名。
另外,對于支持ATA協議標準塊存儲設備有物理尋址(CHS)和邏輯尋址(LBA)兩種方式。在物理尋址方式下,存儲空間通過磁頭(Head)、柱面(Cylinder)和扇區(Sector)三個參數組織起來的,每一組H/C/S參數唯一確定存儲載體中的一個扇區,通常一個扇區擁有512個字節的數據空間。邏輯尋址方式下,按照連續的邏輯扇區編號進行尋址,使用28個數據位來表示邏輯扇區的地址。下面給出物理尋址方式與邏輯尋址方式的對應關系,設NS為每磁道扇區數,NH為磁頭數,C、H、S分別表示磁盤的柱面、磁頭和扇區編號,LBA表示邏輯扇區號,Div為整除計算,mod為求余計算,則: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文件系統的結構,就可以獲取相關文件系統參數(參見圖1),對文件進行管理,包括一下幾個方面:
    *系統引導扇區開始的邏輯扇區號,由主分區第一扇區即物理第一扇區偏移量1C6h處獲得。
    *計算文件分配表及備份FAT1和FAT2的位置和大小:FAT1的起始邏輯扇區號=保留扇區的大小+系統引導扇區開始的邏輯扇區號;FAT2的邏輯扇區號=FAT1的邏輯扇區號+每個FAT所占的扇區數。
    *根據根目錄的起始簇號計算根目錄的位置:根目錄的起始邏輯扇區號=FAT2的邏輯扇區號+每個FAT所占的扇區數+(根目錄的起始簇號-2)×每簇扇區數。這也是根據簇號計算邏輯扇區號的公式。


圖1  FAT32文件系統的實現機制

圖2  TMS320LF240A數據空間的分配
TMS320LF2407A簡介及資源配置
        TMS320LF2407A采用高性能靜態CMOS技術,25ns指令周期,速度為40MIPS,低電壓3.3V設計;總尋址范圍192K字,其中包括64K 程序空間, 64K 數據空間, 64K I/O空間;片內程序空間集成32K字Flash;數據空間集成2.5K字RAM,包括544字DARAM,2K字SARAM;兩個事件管理模塊EVA、EVB,分別提供兩個16bit全局計數器,8個脈沖寬度可調調制通道PWM,三個外部事件的定時采樣捕獲單元;同步的16通道高性能10bit ADC,轉換速率為500ns;串行異步通信接口(SCI)、串行同步外設接口(SPI)、CAN總線2.0接口。由于TMS320LF2407A集成了多種數據傳輸接口,并且片內集成ADC模塊,可被廣泛用于控制、接口轉換以及數據采集等領域。
        充分利用TMS320LF2407A芯片自身的資源,其數據空間的分配如圖2所示。在地址0060-007F數據空間,存放FAT32文件系統的重要參數和3個文件信息表,可以同時訪問3個文件,滿足很多應用場合的要求。文件信息表極為簡單,其結構見圖2,它提供了文件訪問所需要的必要信息,能夠方便的對文件操作。在文件信息表中,直接存放要訪問的文件的目錄所在的邏輯扇區號,避免了地址的重復計算,并記錄了當前文件內容緩沖區存放的內容所在的簇號,便于對FAT分區表進行搜索。由于對文件的訪問需要經常搜索FAT分區表,為了減少重復讀取同一扇區的次數,分配了兩個FAT表扇區緩沖區。為要訪問的文件分配了文件目錄緩沖區和文件內容緩沖區,大小均為256字(1個扇區的大小)。很多應用場合可能僅需要同時訪問一個文件,為了提高數據傳輸率,可將文件內容緩沖區大小擴充到256×5字,即將文件目錄緩沖區2、3和文件內容緩沖區2、3作為文件內容緩沖區1的擴充。由于TMS320LF2407A只有8級硬件堆棧,為保證系統軟件工作的穩定性和正確性,且方便函數調用進行參數傳遞和臨時變量的存放,將地址0200-02FF的數據空間作為系統函數調用堆棧段。另外,TMS320LF2407A集成了多種通訊接口和兩個事件管理器,很多實時功能實現均依賴中斷來實現,能響應的中斷信號多達50個,為了滿足實時性的要求減少軟件設計的復雜度,將地址0300-03FF的數據空間作為中斷程序的堆棧段。

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

圖4  在根目錄下搜索未用文件目錄登記表項流程圖
搜索根目錄下的未用的目錄表項,空白表項以00字節開始,被刪除的表項以E5字節開始。流程圖見圖4,由三重循環實現,最內層循環檢測文件目錄緩沖扇區(0A00-0AFF)是否有以00或E5字節開始的目錄表項;中間層循環將一個簇下的所有扇區順序讀到文件目錄緩沖扇區以供最內層循環檢測;最外層循環則從文件根目錄入口簇號開始,搜索入口簇號對應的FAT表鏈(在圖4中由子程序1實現),將鏈中的簇號提供給中間層循環使用,直到鏈尾0FFFFFFF結束。如果在循環過程中檢測到有空白或者已經被刪除的目錄表項存在,則跳至3,否則進入2。
在根目錄入口簇號對應的FAT表鏈鏈尾追加一個新的FAT表項(在圖4中由子程序2實現),并將新的FAT表項對應的文件數據空間全賦0值(因為未被使用的FAT表項對應的文件數據空間并非一定為0值而將被來用存放根目錄的目錄表項,為保證目錄表項的正確性將這段數據空間賦0值表示所有目錄表項都是空白的)。將新的FAT表項對應數據空間第一扇區前32字節作為空白的目錄表項,進入3(第1、2兩步的流程圖請參見圖4)。
在找到的空白目錄表項寫入相關數據:文件名、擴展名、屬性等,但此時只能在文件入口首簇號和文件長度參數賦0值。將目錄緩沖扇區數據回寫到磁盤后,在Windows等操作系統中就能在根目錄找到相應的文件名了。
搜索FAT表中空白表項并計算其對應的簇號,將搜索到FAT空白表項寫入0FFFFFFF值并回寫到磁盤,同時要修改分區表FAT表1和其備份FAT表2;將得到的簇號寫入目錄表項中緩沖區中相應位置并回寫到磁盤。
向第4步中搜索到FAT空白表項對應的磁盤空間寫入數據,并修改文件長度參數回寫到磁盤。
如果文件長度較長,則在該文件對應的FAT表鏈鏈尾追加一個新的FAT表項,并向新表項對應的磁盤空間寫入數據修改文件長度參數回寫到磁盤。
重復第6步,直到將文件數據全部寫入磁盤空間或者用盡磁盤空間為止。
刪除文件是新建文件的逆過程,但比新建文件簡單的多,僅需要刪除文件目錄表項(在文件表項第一字節賦值E5h即可)和文件對應的FAT表鏈即可。

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线精品福利| 欧美在线视频日韩| 国产性做久久久久久| 欧美视频二区| 欧美黄色网络| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美亚洲在线视频| 午夜宅男欧美| 欧美亚洲一区二区在线观看| 亚洲男女自偷自拍| 亚洲性视频网址| 亚洲图片你懂的| 亚洲无亚洲人成网站77777| 99成人免费视频| 99国产精品久久| 一本不卡影院| 亚洲深夜影院| 亚洲在线不卡| 午夜精品av| 欧美一区影院| 久久久九九九九| 久久久久久一区二区三区| 久久国内精品视频| 久久久久久噜噜噜久久久精品| 久久精品国产亚洲aⅴ| 久久精品一区二区国产| 久久九九有精品国产23| 久久综合九色综合久99| 久久一本综合频道| 欧美成人按摩| 欧美日韩亚洲国产精品| 国产精品激情| 国产欧美午夜| 在线观看成人av| 最新国产成人av网站网址麻豆| 亚洲精品欧美极品| 一区二区三欧美| 亚洲欧美一区二区三区极速播放| 午夜精品久久久久久99热软件 | 久久国产视频网| 91久久久亚洲精品| 日韩视频在线一区二区三区| 中日韩视频在线观看| 亚洲专区一二三| 久久久国产成人精品| 欧美xxx在线观看| 欧美视频免费在线| 国产亚洲精品aa午夜观看| **欧美日韩vr在线| 一本到12不卡视频在线dvd| 亚洲欧美日韩人成在线播放| 久久精品99国产精品日本 | 欧美11—12娇小xxxx| 欧美日韩www| 国产精品欧美日韩一区二区| 好吊妞这里只有精品| 亚洲日本aⅴ片在线观看香蕉| 亚洲一区久久| 亚洲黄色影院| 午夜精品久久久久久久99水蜜桃| 久久婷婷麻豆| 欧美色欧美亚洲另类七区| 国产亚洲在线| 洋洋av久久久久久久一区| 久久爱www久久做| 亚洲视频播放| 母乳一区在线观看| 国产精品亚洲视频| 亚洲欧洲日本在线| 久久er精品视频| 亚洲自拍偷拍福利| 农夫在线精品视频免费观看| 国产精品午夜在线观看| 最新日韩欧美| 久久精品视频播放| 亚洲欧美日韩在线不卡| 欧美激情国产高清| 国产一区二区三区av电影| 一区二区三区福利| 亚洲日本成人| 久久精品免视看| 国产精品久久综合| 亚洲精品视频在线观看免费| 久久gogo国模裸体人体| 亚洲免费人成在线视频观看| 欧美搞黄网站| 一区精品在线| 欧美一区91| 欧美一级久久| 欧美天天综合网| 最新国产精品拍自在线播放| 亚洲第一精品影视| 欧美一区免费视频| 国产精品国产成人国产三级| 亚洲国内自拍| 亚洲国产日韩欧美在线图片| 欧美在线视频免费观看| 欧美亚州韩日在线看免费版国语版| 在线观看久久av| 欧美专区日韩视频| 久久成人国产精品| 国产精品草草| 99这里只有精品| 亚洲美女av网站| 欧美不卡视频一区| 经典三级久久| 欧美主播一区二区三区美女 久久精品人 | 久久动漫亚洲| 国产精品乱码妇女bbbb| 99国产精品久久久久老师| 99国产一区| 欧美人与性动交α欧美精品济南到| 在线免费一区三区| 亚洲国产婷婷香蕉久久久久久99 | 欧美刺激性大交免费视频| 激情婷婷亚洲| 久久精品亚洲一区二区三区浴池 | 久热精品视频在线观看一区| 国产色视频一区| 午夜伦理片一区| 亚欧成人在线| 国产日韩综合| 久久精品国产精品亚洲综合| 久久国产婷婷国产香蕉| 国产午夜精品一区二区三区欧美 | 午夜影院日韩| 久久精品国产第一区二区三区最新章节| 国产精品免费福利| 亚洲欧美日本视频在线观看| 先锋影音国产精品| 国产精品视频网址| 午夜久久电影网| 久久精品99无色码中文字幕| 国产亚洲精品福利| 欧美影院在线播放| 久久综合网络一区二区| 在线视频国内自拍亚洲视频| 亚洲三级观看| 欧美日韩国产黄| 这里只有精品电影| 欧美伊人久久| 樱花yy私人影院亚洲| 91久久精品国产91性色| 欧美激情在线播放| 一区二区三区三区在线| 香蕉av777xxx色综合一区| 国产一二三精品| 91久久久在线| 欧美日韩一区二区在线视频| 亚洲色诱最新| 久久久99免费视频| 亚洲激情第一页| 亚洲一区综合| 国产亚洲一本大道中文在线| 亚洲国语精品自产拍在线观看| 欧美精品一区三区| 中文av一区二区| 久久久精品国产免费观看同学| 在线观看日产精品| av成人免费| 国产欧美日韩中文字幕在线| 亚洲高清视频在线观看| 欧美日本亚洲韩国国产| 亚洲欧美久久久久一区二区三区| 久久精品国产免费观看| 91久久久久久国产精品| 性欧美1819性猛交| 黄色亚洲免费| 亚洲午夜视频在线观看| 国外成人在线视频| 亚洲最新视频在线| 国产视频久久久久| 亚洲美女中文字幕| 国产日韩欧美a| av成人国产| 激情六月综合| 亚洲欧美韩国| 亚洲成色777777在线观看影院| 亚洲一区二区三区四区五区黄| 国产综合网站| 亚洲一区久久久| 在线观看亚洲视频啊啊啊啊| 亚洲午夜在线观看| 好看的av在线不卡观看| 一区二区日韩精品| 国外成人在线视频网站| 亚洲一区二区欧美日韩| 一区二区三区在线视频观看| 亚洲图色在线| 亚洲国产精品一区| 欧美一区不卡| 日韩一级大片| 久色婷婷小香蕉久久| 亚洲视频一区| 欧美人与禽猛交乱配| 久久国产精品一区二区三区四区| 欧美午夜精品| 亚洲九九爱视频| 加勒比av一区二区| 欧美一区三区三区高中清蜜桃|