弱弱的问一下:在wince5.0中如何实现对SD卡的驱动?

wucc007isyou   2008-11-30 22:01 楼主
在wince5.0中如何实现对SD卡的驱动,是不是要以下步骤:

1.在WINCE 项目中添加SD 卡的相关的组建,例如:

CATALOG->device drivers->SDIO->SDMemory
CATALOG->device drivers->SDIO->SDIO Host->Samsung 2410 SDIO Host

CATALOG->device drivers-> Storage Devices ->Storage Devices ->Secure Digital/Multimedia Card (SD/MMC)等


2.添加文件到 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
3.添加注册表项目:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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 of data per 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"


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

这样就基本完成了对SD功能的添加,对么?

回复评论 (21)

但是在PB5.0中,在这个路径下没有这个组件啊:
CATALOG->device drivers-> Storage Devices ->Storage Devices ->Secure Digital/Multimedia Card (SD/MMC)
点赞  2008-11-30 22:07
[img=C:\Documents and Settings\iwillbeback008\桌面\SD卡PB调试截图]\Active33-SDBusDriver.jpg[/img]
点赞  2008-12-3 17:31
你是友善的板子吧。

友善的BSP是4.2的版本,根本没有SD卡驱动源码。
就是三个DLL,你去看看BSP下的file文件夹,有三个DLL的。

直接打包即可。

上面微软的组件一个都不用选。

检测引脚是EINT16,不能改动。


哈哈
点赞  2008-12-3 19:33
你赶紧得分啊,不然以后你就没有分可得了。
点赞  2008-12-3 19:33
引用: 引用 3 楼 gooogleman 的回复:
你是友善的板子吧。

友善的BSP是4.2的版本,根本没有SD卡驱动源码。
就是三个DLL,你去看看BSP下的file文件夹,有三个DLL的。

直接打包即可。

上面微软的组件一个都不用选。

检测引脚是EINT16,不能改动。


哈哈

那按照你说的,就是直接做第二步的:
2.添加文件到 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
这样就可以了么?
点赞  2008-12-3 21:13
    我现在按照开头说的方法(除了Secure Digital/Multimedia Card (SD/MMC)这个组件没有添加到工程外),生成的镜像在mini2440上运行,通过PB远程调试工具看到注册表BuildIn下有SDBusDriver项,Active项下的第33、34和37项分别是SDBusDriver、SDSC和SDMemory_Class这三项。
    不知道,这样说明初始化是不是对了?
    在这种情况下,插入SD卡后仍然没有任何反应。
点赞  2008-12-3 21:22
现在,打算弄个完整的三星官方的S3C2440BSP for CE5.0来从头开始学习SD卡的驱动算了。
真是郁闷
点赞  2008-12-3 22:18
引用: 引用 4 楼 gooogleman 的回复:
你赶紧得分啊,不然以后你就没有分可得了。
]

呵呵,过来接点分
点赞  2008-12-3 22:36
引用: 引用 6 楼 iwillbeback008 的回复:

2.添加文件到 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
这样就可以了么?

    我现在按照开头说的方法(除了Secure Digital/Multimedia Card (SD/MMC)这个组件没有添加到工程外),生成的镜像在mini2440上运行,通过PB远程调试工具看到注册表BuildIn下有SDBusDriver项,Active项下的第33、34和37项分别是SDBusDriver、SDSC和SDMemory_Class这三项。
    不知道,这样说明初始化是不是对了?
    在这种情况下,插入SD卡后仍然没有任何反应。



sd 卡的注册表加了没有?

还有文件系统等呢?

SDBusDriver、SDSC和SDMemory_Class这三项——有这三项说明SD已经加载了,只是盘符没有显示,不知道你哪里出了问题。
点赞  2008-12-4 00:14
引用9楼的大哥:
◎“sd 卡的注册表加了没有?”
你说的注册表,应该是以下的吧:
3.添加注册表项目:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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 of data per 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"
----------------
以上的,是系统自动生成的,我确认已经在注册表里头有了。

◎“还有文件系统等呢? ”
那这个是指“FAT文件系统组件”吧?
这个我也添加了。
点赞  2008-12-4 14:32
引用: 引用 7 楼 iwillbeback008 的回复:
现在,打算弄个完整的三星官方的S3C2440BSP for CE5.0来从头开始学习SD卡的驱动算了。
真是郁闷

现在看到三星原版的BSP下,已经没有这三个SDBusDriver.dll、SDCSDCard.dLL和SDMemory.dll文件了。
不过听高手说,这个原版的BSP是默认支持SD卡的,只要在定制工程时加入SD卡相关的支持组件,就可以了。
看来自己再试试了,要从原版BSP做,自己又要先做LCD的移植了,哎,真是有趣啊!
^_^/^_^/o_o
点赞  2008-12-4 14:39
引用: 引用楼主 iwillbeback008 的帖子:
在wince5.0中如何实现对SD卡的驱动,是不是要以下步骤:

1.在WINCE 项目中添加SD 卡的相关的组建,例如:

CATALOG->device drivers->SDIO->SDMemory
CATALOG->device drivers->SDIO->SDIO Host->Samsung 2410 SDIO Host

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

这样就基本完成了对SD功能的添加,对么?

而你在Bib文件里加的是这两个:
SDBusDriver.dll  $(_FLATRELEASEDIR)\SDBusDriver.dll  NK SH
SDCSDCard.DLL  $(_FLATRELEASEDIR)\SDCSDCard.DLL  NK SH
点赞  2008-12-5 12:29
是啊,但是我在给的BSP包中找不到SDBus.dll和SDHC_SC2410.dll啊!
这么这么郁闷啊
点赞  2008-12-5 22:40
SDBus.dll可以在PB里生成出来的
只要选上Device Driver->SDIO->SD Memory就可以
而且跟SDBus和SDMemory相关的注册表项和Bib项都不需要在Platform.bib里添加,系统都会自动生成出来
点赞  2008-12-6 00:10
到网上下一个支持SD卡的BSP包是最快的方法,然后在WINCE里面把SD卡的组件加进去就OK了
点赞  2008-12-6 08:58
这样啊,14/15楼的答复,我比较满意,现在我正在自己移植三星官方的BSP,到时会试试.
点赞  2008-12-6 12:44
引用: 引用 3 楼 gooogleman 的回复:
你是友善的板子吧。

友善的BSP是4.2的版本,根本没有SD卡驱动源码。
就是三个DLL,你去看看BSP下的file文件夹,有三个DLL的。

直接打包即可。

上面微软的组件一个都不用选。

检测引脚是EINT16,不能改动。


哈哈

记号,学习。
点赞  2008-12-8 15:53
学习
点赞  2008-12-9 09:28
引用: 引用 14 楼 hzdysymbol 的回复:
SDBus.dll可以在PB里生成出来的
只要选上Device Driver->SDIO->SD Memory就可以
而且跟SDBus和SDMemory相关的注册表项和Bib项都不需要在Platform.bib里添加,系统都会自动生成出来


现在我使用的三星官方的S3C2440BSP for CE5.0已经支持SD卡了,只要在构建系统时添加相关组件就行:SD Memory了!
点赞  2008-12-11 20:28
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复