基于嵌入式系統的SD卡接口設計
為降低系統功耗,非活躍線程平時是被掛起的。如果總線上掛有多個SD卡,就需要用CMD7命令退出當前SD卡,選擇其他CD卡操作。CMD7命令為選擇卡或取消卡,在初始化的時候發送CMD7命令,SD卡將進入數據發送模式,在數據模式里發送CMD7則退出當前卡的操作。需要注意的是,在數據模式里不同的狀態只支持特定命令,如在數據模式里發送讀ID指令則無效。同時,為減少SD Host驅動程序設計的復雜性,使其具有較好的可移植性,可以采用Bsquare提供的SD Host DDK,它在Bsquare SD協議棧的基礎上,提供了平臺獨立的總線、客戶端驅動和一組標準化的API供使用。在該體系結構下,SD主控制器驅動負責檢查SD卡的插拔狀態,檢測插入卡的類型,設置SD主控制器時鐘等SD接口的硬件操作;SD總線驅動則負責上層卡驅動的裝載和移除,維護每一個插槽的總線請求隊列等。該結構的設計很大程度上減少了SD Host驅動程序設計的復雜性,使SD Host控制器驅動程序設計可以專注于硬件相關的部分。總線驅動是SD卡客戶端驅動程序和SDHost驅動程序之間的一個抽象層,它為SD卡客戶端驅動提供平臺獨立的服務接口。SD Host驅動程序需要完成處理器和硬件平臺相關的處理,向上層驅動提供統一的服務接口。
4 結束語
評論