• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM9和μC/OS-II的SD卡文件系統設計與實現

    基于ARM9和μC/OS-II的SD卡文件系統設計與實現

    作者: 時間:2012-08-09 來源:網絡 收藏

    隨著嵌入式式技術的不斷發展,ARM處理器憑借其高性能、廉價、耗能低的優質特性而得到廣泛應用。文中主要針對貨車動態稱重系統中大量實時載重的需求,在嵌入式處理器和μC/OS-II操作系統基礎上,設計實現了一種文件系統。該系統具有實時性強、存取速率高、易維護,易移植等特點。

    1 硬件接口電路設計
    本系統硬件開發平臺處理器為S3C2440A,是三星公司推出的16/32位RISC微處理器,20T內核,主頻400 MHz,最高可達533 MHz,內部具有豐富的系統外圍控制器和多種通信接口。支持SPI和SD兩種通信模式,S3C2440A具有接口,支持SD總線模式,所以不再像低端的ARM處理器那樣采用SPI模式,而是采用SD總線模式,這樣可以大大提高SD卡的讀寫速度。S3C2440A與SD卡讀寫器的接口電路如圖1所示。

    a.JPG


    SD卡的DAT0~DAT3、CLK(時鐘線)和CMD(命令線)分別連接到S3C2440A的SDDATA0~SDDATA3、SDCLK和SDCMD引腳。SD卡支持單線和寬總線的數據傳輸,寬總線數據一次傳4位,數度更快,因此,此設計采用寬總線方式。

    2 SD卡文件系統的設計與實現
    μC/OS-II是一種可移植的,可植入ROM的,可裁剪的,搶占式的,實時多任務小型的嵌入式操作系統,它采用可剝離式內核實施任務調度,實時性很強,而且每個任務具有唯一的優先級,能夠保證就續表中任務優先級最高的任務優先執行。μC/OS-II大部分代碼是用移植性很高的C語言編寫的,只極少部分與處理器密切相關的部分代碼用匯編語言編寫,因此只需要做很少的工作就可以很方便地將它移植到各種不同構架的微處理器上。

    b.JPG


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

    c.JPG


    d.JPG


    2.1.2 SD卡讀寫實現
    初始化完戚之后,就可對SD卡進行讀寫操作,通過設置SDI數據控制寄存器SDIDCON來確定SD卡的讀寫長度,讀操作時數據長度作沒有明確限制,寫操作時,每次寫的長度必須為BLOCK的倍數。SD卡的讀寫可以一次性讀寫單塊數據,也可以一次性讀寫多塊數據,多塊數據的讀寫結束時,要發送CMD12結束指令。主要實現函數:Write_Card_Block()-寫入單塊數據;Write_Card_Data()-寫入多塊數據;Read_Card_Block()-讀多塊數據;Read_Card-Data()-讀多塊數據。


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 玉门市| 孝感市| 通道| 沙洋县| 阜新市| 司法| 若羌县| 南乐县| 瓦房店市| 郁南县| 个旧市| 安泽县| 香格里拉县| 准格尔旗| 睢宁县| 梨树县| 廉江市| 伊金霍洛旗| 辽阳县| 富平县| 托克托县| 班玛县| 阳山县| 隆子县| 张北县| 鄂尔多斯市| 南康市| 察雅县| 溧阳市| 博野县| 眉山市| 普洱| 潢川县| 玉环县| 来宾市| 丰县| 南宁市| 道孚县| 噶尔县| 扶余县| 阳城县|