基于ARM9-μC/OS-II軟硬件平臺的SD卡文件系統的設計與實現
隨著嵌入式式技術的不斷發(fā)展,ARM處理器憑借其高性能、廉價、耗能低的優(yōu)質特性而得到廣泛應用。文中主要針對貨車動態(tài)稱重系統中大量實時載重數據存取的需求,在ARM9嵌入式處理器和μC/OS-II操作系統基礎上,設計實現了一種SD卡文件系統。該系統具有實時性強、存取速率高、易維護,易移植等特點。
本文引用地址:http://2s4d.com/article/170576.htm1 硬件接口電路設計
本系統硬件開發(fā)平臺處理器為S3C2440A,是三星公司推出的16/32位RISC微處理器,ARM920T內核,主頻400 MHz,最高可達533 MHz,內部具有豐富的系統外圍控制器和多種通信接口。SD卡支持SPI和SD兩種通信模式,S3C2440A具有SD卡接口,支持SD總線模式,所以不再像低端的ARM處理器那樣采用SPI模式,而是采用SD總線模式,這樣可以大大提高SD卡的讀寫速度。S3C2440A與SD卡讀寫器的接口電路如圖1所示。

SD卡的DAT0~DAT3、CLK(時鐘線)和CMD(命令線)分別連接到S3C2440A的SDDATA0~SDDATA3、SDCLK和SDCMD引腳。SD卡支持單線和寬總線的數據傳輸,寬總線數據一次傳4位,數度更快,因此,此設計采用寬總線方式。
μC/OS-II是一種可移植的,可植入ROM的,可裁剪的,搶占式的,實時多任務小型的嵌入式操作系統,它采用可剝離式內核實施任務調度,實時性很強,而且每個任務具有唯一的優(yōu)先級,能夠保證就續(xù)表中任務優(yōu)先級最高的任務優(yōu)先執(zhí)行。μC/OS-II大部分代碼是用移植性很高的C語言編寫的,只極少部分與處理器密切相關的部分代碼用匯編語言編寫,因此只需要做很少的工作就可以很方便地將它移植到各種不同構架的微處理器上。

為了增強軟件的可移植性,易維護性,程序設計時采用層次化,模塊化設計。模塊化結構如圖2所示,除了用來進行管理的操作系統外,共分為4個模塊,包括SD卡底層驅動,文件系統,API接口,用戶應用程序。底層驅動完成SD卡初始化,以及實質上的讀寫功能;文件系統采用PC機普遍支持的FAT32文件系統規(guī)范來設計,完成文件的創(chuàng)建,讀寫,刪除功能;API接口封裝文件系統提供的函數,供上層應用使用;用戶應用程序通過調用文件系統提供的API函數,完成相應的功能。各個模塊的具體實現下面會做以說明。
2.1 底層驅動設計
2.1.1 SD卡初始化
SD卡讀寫操作都是基于命令的,通過向SD卡發(fā)送命令并讀取命令的響應來實現對SD卡的控制。在SD卡讀寫之前,首先要進行初始化操作。這是確保SD卡能進行正常數據讀寫的前提,SD卡初始化完成了SD卡上電,確認,設置邏輯地址,使其進入傳輸狀態(tài)以及設置總線帶寬幾大主要工作。需要注意的是,在發(fā)送使SD卡空閑命令CMD0之前至少等待74個時鐘,確保SD卡進入SD總線模式。SD卡初始化代碼編寫如下:


評論