tyris
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-12-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望105点
  • 贡献值0点
  • 好评度75点
  • 原创分0分
  • 专家分0分
阅读:3552回复:12

在WINCE5.0下实现了双SD卡的驱动,但是盘符的顺序会发生改变,请教高手如何固定盘符的顺序。

楼主#
更多 发布于:2008-01-14 15:13
在WINCE5.0下实现了双SD卡的驱动,但是盘符的顺序会发生改变,

就是盘符和硬件上的对应顺序不固定,

如:硬件上是大卡和小卡,

开机时,大卡有时对应SD,小卡对应SD2。但是有时又反过来,大卡对应SD2,小卡对应SD。

请教高手如何固定盘符的顺序。

多谢!
wd1394
驱动牛犊
驱动牛犊
  • 注册日期2001-09-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望48点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-01-14 16:33
可以在注册表里面设定区分2个槽,另外SDBus驱动大概也要修改,比如
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class]
    "Dll"="SDMemory.dll"
    "Profile"="SDMemory"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory]
    "Folder"="SD"

[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory2_Class]
    "Dll"="SDMemory.dll"
    "Profile"="SDMemory2"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory2]
    "Folder"="SD2"

修改SDBus驱动,当发现是小卡插入时,让BUS驱动去加载[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory2_Class]路径下的SDMemory驱动,否则加载[SDMemory_Class]下的驱动。
默认情况下,系统只会在后发现的卡后面加2。
tyris
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-12-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望105点
  • 贡献值0点
  • 好评度75点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-01-15 10:40
搞定了,多谢!
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-01-15 10:56
能否介绍一下双SD卡的驱动是怎么实现的?
谢了
做一个出色的程序员!
tyris
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-12-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望105点
  • 贡献值0点
  • 好评度75点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-01-15 15:19
具体我也没有做多少工作,

1、确保SD卡cd脚的中断检测,我是将原先的PCMCIA的中断号改为了SD卡2的。

2、在SD卡的驱动初始化的时候返回2个SD卡。

3、其它的地方我的驱动里面都差不多原先就写好了。

个人认为主要是中断响应连接上了就可以了。
hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-01-22 22:44
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory2_Class]
    "Dll"="SDMemory.dll"
    "Profile"="SDMemory2"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory2]
    "Folder"="SD2"
可以这样设置注册表吗?
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory2_Class]
这个路径SD Bus Driver是不能辨识的。
一般只有下面两种情况:
1. 缺省路径
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class]
2. Customize 路径
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Custom\CID-M-AA-PPPPP]

tyris 你是怎么实现的?
http://hanson.cnblogs.com/
tyris
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-12-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望105点
  • 贡献值0点
  • 好评度75点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-01-23 09:31
注册表我没有做任何更改。主要是在驱动里面要配置要2个SD卡就可以了。1。分别响应中断使能。2,配置SD卡。配置SD卡的主要是配置端口。其他地方的程序都是一样 的。
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-01-23 11:52
引用第6楼tyris于2008-01-23 09:31发表的  :
注册表我没有做任何更改。主要是在驱动里面要配置要2个SD卡就可以了。1。分别响应中断使能。2,配置SD卡。配置SD卡的主要是配置端口。其他地方的程序都是一样 的。


你用的那个驱动改的??
Samsung2410的??分三层的吗??
做一个出色的程序员!
hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-01-23 22:35
呵呵,我没有做过两个slot的SD驱动,但是,我估计这个做法应该和SDIO有两个Functions或Combo SDIO卡是一样的原理吧。都是分别去Load相应的Client端驱动。

但是,如你所说,如果要显示两个不同的Folder (eg: SD, SD2)的话,就必须要有注册表设置两个SDMemory项,且有两个不同的“Folder”。

还有一种可能的情况是,两个SD Slot 共用同一个Client端注册表设置,当第二个SD Memory卡插入时,Load相同的SDMemory.dll,且“Folder”的名字自动加一,即“SD2”。但这样的话,就会出现tyris 沙发上提出的两个SD卡的Folder名字不能固定的问题 (因为只要两次SD卡的插入顺序不同,就会出现这种情况)。 一种解决办法就是Customize 注册表 [HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Custom\CID-M-AA-PPPPP]。

但是,tyris 你是怎么实现的呢?
你说的 配置端口(CD, Write Protected),中断使能IST,这些都是要在初始化完成的,但是SD Memory卡还必须加载SDMemory Client驱动和文件系统,虽然对于单个SD Slot会有缺省值,但是你的两个Slot情况就特殊些了。 个人认为需要定制

zhuxiaofeng 我用的是Mainstoneii平台。
http://hanson.cnblogs.com/
tyris
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-12-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望105点
  • 贡献值0点
  • 好评度75点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-01-28 15:57
以下是我的情况。
还有一种可能的情况是,两个SD Slot 共用同一个Client端注册表设置,当第二个SD Memory卡插入时,Load相同的SDMemory.dll,且“Folder”的名字自动加一,即“SD2”。

我解决的办法是,由于SD卡的外部中断我是先通过CPLD控制后传给CPU的,所以我的中断使能可控,所以更改了CPLD的程序即可。

我用的是AU1200的平台
hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-01-29 23:51
tyris

能否解析介绍下,还不是很清晰,谢谢先!

另外,你的两个Slot硬件实现上,是公用同一个硬件中断,还是两个独立的硬件中断呢?

最后,求证一点的是:
你的两个SD卡文件夹,也就是盘符,现在已经实现了对固定的SD卡,即例如大卡对SD,小卡对SD2,而不论两个卡的插入先后顺序如何?对吧?
http://hanson.cnblogs.com/
tyris
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-12-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望105点
  • 贡献值0点
  • 好评度75点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-01-31 18:10
我的硬件用的不是同一个中断,只是我通过外部CPLD的控制可以让另外一个中断晚一点到,两个SD卡的盘符不是固定的,
因为我的产品特性只要求在开机的时候,当两张卡都插入的情况下,盘符固定,这个 我可以做到。
hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-01-31 20:03
引用第11楼tyris于2008-01-31 18:10发表的  :
我的硬件用的不是同一个中断,只是我通过外部CPLD的控制可以让另外一个中断晚一点到,两个SD卡的盘符不是固定的,
因为我的产品特性只要求在开机的时候,当两张卡都插入的情况下,盘符固定,这个 我可以做到。


OK,  现在就非常了解需求了。
http://hanson.cnblogs.com/
游客

返回顶部