基于ARM9-μC/OS-II軟硬件平臺(tái)的SD卡文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
隨著嵌入式式技術(shù)的不斷發(fā)展,ARM處理器憑借其高性能、廉價(jià)、耗能低的優(yōu)質(zhì)特性而得到廣泛應(yīng)用。文中主要針對(duì)貨車動(dòng)態(tài)稱重系統(tǒng)中大量實(shí)時(shí)載重?cái)?shù)據(jù)存取的需求,在ARM9嵌入式處理器和μC/OS-II操作系統(tǒng)基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了一種SD卡文件系統(tǒng)。該系統(tǒng)具有實(shí)時(shí)性強(qiáng)、存取速率高、易維護(hù),易移植等特點(diǎn)。
本文引用地址:http://www.ex-cimer.com/article/272739.htm1 硬件接口電路設(shè)計(jì)
本系統(tǒng)硬件開發(fā)平臺(tái)處理器為S3C2440A,是三星公司推出的16/32位RISC微處理器,ARM920T內(nèi)核,主頻400 MHz,最高可達(dá)533 MHz,內(nèi)部具有豐富的系統(tǒng)外圍控制器和多種通信接口。SD卡支持SPI和SD兩種通信模式,S3C2440A具有SD卡接口,支持SD總線模式,所以不再像低端的ARM處理器那樣采用SPI模式,而是采用SD總線模式,這樣可以大大提高SD卡的讀寫速度。S3C2440A與SD卡讀寫器的接口電路如圖1所示。
SD卡的DAT0~DAT3、CLK(時(shí)鐘線)和CMD(命令線)分別連接到S3C2440A的SDDATA0~SDDATA3、SDCLK和SDCMD引腳。SD卡支持單線和寬總線的數(shù)據(jù)傳輸,寬總線數(shù)據(jù)一次傳4位,數(shù)度更快,因此,此設(shè)計(jì)采用寬總線方式。
2 SD卡文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
μC/OS-II是一種可移植的,可植入ROM的,可裁剪的,搶占式的,實(shí)時(shí)多任務(wù)小型的嵌入式操作系統(tǒng),它采用可剝離式內(nèi)核實(shí)施任務(wù)調(diào)度,實(shí)時(shí)性很強(qiáng),而且每個(gè)任務(wù)具有唯一的優(yōu)先級(jí),能夠保證就續(xù)表中任務(wù)優(yōu)先級(jí)最高的任務(wù)優(yōu)先執(zhí)行。μC/OS-II大部分代碼是用移植性很高的C語言編寫的,只極少部分與處理器密切相關(guān)的部分代碼用匯編語言編寫,因此只需要做很少的工作就可以很方便地將它移植到各種不同構(gòu)架的微處理器上。
為了增強(qiáng)軟件的可移植性,易維護(hù)性,程序設(shè)計(jì)時(shí)采用層次化,模塊化設(shè)計(jì)。模塊化結(jié)構(gòu)如圖2所示,除了用來進(jìn)行管理的操作系統(tǒng)外,共分為4個(gè)模塊,包括SD卡底層驅(qū)動(dòng),文件系統(tǒng),API接口,用戶應(yīng)用程序。底層驅(qū)動(dòng)完成SD卡初始化,以及實(shí)質(zhì)上的讀寫功能;文件系統(tǒng)采用PC機(jī)普遍支持的FAT32文件系統(tǒng)規(guī)范來設(shè)計(jì),完成文件的創(chuàng)建,讀寫,刪除功能;API接口封裝文件系統(tǒng)提供的函數(shù),供上層應(yīng)用使用;用戶應(yīng)用程序通過調(diào)用文件系統(tǒng)提供的API函數(shù),完成相應(yīng)的功能。各個(gè)模塊的具體實(shí)現(xiàn)下面會(huì)做以說明。
2.1 底層驅(qū)動(dòng)設(shè)計(jì)
2.1.1 SD卡初始化
SD卡讀寫操作都是基于命令的,通過向SD卡發(fā)送命令并讀取命令的響應(yīng)來實(shí)現(xiàn)對(duì)SD卡的控制。在SD卡讀寫之前,首先要進(jìn)行初始化操作。這是確保SD卡能進(jìn)行正常數(shù)據(jù)讀寫的前提,SD卡初始化完成了SD卡上電,確認(rèn),設(shè)置邏輯地址,使其進(jìn)入傳輸狀態(tài)以及設(shè)置總線帶寬幾大主要工作。需要注意的是,在發(fā)送使SD卡空閑命令CMD0之前至少等待74個(gè)時(shí)鐘,確保SD卡進(jìn)入SD總線模式。SD卡初始化代碼編寫如下:
評(píng)論