10738|27

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE 5.O 2410 SD卡驱动移植 [复制链接]

我已经选择了以下两个组建
CATALOG->device drivers->SDIO->SDMemory
CATALOG->device drivers->SDIO->SDIO Host->Samsung 2410 SDIO Host

platform.bib也有了如下信息
SDBusDriver.dll  $(_FLATRELEASEDIR)\SDBusDriver.dll  NK SH
SDCSDCard.DLL  $(_FLATRELEASEDIR)\SDCSDCard.DLL  NK SH
SDMemory.dll  $(_FLATRELEASEDIR)\SDMemory.dll  NK SH
sdhc_sc2410.dll  $(_FLATRELEASEDIR)\sdhc_sc2410.dll NK SH

注册表信息为
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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"

静态地址映射信息为
    DCD     0x91A00000, 0x5A000000,  1      ; SD Interface register



在系统启动之后看到SDCSDCard.dll和SDBusDriver.dll有加载。。

在插入和拔出SD卡时,有检测到中断SYSINTR_SDMMC_CARD_DETECT发生,但是系统没有任何反应,识别不到SD卡。是不是SYSINTR_SDMMC_CARD_DETECT的中断线程没有启动?我没发现这个处理函数的源码?还是没有源码?

我的硬件用EINT11,写保护为GPG5.。

最新回复

楼主的问题解决了吗?能否把最后的解决方法贴出来呢?  详情 回复 发表于 2010-5-25 10:50
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
还有sdhc_sc2410.dll 和SDCSDCard.DLL  有啥区别呢?网上搜索了一下,有的说SDCSDCard.DLL  调用sdhc_sc2410.dll ,也有的说用sdhc_sc2410.dll 替换掉sdhc_sc2410.dll 。。。我的猜测应该也是用来替换SDCSDCard.DLL  的,当不知道如何加载sdhc_sc2410.dll ?

 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\HostControllers\SDSC]
        "Dll"="SDCSDCard.dll"
        "Prefix"="SDC"

把上面改为
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\HostControllers\SDSC]
        "Dll"="sdhc_sc2410.dll "
        "Prefix"="SDH"

也无法加载。。。。在或者添加如下信息
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SDHC_SMDK2440]
    "Order"=dword:21
    "Dll"="sdhc_sc2440.dll"
    "Prefix"="SDH"
    ……

系统启动的时候也没有看到SDH_Init被调用。。。。。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
还查到一个信息就是SDCSDCard.dll用EINT16/GPG8来检测卡是否被插入,而我的硬件为EINT11/GPG5,导致SYSINTR_SDMMC_CARD_DETECT中断虽然产生,但是SDCSDCard.dll检测对应的引脚时检测不到设备,所以没反应?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
估计问题就在这里
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
还有sdhc_sc2410.dll 和SDCSDCard.DLL  有啥区别呢?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
不知道,没研究过
前边说的是sd host control驱动,属于整个驱动的最地层
以前看过资料 说是这样分层的
sdhc->sdbus->sdmemory
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 3 楼 foochow 的回复:
还查到一个信息就是SDCSDCard.dll用EINT16/GPG8来检测卡是否被插入,而我的硬件为EINT11/GPG5,导致SYSINTR_SDMMC_CARD_DETECT中断虽然产生,但是SDCSDCard.dll检测对应的引脚时检测不到设备,所以没反应?


我觉得问题很可能在这里。sdhc_sc2410.dll 没有源码吗?如果没有,那么请不要修改中断,否则就会楼主所说的现象。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
我用的是GEC 2410 5.0的BSP包,这个也是从4.2BSP移植过来的,SDCSDCard.DLL 应该是4.2中的SD控制器驱动。而5.0中有提供了三星的SD控制器源码,也就是sdhc_sc2410.dll ,这个要怎么移植到非标准(从4.2BSP移植而来)的5.0BSP包中呢?我在sdbus.dll,sdhc_sc2410.dll 的初始化函数中都加了调试信息,就是没有打印出来。注册表中也添加了相关信息:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SDHC_SMDK2410]
    "Order"=dword:21
    "Dll"="sdhc_sc2410.dll"
    "Prefix"="SDH"

[HKEY_LOCAL_MACHINE\Drivers\Builtin\SDBusDriver]
   "Order"=dword:15
   "Dll"="sdbus.dll"


系统启动之后看到sdbus.dll有加载,但是并没有看到的它的初始化函数有调用,而sdhc_sc2410.dll没有加载。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

10
 
据我所知,这个4.2BSP的file文件夹有SD相关的DLL,——没有提供源码的。

你在源码加调试信息,当然没有得到执行了。——因为你的BSP根本没有用到这个源码,被file的DLL给覆盖了

要不然你把那个BSP给我看看。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
4.2 BSP FILE下面的SD卡驱动文件
SDBusDriver.dll,SDCSDCard.dll
而标准5.0 BSP的驱动文件为sdbus.dll sdhc_sc2410.dll..


文件名不一样,应该不会存在覆盖的问题吧?而且我已经在bib文件中屏蔽了SDBusDriver.dll,SDCSDCard.dll
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

12
 
; 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
        sdhc_sc2410.dll                        $(_FLATRELEASEDIR)\sdhc_sc2410.dll                        NK        SH
        sdbus.dll                $(_FLATRELEASEDIR)\sdbus.dll                NK        SH

已经屏蔽了4.2的驱动,添加了5.0的驱动。。。
也添加了注册表项目
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SDHC_SMDK2410]
    "Order"=dword:21
    "Dll"="sdhc_sc2410.dll"
    "Prefix"="SDH"
    。。。。。。。。。。。。。


[HKEY_LOCAL_MACHINE\Drivers\Builtin\SDBusDriver]
   "Order"=dword:15
   "Dll"="sdbus.dll"


可是没有加载5.0的驱动,不知道啥原因?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

13
 
现在用老的驱动,在中断处理函数中设置对应引脚的电平,能够正常的识别SD卡,能够进行读写操作。但不知道有没有移植标准5.0 BSP中的SD驱动成功的?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
我的 2440 在4.2BSP和5.0BSP都可以。都说给源码我看看了。我就知道你的问题所在了。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

15
 
帮dd
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

16
 
BSP已经收到,是4.2BSP ,想增加5.0的SD上去需要很多修改
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
那我移植5.0的SD驱动到4.2上面,要做些什么修改呢?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 16 楼 foochow 的回复:
那我移植5.0的SD驱动到4.2上面,要做些什么修改呢?


就是中断申请的地方修改一下就可以了。很简单。

至于怎么改,我觉得你还是好好看看两者中断差异,我的博客有不少wince5.0 中断的介绍。
我在4.2——》5.0移植过好多驱动,比较简单的。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

19
 
uping
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

20
 
用5.0吧,感觉设计比较合理
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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