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

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]摘 要: 本文介紹了DSP TMS320LF2407A和FAT32文件系統(tǒng)結構,分析了基于TMS320LF2407A支持 FAT32文件系統(tǒng)結構的嵌入式軟件實現(xiàn)。關鍵詞: TMS320LF2407

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


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

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

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

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

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

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

為增進大家對嵌入式的認識,本文將對嵌入式開發(fā)以及學習嵌入式需要注意的事項予以介紹。

關鍵字: 嵌入式 指數(shù) 嵌入式開發(fā)

中國上海,2025年4月7日 — 全球領先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應商IAR正式發(fā)布全新云就緒平臺,為嵌入式開發(fā)團隊提供企業(yè)級的可擴展性、安全性和自動化能力。該平臺于在德國紐倫堡舉辦的embedded world...

關鍵字: 自動化 嵌入式開發(fā) RISC-V

在嵌入式系統(tǒng)開發(fā)領域,VS Code(Visual Studio Code)作為一款輕量級但功能強大的代碼編輯器,正逐漸成為開發(fā)者的首選工具。本文將詳細介紹如何在VS Code上搭建嵌入式開發(fā)環(huán)境,并分享一些調試技巧。

關鍵字: VS Code 嵌入式開發(fā)

隨著汽車電子化、智能化程度的不斷提高,車載以太網(Automotive Ethernet)作為新一代車載網絡通信技術,正逐漸成為汽車內部通信的主干網絡。它以其高帶寬、低延遲和強抗干擾能力,為汽車提供了更加高效、可靠的數(shù)據(jù)...

關鍵字: 車載以太網 嵌入式開發(fā)

隨著物聯(lián)網技術的飛速發(fā)展,嵌入式系統(tǒng)對實時性、低功耗和可擴展性的要求越來越高。Zephyr RTOS(實時操作系統(tǒng))作為一款專為資源受限設備設計的開源RTOS,憑借其輕量級、模塊化和高可擴展性,在嵌入式開發(fā)領域得到了廣泛...

關鍵字: 嵌入式開發(fā) Zephyr RTOS 物聯(lián)網

嵌入式開發(fā),作為電子工程和計算機科學交叉領域的重要分支,對于構建穩(wěn)定、高效的軟件系統(tǒng)提出了獨特挑戰(zhàn)。本文將深入探討嵌入式開發(fā)的可靠方法論,結合實例與代碼,為開發(fā)者提供一套系統(tǒng)化的指導原則。

關鍵字: 嵌入式開發(fā) 計算機科學

嵌入式開發(fā),作為電子工程和計算機科學的交匯點,對軟件系統(tǒng)的穩(wěn)定性和效率提出了極高的要求。本文將結合具體案例,深入探討嵌入式開發(fā)中的可靠方法論,為開發(fā)者提供一套系統(tǒng)化的指導原則。

關鍵字: 嵌入式開發(fā) 智能家居

在科技日新月異的今天,嵌入式開發(fā)作為連接硬件與軟件的橋梁,在物聯(lián)網、智能設備、工業(yè)自動化等領域扮演著至關重要的角色。對于許多技術愛好者而言,自學嵌入式開發(fā)既是一個充滿魅力的挑戰(zhàn),也是一條通往創(chuàng)新實踐的必由之路。然而,這條...

關鍵字: 嵌入式開發(fā) 物聯(lián)網

在科技日新月異的今天,嵌入式開發(fā)與Java開發(fā)作為軟件開發(fā)領域的兩大重要分支,各自展現(xiàn)出了獨特的發(fā)展軌跡和市場前景。近年來,關于嵌入式開發(fā)是否會像Java開發(fā)一樣“卷”的討論日益增多,這背后既反映了市場對技術趨勢的敏銳洞...

關鍵字: 嵌入式開發(fā) Java開發(fā)

現(xiàn)在在嵌入式開發(fā)MCU中,八塊MCU仍占據(jù)三分之一以上的份額,在工業(yè)控制,安全,物聯(lián)網,消費電子等諸多領域,八塊MCU依然隨處可見。

關鍵字: 嵌入式開發(fā) MCU
關閉