<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM9和μC/OS-II的SD卡文件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

          基于ARM9和μC/OS-II的SD卡文件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2012-08-09 來(lái)源:網(wǎng)絡(luò) 收藏

          隨著嵌入式式技術(shù)的不斷發(fā)展,ARM處理器憑借其高性能、廉價(jià)、耗能低的優(yōu)質(zhì)特性而得到廣泛應(yīng)用。文中主要針對(duì)貨車(chē)動(dòng)態(tài)稱重系統(tǒng)中大量實(shí)時(shí)載重的需求,在嵌入式處理器和μC/OS-II操作系統(tǒng)基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了一種文件系統(tǒng)。該系統(tǒng)具有實(shí)時(shí)性強(qiáng)、存取速率高、易維護(hù),易移植等特點(diǎn)。

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

          a.JPG


          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語(yǔ)言編寫(xiě)的,只極少部分與處理器密切相關(guān)的部分代碼用匯編語(yǔ)言編寫(xiě),因此只需要做很少的工作就可以很方便地將它移植到各種不同構(gòu)架的微處理器上。

          b.JPG


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

          c.JPG


          d.JPG


          2.1.2 SD卡讀寫(xiě)實(shí)現(xiàn)
          初始化完戚之后,就可對(duì)SD卡進(jìn)行讀寫(xiě)操作,通過(guò)設(shè)置SDI數(shù)據(jù)控制寄存器SDIDCON來(lái)確定SD卡的讀寫(xiě)長(zhǎng)度,讀操作時(shí)數(shù)據(jù)長(zhǎng)度作沒(méi)有明確限制,寫(xiě)操作時(shí),每次寫(xiě)的長(zhǎng)度必須為BLOCK的倍數(shù)。SD卡的讀寫(xiě)可以一次性讀寫(xiě)單塊數(shù)據(jù),也可以一次性讀寫(xiě)多塊數(shù)據(jù),多塊數(shù)據(jù)的讀寫(xiě)結(jié)束時(shí),要發(fā)送CMD12結(jié)束指令。主要實(shí)現(xiàn)函數(shù):Write_Card_Block()-寫(xiě)入單塊數(shù)據(jù);Write_Card_Data()-寫(xiě)入多塊數(shù)據(jù);Read_Card_Block()-讀多塊數(shù)據(jù);Read_Card-Data()-讀多塊數(shù)據(jù)。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();