基于A(yíng)RM9-μC/OS-II軟硬件平臺的SD卡文件系統的設計與實(shí)現
初始化完戚之后,就可對SD卡進(jìn)行讀寫(xiě)操作,通過(guò)設置SDI數據控制寄存器SDIDCON來(lái)確定SD卡的讀寫(xiě)長(cháng)度,讀操作時(shí)數據長(cháng)度作沒(méi)有明確限制,寫(xiě)操作時(shí),每次寫(xiě)的長(cháng)度必須為BLOCK的倍數。SD卡的讀寫(xiě)可以一次性讀寫(xiě)單塊數據,也可以一次性讀寫(xiě)多塊數據,多塊數據的讀寫(xiě)結束時(shí),要發(fā)送CMD12結束指令。主要實(shí)現函數:Write_Card_Block()-寫(xiě)入單塊數據;Write_Card_Data()-寫(xiě)入多塊數據;Read_Card_Block()-讀多塊數據;Read_Card-Data()-讀多塊數據。
Windows95 OSR2和Windows 98開(kāi)始支持FAT32文件系統,它是對早期DOS的FAT文件系統的增強,由于文件系統的核心一文件分配表FAT擴充為32位,所以稱(chēng)為FAT32文件系統。FAT32包含DBR、保留扇區、FAT1、FAT2(第一個(gè)FAT的備份)、根目錄、數據區5部分。DBR(Dos Boot Rec ord)是操作系統引導記錄區;保留扇區是為了對DBR作備份或留待以后升級時(shí)用;文件分配表區共保存了兩個(gè)相同的FAT表,文件所占用的存儲空間(簇鏈)及空閑空間的管理都是通過(guò)FAT實(shí)現的;FAT32根目錄區(ROOT區)不再是固定區域、固定大小,可看作是數據區的一部分;數據區用來(lái)存放真正要記錄的文件數據,本系統定義的一簇為4K個(gè)字節。
2.2.2 文件系統初始化
文件系統初始主要是讀取SD卡的DBR扇區(0扇區),并分析該扇區內容,從而獲取每扇區字節數,每簇扇區數,FAT開(kāi)始扇區號,根目錄開(kāi)始扇區號等關(guān)鍵信息,為文件的創(chuàng )建,讀寫(xiě)等操作做準備,文件系統初始化函數代碼如下:


2.2.3 文件創(chuàng )建
SD卡上創(chuàng )建文件或目錄的過(guò)程就是在文件目錄表FDT中申請登記項的過(guò)程,為此程序設計時(shí)定義了如下結構體:


評論