基于S3C2410和CF卡的FAT32開(kāi)發(fā)
還有一點(diǎn)需要注意的是Reset信號在True IDE 模式下低電平有效,而在其它模式下高電平有效。將Reset信號接到S3C2410的系統復位信號nReset。
4 系統軟件構成
目前, 在PC機DOS/Windows的管理下, 廣泛使用的是FAT12、FAT16 和FAT32 文件系統,
FAT12一般用于軟盤(pán), FAT16 和FAT32 則用于硬盤(pán)。本系統采用FAT32文件系統。
FAT文件系統的卷由4個(gè)基本的區組成,它們在卷中的排列順序如下:
0——保留區(引導區);
1——FAT區;
2——根目錄區(FAT32中存在的是浮動(dòng)的FDT表);
3——文件和目錄數據區。
FAT卷中第1個(gè)重要的數據結構BPB(BIOS Parameter Block),它位于卷的保留區內第1個(gè)扇區中,BPB參數塊記錄著(zhù)分區的起始扇區、結束扇區、文件存儲格式、硬盤(pán)介質(zhì)描述符、根目錄大小、FAT個(gè)數, 分配單元大小等重要參數。文件分配表FAT,從邏輯1扇區開(kāi)始, 它是文件管理系統用來(lái)給每個(gè)文件分配磁盤(pán)物理空間的表格, FAT文件分配表由表標識和簇映射的集合組成, 一個(gè)完全相同的鏡像副本連續存儲在主FAT表后, FAT的全部目的就是跟蹤文件, 具體描述即需要說(shuō)明整個(gè)磁盤(pán)分區中的每個(gè)存儲單元(簇) 的使用情況、文件數據的簇存儲情況(連續或碎片) 以及樹(shù)型目錄結構的描述。FAT實(shí)際上就是一個(gè)卷中所有簇使用情況的映射表, 每個(gè)文件、目錄都同表中的若干項對應聯(lián)系, 并在目錄中進(jìn)行索引。FAT之后就是根目錄, 記錄整個(gè)磁盤(pán)上所有文件的有用信息, 其中每一個(gè)文件占32個(gè)字節, 包括文件名、文件屬性、文件的修改時(shí)間和文件的長(cháng)度等等。根目錄接下來(lái)是數據區, 用來(lái)存儲采集的數據等信息。
在CF卡上進(jìn)行文件讀寫(xiě)操作過(guò)程如下:CF卡讀寫(xiě)以扇區為單位,每扇區為512字節,每次可讀寫(xiě)一個(gè)或多個(gè)連續的扇區。在CF卡讀寫(xiě)時(shí),分別向扇區計數、扇區號、低柱面、高柱面、選擇卡/磁頭寄存器寫(xiě)入CF卡需要訪(fǎng)問(wèn)的扇區位置,其寫(xiě)入模式有2種:即 CHS(Cylinder/Head/Sector)模式和LBA(Logical Block Address)模式。通過(guò)設置選擇卡/磁頭寄存器的第6位LBA確定其模式:即如果LBA=0,則為CHS模式;如果LBA=I,則為L(cháng)BA模式。本設計采用LBA尋址方式訪(fǎng)問(wèn)CF卡數據。
S3C2410對CF卡讀扇區數據時(shí)首先分別向扇區計數、扇區號、低柱面、高柱面、選擇卡/磁頭寄存器寫(xiě)入相應的數據指定需要讀寫(xiě)的扇區;再向命令寄存器寫(xiě)20H,讀取狀態(tài)字為58H后讀取數據;最后讀取命令寄存器的狀態(tài)字,如果為50H表示沒(méi)有錯誤, CF卡進(jìn)入待命狀態(tài)。
S3C2410對CF卡向指定扇區寫(xiě)數據的命令是30H,其操作與讀數據相似,只不過(guò)在寫(xiě)入數據后要等到CF卡中數據穩定并進(jìn)入空閑狀態(tài)才能結束這一過(guò)程。
通過(guò)對CF卡寫(xiě)入命令ECH就可以讀出1個(gè)扇區,其中包含了該CF卡的一些參數的信息,如容量、默認的柱面數、默認的磁頭數、每個(gè)扇區的字節數、每個(gè)磁道的扇區數和CF卡上總的扇區數等,以此來(lái)判斷是否需要格式化CF卡。在格式化后的CF卡中,具有FAT文件系統結構。
FAT32文件系統在CF卡上工作時(shí),首先初始化文件系統;再建立一個(gè)目錄;然后讀/寫(xiě) 一個(gè)文件;接著(zhù)刪除這個(gè)文件和目錄;最后關(guān)閉文件系統。
//初始化文件系統
DiskInit(); //初始化邏輯盤(pán)信息管理模塊
AddFileDriver(CFCammand); //加載CF卡底層驅動(dòng)程序
FileInit(); //初始化文件指針系統
//建立一個(gè)目錄
ChangeDrive(“a:”); //改變當前邏刪除一個(gè)底層驅動(dòng)程序輯盤(pán)
MakeDir(“dir2.dir”); //建立目錄
ChangDir(“a:dir2”); //改變當前目錄
評論