7835|16

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SD卡驱动休眠与唤醒 [复制链接]

我的平台是PXA270+wince5.0.
又有问题请教大家,我的SD卡驱动可以识别SD Memory卡,装好WIFI SDIO的驱动后,也可以使用SDIO的wifi SD卡。现在有一个问题是,系统suspend后,在wakeup回来,SD memeory卡是仍然可以被识别的,但是wifi SD卡却不能认到,必须将wifi sd卡拔下来,再插回去,才能重新被识别。
wifi SD卡的驱动是厂商提供的,我们没有办法更改。我们想,可能是WIFI SD卡需要接收到一个Detect命令才能开始工作,但是我查看了我们的SD卡驱动和suspend/wakeup的串口信息,发现,在系统启动的时候,会执行SD卡的初始化工作,其中包括初始化中断,和响应中断的进程。但是suspend再wakeup回来,系统却没有执行初始化的工作,启动时相关的串口信息wakup时就看不到了。所以,我们想在wakup回来的时候,操作一下SD卡,不知道该怎么办。
如果wakup回来并没有执行SD卡初始化,为什么memory卡会被识别呢?关于SD卡休眠和唤醒的流程,可否请大家帮忙提点一下。
谢谢。

最新回复

好帖 mark  详情 回复 发表于 2010-5-13 11:31
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没有做过,不过我看suspend/wakeup这些东西有蛮多代码的,貌似有保存一些信息的功能
你找到那些代码来看看。我想是不是可以把你不能发现的那个驱动的一些信息放在那里呢,?

楼主搞好多东西啊,羡慕,羡慕。一下子键盘,一下子WIFI。
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在系统Suspend/Resume的过程中给Slot的供电还有吗?
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
路过 帮顶。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
SD卡驱动一般都是流式驱动,所以休眠和唤醒都是通过标准的接口,XXX_PowerUp和XXX_PowerDown,而且好象一般都不支持POWER的几个IOCTL
SD卡驱动可以做成suspend时候不断电,这样Resume后可以继续原来的操作

但对SDIO的驱动有点记不太清楚了,早期我们的系统也是支持SDIO的,但忘记Resume后的情况了
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个应该是你的wifi驱动有问题,你可以问问供应商,看他们的驱动是否支持suspend/resume。

当然也可以做成sd驱动不受电源管理控制,这样就是睡眠的时候耗电大一点。

顺便问一声,你的wifi模组用的是哪家的?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(中级)

7
 
SD的驱动要正确处理PowerUp/PowerDown handler才行,否则不能正常工作的。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢大家,看来SDIO和SD memory的驱动分开的。SDIO的驱动是厂商给的cab文件,不能修改,我和厂商确认一下是否支持suspend/resume.
我用的不是SDIO的模组,是SD样式的wifi sd卡,直接插在卡槽中的,呵呵,所以没有驱动代码。SDIO的模组可以选海华,USI,村田,都可以的。厂商也都可以提供驱动支持。
现在SD卡suspend时是断电的,我再试一下不断电可不可以。
非常感谢。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
你可能理解错了,270的SDIO驱动是bsp中已经做了的,这个驱动只是提供一个统一的SDIO Card的接口,可以接WIFI卡、DVB-TH卡、RFID卡等等。

而WIFI厂商提供的驱动,是为了通过SDIO接口与自己的WIFI卡通讯,进行配置和读取,并将自身在系统里面注册成一个WLAN设备的。

就像同样是USB设备,USB MassStorage/USB Mouse/USB Keyboard都是接在这个USB口上,但是在系统层,都需要不同的上层驱动,才能在系统注册成具体的USB设备。
===================================================================
一般唤醒时,会执行驱动的POWERON。这个驱动就是指bsp中的SDIO的驱动。

插拔卡的时候,会有一个引脚产生沿的变化,能触发IO口的沿变化中断,所以驱动能接收这个中断从而知道卡插入了。

唤醒时无法自动识别卡,是因为在POWERON的时候,IO口是不变的电平(因为没有插拔卡的动作),那么就不会触发中断;而驱动又没有主动去查找卡是否存在,所以也就不知道有卡的存在了。
===================================================================
你需要做的,就是在POWERON的时候,主动读一下表示Card插入的IO口(SD Detect),如果确认有卡在,那么就去做插拔卡时触发的中断所做的事情,其他就不需要动了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
1 在你的SD Host Controller驱动中的Power Down肯定有调用SDHCDPowerUpDown,注意第二个参数设置TRUE。这样上层就不会通知client 驱动退出。

2 client驱动需要在Powern Down的时候把自己置成低功耗状态,你采用第三方的WIFI驱动,suppose他们的驱动已经做到了。

3 HCD代码里,注意对SD卡和SD WIFI的区别对待,逻辑上认为WIFI肯定在即可
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
xuexi,学习
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 
一起学习。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
参考专家解释
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
非常感谢,我再研究一下SD那边的代码再回来报告。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 
经过研究代码发现,SD驱动在Powerup的时候执行了一个函数SimulateCardInsertion,这个函数已经模拟了一次SD卡的插拔过程,通过串口信息也发现这个函数被正确的执行了。这样我就明白了SD memory卡为什么可以在suspend后被正确的识别了。
这样看来,我用的这个SDIO wifi卡还是有些问题。
到这里基本上已经明白了,非常感谢大家,结贴给分,大家新年快乐!
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

16
 
雁过留声
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

17
 
好帖 mark
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表