新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統的SD控制器設計實現

        嵌入式系統的SD控制器設計實現

        作者: 時間:2011-09-06 來源:網絡 收藏
        本文Host的驅動程序采用流式接口驅動模型。

        本文引用地址:http://www.104case.com/article/150261.htm

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

          為了減少了Host驅動程序的復雜性,使其具有較好的可移植性,采用HostDDK,它在BSQUARESD協議棧的基礎上,提供了平臺獨立的總線和客戶端驅動和一組標準化的API供使用。BSQUARESD卡的協議棧結構如圖1所示。

          

        SD卡協議棧體系結構

          圖1 SD卡協議棧體系結構

          該結構的很大程度上減少了SDHost驅動程序的復雜性,使SDHost驅動程序設計可以專著于硬件相關的部分。總線驅動是SD卡客戶端驅動程序和SDHost驅動程序之間的一個抽象層,它為SD卡客戶端驅動提供平臺獨立的服務接口。SDHost驅動程序需要完成處理器和硬件平臺相關的處理,向上層驅動提供統一的服務接口。

          2.2 中斷控制

          中斷控制是設備驅動程序里的關鍵部分,它關系到操作的實時相應速度和的整體性能。WindowsCE是通用的,它在中斷處理方面也有一定實時能力。

          WindowsCE處理中斷的過程分為兩部分:核心的ISR和用戶線程IST。ISR實現一般要求短小精悍、效率很高,它只實現簡單的功能:響應設備中斷并返回一個中斷標識碼。IST是用戶態線程,負責處理具體的中斷事務。

          當有硬件設備產生中斷時,系統進入核心ISR執行,響應設備中斷并返回一個中斷標識碼,核心根據返回的中斷標識碼設置相應的事件,該事件將引起IST的執行,處理具體的中斷事務。處理過程如圖2所示。

          

        WindowsCE中斷處理過程

          圖2 WindowsCE中斷處理過程

          本實現中用到了下列中斷:SD卡檢測中斷,SDIO中斷和DMA0中斷(DMA0專用于SDHost的DMA數據傳輸)。SD卡檢測中斷IST負責檢測SD卡的插入和拔出,通知上層應用SD插槽的狀態;SDIO中斷IST只是簡單的通知總線驅動有SDIO中斷產生,具體處理交給SDIO卡的驅動程序;DMA0中斷IST負責處理SD的DMA數據傳送。

          在WindowsCE中,由于驅動程序DLL運行在用戶態,因此驅動程序要訪問硬件寄存器,必須在驅動程序的進程空間分配一段虛擬空間,然后將這段虛擬空間映射到硬件寄存器所映射到內核的虛擬地址才能夠完成相應的訪問。SDHost驅動程序在初始化的時候,必須進行資源分配和地址映射,配置好各個GPIO引腳的功能;然后需要創建事件和相應的中斷標識碼的關聯,創建中斷服務線程IST,準備進行中斷響應服務。

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 镶黄旗| 榕江县| 保靖县| 顺义区| 阜康市| 东方市| 三河市| 安丘市| 大兴区| 新蔡县| 永兴县| 天峻县| 鸡泽县| 榆树市| 和顺县| 阳城县| 平陆县| 北川| 凭祥市| 云梦县| 漳州市| 张家口市| 和平区| 临夏县| 水富县| 聊城市| 西乌珠穆沁旗| 方山县| 蓬溪县| 进贤县| 城市| 平和县| 革吉县| 和顺县| 桐城市| 增城市| 广州市| 凭祥市| 崇左市| 古蔺县| 屏东市|