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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式系統(tǒng)的SD控制器設(shè)計(jì)實(shí)現(xiàn)

          嵌入式系統(tǒng)的SD控制器設(shè)計(jì)實(shí)現(xiàn)

          作者: 時(shí)間:2011-09-06 來源:網(wǎng)絡(luò) 收藏
          本文Host的驅(qū)動(dòng)程序采用流式接口驅(qū)動(dòng)模型。

          本文引用地址:http://www.ex-cimer.com/article/150261.htm

            驅(qū)動(dòng)程序要相應(yīng)的XXX_Open(),XXX_Close(),XXX_Init(),XXX_Deinit(),XXX_IOControl(),XXX_Read(),XXX_Write(),XXX_Seek(),XXX_PowerUp(),XXX_PowerDown()等接口函數(shù),其中XXX為設(shè)備驅(qū)動(dòng)的前綴,應(yīng)用程序可以通過文件操作來控制設(shè)備。

            為了減少了Host驅(qū)動(dòng)程序的復(fù)雜性,使其具有較好的可移植性,采用HostDDK,它在BSQUARESD協(xié)議棧的基礎(chǔ)上,提供了平臺(tái)獨(dú)立的總線和客戶端驅(qū)動(dòng)和一組標(biāo)準(zhǔn)化的API供使用。BSQUARESD卡的協(xié)議棧結(jié)構(gòu)如圖1所示。

            

          SD卡協(xié)議棧體系結(jié)構(gòu)

            圖1 SD卡協(xié)議棧體系結(jié)構(gòu)

            該結(jié)構(gòu)的很大程度上減少了SDHost驅(qū)動(dòng)程序的復(fù)雜性,使SDHost驅(qū)動(dòng)程序設(shè)計(jì)可以專著于硬件相關(guān)的部分??偩€驅(qū)動(dòng)是SD卡客戶端驅(qū)動(dòng)程序和SDHost驅(qū)動(dòng)程序之間的一個(gè)抽象層,它為SD卡客戶端驅(qū)動(dòng)提供平臺(tái)獨(dú)立的服務(wù)接口。SDHost驅(qū)動(dòng)程序需要完成處理器和硬件平臺(tái)相關(guān)的處理,向上層驅(qū)動(dòng)提供統(tǒng)一的服務(wù)接口。

            2.2 中斷控制

            中斷控制是設(shè)備驅(qū)動(dòng)程序里的關(guān)鍵部分,它關(guān)系到操作的實(shí)時(shí)相應(yīng)速度和的整體性能。WindowsCE是通用的,它在中斷處理方面也有一定實(shí)時(shí)能力。

            WindowsCE處理中斷的過程分為兩部分:核心的ISR和用戶線程IST。ISR實(shí)現(xiàn)一般要求短小精悍、效率很高,它只實(shí)現(xiàn)簡單的功能:響應(yīng)設(shè)備中斷并返回一個(gè)中斷標(biāo)識(shí)碼。IST是用戶態(tài)線程,負(fù)責(zé)處理具體的中斷事務(wù)。

            當(dāng)有硬件設(shè)備產(chǎn)生中斷時(shí),系統(tǒng)進(jìn)入核心ISR執(zhí)行,響應(yīng)設(shè)備中斷并返回一個(gè)中斷標(biāo)識(shí)碼,核心根據(jù)返回的中斷標(biāo)識(shí)碼設(shè)置相應(yīng)的事件,該事件將引起IST的執(zhí)行,處理具體的中斷事務(wù)。處理過程如圖2所示。

            

          WindowsCE中斷處理過程

            圖2 WindowsCE中斷處理過程

            本實(shí)現(xiàn)中用到了下列中斷:SD卡檢測中斷,SDIO中斷和DMA0中斷(DMA0專用于SDHost的DMA數(shù)據(jù)傳輸)。SD卡檢測中斷IST負(fù)責(zé)檢測SD卡的插入和拔出,通知上層應(yīng)用SD插槽的狀態(tài);SDIO中斷IST只是簡單的通知總線驅(qū)動(dòng)有SDIO中斷產(chǎn)生,具體處理交給SDIO卡的驅(qū)動(dòng)程序;DMA0中斷IST負(fù)責(zé)處理SD的DMA數(shù)據(jù)傳送。

            在WindowsCE中,由于驅(qū)動(dòng)程序DLL運(yùn)行在用戶態(tài),因此驅(qū)動(dòng)程序要訪問硬件寄存器,必須在驅(qū)動(dòng)程序的進(jìn)程空間分配一段虛擬空間,然后將這段虛擬空間映射到硬件寄存器所映射到內(nèi)核的虛擬地址才能夠完成相應(yīng)的訪問。SDHost驅(qū)動(dòng)程序在初始化的時(shí)候,必須進(jìn)行資源分配和地址映射,配置好各個(gè)GPIO引腳的功能;然后需要?jiǎng)?chuàng)建事件和相應(yīng)的中斷標(biāo)識(shí)碼的關(guān)聯(lián),創(chuàng)建中斷服務(wù)線程IST,準(zhǔn)備進(jìn)行中斷響應(yīng)服務(wù)。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(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); })();