阅读:2216回复:12
做过的请进,加载不上sdmemory.dll
在调试基于pxa270的主板的sd卡部分的时候,发现windowsce能够加载上sdbus.dll和sdhc_mainstoneii.dll,却加载不上sdmemory.dll 。采用pb5.0
下面是热插拔sd卡时候的调试信息,请各位指点。谢谢 4294834678 PID:46fc4402 TID:86df2fde 0x86dec400: SD Card Power Off! 4294838640 PID:46fc4402 TID:86df2fde 0x86dec400: SD Card Insertion! 4294838640 PID:46fc4402 TID:86df2fde 0x86dec400: SD Card Power On! 4294839242 PID:46fc4402 TID:c6df20f2 0x86df6000: SDGetClientFunctions: +Init 4294839242 PID:46fc4402 TID:c6df20f2 0x86df6000: SDGetClientFunctions: -Init 4294839544 PID:46fc4402 TID:c6df20f2 SDHSlotOptionHandler - called - SetSlotInterface : Clock Setting: 100000 4294839544 PID:46fc4402 TID:c6df20f2 SDHSlotOptionHandler - called - SetSlotInterface : setting for 1 bit mode 4294839545 PID:46fc4402 TID:c6df20f2 0x86df6000: SDSetCardInterfaceForSlot - HC ClockRate differs desired setting: desired: 100000 Hz, Actual : 312500 Hz 4294839546 PID:46fc4402 TID:86df2bf6 HandleEndCommandInterrupt: response for command 5 , timed - out 4294839547 PID:46fc4402 TID:86df2bf6 0x86df6880: SDBusDriver: Retrying request 0x005C4B10, Current retry count: 3 4294840046 PID:46fc4402 TID:c6df20f2 0x86df6000: SDBusDriver: SDIO Device reports zero Functions ! 4294840046 PID:46fc4402 TID:c6df20f2 0x86df6000: SDBusDriver: Work Item exiting because of failure : 0xC0000017 |
|
|
沙发#
发布于:2008-04-15 09:55
你插的是SDIO卡??貌似命令执行有误,把你的SD memory当成了SDIO卡。
如果是SD memory卡不会对CMD5相应的。 |
|
|
板凳#
发布于:2008-04-15 10:01
我需要换sd卡再测试,还是得改代码呢?
|
|
|
地板#
发布于:2008-04-15 10:24
可能需要改代码。你确定sdhc_mainstoneii.dll驱动好用吗?
|
|
|
地下室#
发布于:2008-04-15 11:39
谢谢回复。
sdhc_mainstoneii.dll能够加载上,我跟踪发现detect中断也能够响应(通过SD Card Insertion! SD Card Power On!这条论断的) “HandleEndCommandInterrupt: response for command 5 , timed - out ”这条语句是在AddNewDevice的时候出现的。 怎么确认sdhc_mainstoneii.dll能够正常工作啊? 如果出现这种现象一般是host driver的哪一部分代码没有处理好呢?? |
|
|
5楼#
发布于:2008-04-15 11:58
我查看了一下host driver的注册表发现"prefix" = SDH
我是不是得找个sdio卡测试一下? |
|
|
6楼#
发布于:2008-04-15 13:17
应该不用,如果你是SD memory卡的话,
CMD5一般需要发3次,会出现你说的三次HandleEndCommandInterrupt: response for command 5 , timed - out 。 估计是host driver有问题,需要看sendcommad 和Getresponse这两个函数。 |
|
|
7楼#
发布于:2008-04-15 13:40
谢谢,我看看host代码去。过后再跟你请教
|
|
|
8楼#
发布于:2008-04-23 15:03
前一段时间一直在忙其他的.最近才又看这个.
我看了一下驱动,发现这个是在host发送了 CMD5之后.我插入的卡对发送的命令响应,但是从response读取出来的 numFunctions等于0,导致软件退出的. (numFunctions = SD_GET_NUMBER_OF_FUNCTIONS(&response)) 我查看SDIO的datasheet得知,"Note that a SD memory only card may respond to a CMD5. The proper response for a memory only card would be Memory Present = 1 and Number of I/O Functions = 0" 请教各位对于这种的sd卡得如何的初始化,并且如何的判断sd的类型呢?谢谢了 |
|
|
9楼#
发布于:2008-04-24 16:32
如果该主板的mmc/sd/sdio控制器支持3.2版本的mmc卡,1.01版本的sd卡,1.0版本的sdio卡,那我是不是得找符合这个版本的卡测试,高版本的不行哦???是这样子吗
|
|
|
10楼#
发布于:2008-04-26 10:47
你改成numFunctions等于0不退出,继续往下检测卡类型不就可以了吗?
............... numFunctions = SD_GET_NUMBER_OF_FUNCTIONS(&response); memoryPresent = SD_MEMORY_PRESENT_WITH_IO(&response); if (numFunctions != 0) { //SDIO or SD combo ...... } else { // if memory present, continue init phase if (memoryPresent) { DbgPrintZo(SDBUS_ZONE_DEVICE, (TEXT("SDBusDriver: SDIO Card reported zero function and memory presented \n"))); } else { DbgPrintZo(SDCARD_ZONE_ERROR, (TEXT("SDBusDriver: SDIO Device reports zero Functions ! \n"))); status = SD_API_STATUS_DEVICE_UNSUPPORTED; goto exitInit; } } |
|
11楼#
发布于:2008-04-28 14:16
恩,加上了,也测试了,还是跑到了
SDBusDriver: SDIO Device reports zero Functions ! \n"))); 看来memoryPresent=0; 我调试时打印出了debug信息,看到response都是0x00,why?? |
|
|
12楼#
发布于:2008-04-29 09:54
嗯,查看了一下,当发第二次cmd5的时候sd卡响应了.第一次的没有响应.郁闷中
|
|
|