WinCE SD模块结构

来源:互联网 发布:淘宝放心淘是什么 编辑:程序博客网 时间:2024/05/18 15:03
SD驱动采用微软的架构public自带就有,可看注册表中HKEY_LOCAL_MACHINE\Drivers\BuiltIn项下的host,bus项设置,检查HKEY_LOCAL_MACHINE\Drivers\Active下host,bus两层驱动.

逻辑上主要是:
SDHC_xxx.dll是最底层,负责具体的发命令什么的,
SDBus.dll是中间层,负责整合命令和管理,这两个在HKEY_LOCAL_MACHINE\Drivers\BuiltIn下,系统启动时就加载。
SDMemory.dll是最高层.
正常工作时,一旦卡插入,SDHC_xxx.dll的IST检测到中断,通知SDBus.dll做初始化工作,OK后SDBus.dll加载SDMemory.dll,系统才能识别卡.

1.WINCE 下 SD驱动程序包括 三部分
HOST 硬件地层部分 对应文件一般是SDHC_xxx.dll
BUS 中间逻辑命令层 SDBUS.DLL
CLIENT 上层 SDMEMORY.DLL
SD 卡驱动是表准驱动,一般不需要独立去写.

2.在WINCE 项目中添加SD 卡的相关的组建,例如:
CATALOG->device drivers->SDIO->SDMemory
CATALOG->device drivers->SDIO->SDIO Host->CHip SDIO Host
CATALOG->device drivers-> Storage Devices ->Storage Devices ->Secure Digital/Multimedia Card (SD/MMC)等

Wince6中没有,略不同,如下:
SD-SD Bus Driver
SDIO-SDIO host-SDIO standard Host Controller
SDIO Memory-SD memory

3.添加文件到 PLATFORM.BIB 中.
; SD BUS driver
SDBusDriver.dll $(_FLATRELEASEDIR)\SDBusDriver.dll NK SH
; SD host
SDCSDCard.DLL $(_FLATRELEASEDIR)\SDCSDCard.DLL NK SH
SDMemory.dll $(_FLATRELEASEDIR)\SDMemory.dll NK SH

4.添加注册表项目:
; charlie, SDIO
; two step load process, the bus driver will perform. it''s
; own ActivateDevice call in the Entry point provided
; this way the driver even though it is a Builtin device, it can be unloaded
[HKEY_LOCAL_MACHINE\Drivers\Builtin\SDBusDriver]
"Order"=dword:20
"Dll"="SDBusDriver.dll"
"Entry"="SDBusDriverStartUp"

[HKEY_LOCAL_MACHINE\Drivers\SDCARD\SDBusDriver]
"Order"=dword:20
"Dll"="SDBusDriver.dll"
"Prefix"="SDC"
"ThreadPriority"=dword:64 ; default thread priority for dispatch thread
"RequestListDepth"=dword:30 ; pre-allocated requests
;"ZoneMask"=dword:e01d ; example zone mask

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory]
"Name"="SD Memory Card"
"Folder"="Storage Card"
; "PartitionDriver"="" ; removable storage cannot have partitions

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MMC]
"Name"="MMC Card"
"Folder"="Storage Card"
; "PartitionDriver"="" ; removable storage cannot have partitions

; SD Memory Storage class driver
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class]
"Dll"="SDMemory.dll"
"Prefix"="DSK"
"FSD"="FATFS.DLL"
"IOCTL"=dword:4 ; DISK_IOCTL_INITIALIZE, sent to driver by DeviceManager
"BlockTransferSize"=dword:40 ; Send no more than 64 blocks ofdataper bus transfer
;"SingleBlockWrites"=dword:1 ; alternatively force the driver to use single block access

"Profile"="SDMemory"
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}",
"{A32942B7-920C-486b-B0E6-92A702A99B35}"

; MMC Storage Class Driver
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\MMC_Class]
"Dll"="SDMemory.dll"
"Prefix"="DSK"
"FSD"="FATFS.DLL"
"IOCTL"=dword:4 ; DISK_IOCTL_INITIALIZE, sent to driver by DeviceManager
"BlockTransferSize"=dword:40 ; Send no more than 64 blocks of data per bus transfer
;"SingleBlockWrites"=dword:1 ; alternatively force the driver to use single block access

"Profile"="MMC"
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}",
"{A32942B7-920C-486b-B0E6-92A702A99B35}"

; setting for SD bus driver to load driver
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\HostControllers\SDSC]
"Dll"="SDCSDCard.dll"
"Prefix"="SDC"

5.系统启动后,SDBus.dll和SDHC_xxx.dll能在注册表HKEY_LOCAL_MACHINE\Drivers\Active 看到.

6.调试方法:
一般先从底层开始,是否发生系统硬件中断,打印中断信息.
返回系统中断信息 :SYS_SDXXX
系统硬件正常后 ,再开始调试其他部分.
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 单位不交住房公积金怎么办 居转户没有离职证明怎么办 外地户口审驾照怎么办 居住证被注销了怎么办 新到上海怎么办居住证 战网积分过期怎么办 代理一年无赢利怎么办 开庭后不判决怎么办 离婚判决书没了怎么办 去英国工作签证怎么办 在美国怎么办英国签证 换护照英国签证怎么办 英国签证前咳嗽怎么办 英国留学被退学怎么办 在澳洲怎么办韩国签证 美签迟到了怎么办 签证照片贴错怎么办 过隧道耳朵难受怎么办 跑货车没货源怎么办 改文职老职工怎么办 铁路办家属证怎么办? 辐射4电梯故障怎么办 车辆被恶意损坏怎么办 汽车划伤见底怎么办 汽车被刀片划伤怎么办 汽车被笔画了怎么办 车被划了一条线怎么办 微信附近人上门被骗怎么办 交通事故认定书不服怎么办 自动挡下坡刹车失灵怎么办 自动挡汽车刹车失灵怎么办 重车刹车失灵怎么办 12306买票待核验怎么办 单位分流不想去怎么办 公司降薪不同意怎么办 浙江违章扣分太多怎么办 船员进出青岛港怎么办 顶楼供暖不热怎么办 成都地铁掉东西怎么办 首都航空航班取消怎么办 猫不舒服躲起来怎么办