MC9S12UF32的嵌入式文件系統數據存儲模塊
在表2中,對ff.h中主要配置宏的含義進行了說明,同時給出了本文所介紹的數據存儲模塊采用的取值。本文引用地址:http://www.j9360.com/article/151973.htm
4 FatFS文件系統的使用
FatFS文件系統中涉及2個基本的數據結構:文件系統(磁盤)的數據結構FATFS和文件的數據結構FIL。這兩個結構是FatFS軟件主要的RAM開銷,FATFS數據結構中有針對磁盤的512字節讀寫緩存,FIL則有針對每個文件的緩存。而采用Tiny FatFS配置則不會開設文件讀寫緩存,節約RAM。
依次使用f_mount、f_open、f_rcad/f_write、f_close可以完成基本的讀寫。FatFS允許對同一文件同時復數讀取,但完全不支持對同一文件同時復數的寫入操作,因為這會引起文件系統錯誤。具體每一個函數,特別是字符串讀寫、格式化讀寫等,可以參見原始幫助和例程。
此外,由于嵌入式系統具有突然掉電的可能性,一些關鍵代碼段可能導致文件系統錯誤,所以要注意調用f_sync()及時寫入。當然,如果是一組連續的f_write()寫入,而每次寫完都f_sync(),則會極大地影響速度,可以全部寫完后f_sync()。
V0.07以后版本的FatFS,增加了以下新的功能:
①_FS_TINY。Tiny模式變成了一個宏選項,而不是獨立的代碼包。
②_FS_RPATH。決定是否有當前路徑的概念,這將影響兩個相關函數的參數。
③_USE_LFN。啟用長文件名支持,可為1或2,為2時可重入。由于長文件名存在堆棧上,而且啟用LFN會依據代碼頁增加一個很大的轉換表,占掉幾十~幾百KB,所以不推薦。
④_LFN_UNICODE。長文件名使用Unicode,實驗階段,尚未正式寫入文檔。
結語
MC9S12UF32單片機內部集成的SDHC模塊,可將SD總線轉換為單片機內部的IP總線,開發者只需要對SD協議的基本內容有所了解,通過讀寫相應的寄存器就可以方便地實現對SD卡的底層讀寫,大大簡化了硬件的開發過程。同時,獨立于硬件平臺的FatFS軟件包可以方便地移植到各種嵌入式系統中,研發者只需要對該軟件包的diskio.c和ff.h進行修改,即可完成移植,從而使用FatFS提供的豐富且易于使用的各種接口函數。
應用上述主要技術實現的具有嵌入式文件系統的數據模塊如圖4所示。
該模塊體積小巧、存儲數據的靈活性和通用性很高,可以通過模塊自帶的串行通信接口接收數據,并以文件的形式存儲起來。用戶既可以直接通過USB接口將本模塊識別為U盤進行數據讀寫和分析,也可以將micro SD卡拔出,在任意一個具有micro SD讀卡器功能的設備上讀寫數據。上述功能特性使得這款數據存儲模塊具有很良好的應用前景。
評論