9635|23

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有关在S3C2440+WinCE5.0+4.2BSP下使用4GB的SDHC大容量SD卡驱动问题,请大家进来指点一下,谢谢!!! [复制链接]

首先,感谢大家浏览我的帖子,祝您工作顺利!

我的环境:S3C2440+WinCE5.0+4.2BSP
我的问题:如何在些环境下编写支持4GB的SDHC驱动?
我的基础:查阅了相关的基础本概念,了解了一些基本方法,但大部分是针对5.0BSP包的。
Platform Builder5.0所打补丁:
WinCEPB50-081231-Product-Update-Rollup-Armv4I.msi
WinCEPB50-091231-Product-Update-Rollup-Armv4I.msi
WinCEPB50-100331-2010M03-Armv4I.msi

问题详述:
1)4.2BSP微软只提供了三个DLL文件,(SDBusDriver.dll,SDCSDCard.dll和SDMemory.dll)并没有提供源码,我们是否可以利用这三个DLL来支持SDHC呢?我按以下方法修改了,但没成功。
platform.reg文件:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SDIO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IF BSP_NOSD !
[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"="SDMEM"
;        "PartitionDriver"=""          ; removable storage cannot have partitions

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MMC]
        "Name"="MMC Card"
        "Folder"="MMC 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"="SMC"  
        "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"
ENDIF BSP_NOSD !

platform.bib文件:
IF BSP_NOSD !
        SDBusDriver.dll                        $(_FLATRELEASEDIR)\SDBusDriver.dll                NK        SH
        SDCSDCard.DLL                        $(_FLATRELEASEDIR)\SDCSDCard.DLL                NK        SH
        SDMemory.dll                        $(_FLATRELEASEDIR)\SDMemory.dll                        NK        SH
ENDIF BSP_NOSD !
添加组件:添加SD memory和SDIO Standard Host Controller两个组件
smdk2440.bat文件:set BSP_NOSD=

2)我手头上有从网上找到的支持SDHC的5.0BSP(没试验过,因为厂家手册上说是支持的),是否可以将其修改后用于我现在的4.2BSP,如果可以应修改哪些地方呢?
据我现在的了解,1)打好将CE5.0的2007.4 的补丁;2)Platform->setting->Environment设置环境变量:IMGSDBUS2 = 1 ;3)修改BSP包下Src\Drivers\SDHC\SDHCBASE目录下的sdiocontrollerbase.cpp,添加case response7;4)添加SD memory和SDIO Standard Host Controller两个组件;5)相应修改platform.reg和platform.bib文件。
但这是对5.0BSP的,可我现在是4.2BSP我该怎么办?


授人以鱼,不如授人以渔,我想请大家多多传授我一些学习的方法,我现在没人指导,完全靠自已摸索,书上没见过如何添加SDHC驱动的,网上有关4.2BSP如何添加SDHC也很少,很多网友因为这个放弃4.2BSP而使用5.0BSP的,但我实在没能力换BSP了,因为再有二十天我们就要毕业答辩了,这是我的毕业设计,还请大家多多指点,并多谈谈如何在没人指点,没有资料的情况下去调试SDHC驱动?谢谢大家!!!
此帖出自WindowsCE论坛

最新回复

; IF BSP_NOSD ! ; SDBusDriver.dll $(_FLATRELEASEDIR)\SDBusDriver.dll NK SH ; SDCSDCard.DLL $(_FLATRELEASEDIR)\SDCSDCard.DLL NK SH ; SDMemory.dll $(_FLATRELEASEDIR)\SDMemory.dll NK SH ; ENDIF BSP_NOSD ! 这几句就是基于4.2的吧,5.0版本的DLL不是这三个的。。。 开发班自带的BSP是厂家改过的,问一下他们吧。。。 楼上最好先弄懂什么是驱动。。。  详情 回复 发表于 2010-6-10 16:34
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
顶起,等等大家指点与教诲!!!

也麻烦大家帮顶一下,因为这里只能连续回复三次,谢谢!!!
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
去看Googleman的博客,他很久以前就搞过这个。
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢回复,只是gooogleman为了SDHC驱动放弃了4.2BSP而换用了5.0BSP,他的博客中的文章我正在研读中,但对于SD卡来说都是关于如何在5.0BSP下移植的问题。

请问能不能提供一下如何修改4.2BSP来支持4GB的SDHC叫?
或把5.0BSP的SDHC移植到4.2BSP上来也行?

麻烦了,十分感谢!!!
引用 2 楼 gsymichael 的回复:
去看Googleman的博客,他很久以前就搞过这个。
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
你试试看把5.0下的Sdbus和底层的sdhostcontroller部分的dll放到现在的bsp,修改下注册表看看是不是可以
此帖出自WindowsCE论坛
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢回复,我试试吧,只是4.2BSP与5.0BSP的中断机制不一样,不知道仅仅把DLL拿过来能不能行。。。
引用 4 楼 gsymichael 的回复:
你试试看把5.0下的Sdbus和底层的sdhostcontroller部分的dll放到现在的bsp,修改下注册表看看是不是可以
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
你指的中断机制不同是指什么?在Host驱动中应该是可以改的吧
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢回复,今天一直在看有关中断机制问题,因为4.2BSP采用的是静态中断吧,5.0BSP是动态的,还有很多结构感觉也不一样,不知道是否直接移植过来就可以用,我现在懂得还比较少,正在好好补充基础中,谢谢您的耐心回复,谢谢!!!
引用 6 楼 gsymichael 的回复:
你指的中断机制不同是指什么?在Host驱动中应该是可以改的吧
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
sd卡的驱动包含3部分
sdbus sdcontroller sdclient 分别对应你的3个dll
sdbus是抽象层,主要是负责sd协议部分
sdcontroller是硬件层,主要负责对硬件寄存器的读写
sdclient是应用层,sd存储卡对应的是sdmemory,是sdio接口的一个应用,其他还有sd wifi, sd 蓝牙, sd gps等等,只需要更换应用层的驱动dll就可以了
要支持4G以上sd卡,协议需要升级到2.0,所以sdbus需要比较大的修改,sdcontroller对应需要小修改,sdclient如果保持接口一致,不需要修改
你的3个dll都没有源码,所以是不可能做到的,只能从5.0移植,打PB补丁更新,实际上是微软升级了sdbus的源码,增加了2.0协议支持,并且命名为sdbus2
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
#8楼:
非常感谢您热心的回复!!!

我现在手头在有一个别的厂家的5.0BSP,在“BSP包”/Src/drivers/SDHC下有两个文件夹:
1)SDHC文件夹:sdiocontroller.cpp,sdiocontroller.h,sdhc_sc2440.def,makefile和sources几个文件;
2)SDHCBASE文件夹:sdhcmain.cpp,sdiocontrollerbase.cpp,sdiocontrollerbase.h,makefile和sources几个文件;

E:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\SDCARD目录下:
共有SDBUS,SDBUSDRIVER,SDCARDLIB,SDCLIENTDRIVERS,SDHCDRIVERS,SDHCLIB几个文件夹。

只是不明白这些文件有什么对应关系,在我调试串口时有MDD与PDD之分,现在还没看懂SDHC驱动是什么结构。麻烦多多指点,谢谢。我这就再去看一些相关资料……
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 2 楼 gsymichael 的回复:
去看Googleman的博客,他很久以前就搞过这个。

他的博客好像有这方面的内容http://blog.eeworld.net/gooogleman
此帖出自WindowsCE论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

12
 
感谢您的回复!!!
我现在正在看gooogleman的博客,希望能多我指点,只是他的日志是基于5.0BSP的,我现在是基于4.2BSP,所以改动不一样啊,还希望多多占拔,谢谢!!!
引用 10 楼 panzekai 的回复:
他的博客好像有这方面的内容http://blog.eeworld.net/gooogleman
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 jbb0523 的回复:
感谢您的回复!!!
我现在正在看gooogleman的博客,希望能多我指点,只是他的日志是基于5.0BSP的,我现在是基于4.2BSP,所以改动不一样啊,还希望多多占拔,谢谢!!!

引用 10 楼 panzekai 的回复:
他的博客好像有这方面的内容http://blog.eeworld.net/gooogleman


把5.0 的驱动放到 4.2 下编译就可以了。改一下中断申请方式,修改一下你的OAL。寄存器名字,头文件改一下,就可以了。

不是很难的。你不要试图搞懂SD卡驱动,搞懂也要几个月吧。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(中级)

14
 
引用 12 楼 gooogleman 的回复:
引用 12 楼 goooleman 的回复:
把5.0 的驱动放到 4.2 下编译就可以了。改一下中断申请方式,修改一下你的OAL。寄存器名字,头文件改一下,就可以了。

不是很难的。你不要试图搞懂SD卡驱动,搞懂也要几个月吧。



谢谢回复!!!

也就是说可以把5.0BSP下的SDHC驱动移植到4.2BSP下了?
我现在一直在研读你的博客文章,看的是一头雾水,可能是我功底太薄了……
我也不要求我完全弄懂SD卡,只需知道个大概流程,最重要的是能够调试成功,只是现在真不知道要修改哪里,因为感觉4.2与5.0的好多文件都不一样,所以现在正在疯狂的恶补中,但还是一头雾水,还请多多明示,谢谢gooogleman了,这是我毕设的最后一道难关!!!
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
哪位大侠能够帮忙讲解一下8楼所说到的SD卡驱动的三部分是如何划分的,我一直在看4.2中断与5.0中断,一头雾水,现在也不知道空间该去看什么,因为到处都是不懂的问题,麻烦大家指点一下,毕设最后一道难关,有劳大家了,谢谢!!!
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

16
 
你这个真是比较难搞,要让你明白不是几句话能说清楚的。
你明白gooogleman说的把5.0的驱动放到4.2下编译是什么意思吗?把那些驱动拿过来编译?
你知道Host Driver需要做哪些修改吗?

你是什么平台,可以在网上搜搜看看有没有支持SDHC的Dll文件,或是问问论坛里面谁有。
拿到Dll直接build到image里面我感觉对你来说更靠谱一些,就目前的情形。
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

17
 
谢谢您的回复,谢谢!!!
我的平台是GEC2440+WinCE5.0+4.2BSP,这个板子用的人很少,其实板子硬件资源做的还行,只是光盘带的软件包不好,什么驱动也没有,基本上只能跑起OS,想干什么都得自已动手,不过倒是比较锻炼人,呵呵。
的确,我现在很多还不懂,我手头上有一哥们买的TQ2440的5.0BSP,这个BSP是支持SDHC的,只是我不知道怎么移植到我的4.2BSP下。
googleman所说的我真的也没有一点思路,连看什么相关资料都不知道,现在正在看gooogleman的eeworld的博客,一点点的去领会。
说实话,我不知道host driver是指的哪一个文件夹下的源文件。

谢谢您的回复,还请多多点拨……
引用 15 楼 gsymichael 的回复:
你这个真是比较难搞,要让你明白不是几句话能说清楚的。
你明白gooogleman说的把5.0的驱动放到4.2下编译是什么意思吗?把那些驱动拿过来编译?
你知道Host Driver需要做哪些修改吗?

你是什么平台,可以在网上搜搜看看有没有支持SDHC的Dll文件,或是问问论坛里面谁有。
拿到Dll直接build到image里面我感觉对你来说更靠谱一些,就目前的情形。
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

18
 
up......
waiting......
studying......
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

19
 
up....
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

20
 
帮顶下,晚上我也得会学校 毕业答辩了。
我觉得8#已经都说了,LZ目前找个4.2 支持SDHC的Driver才比较现实。
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表