zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
阅读:1187回复:8

WinCE下SD卡初始化结束后无法在wince目录显示出来

楼主#
更多 发布于:2007-05-21 12:41

本人的SD卡驱动现已经能加载Sdmemory.dll. 
但是在加载完之后还会发CMD17这个命令,
是不是在加载完sdmemory.dll之后。
在wince的目录下面是不是就会显示出一个SD卡的目录来(和U盘一样的那种)?
不过我初始化结束之后。显示不了。会是什么问题哪?
各位大虾帮忙看看,谢谢了。
下面是加载后的调试信息:
0x8ce73100: SDSetCardInterfaceForSlot - HC ClockRate differs desired setting: desired: 25000000 Hz, Actual : 24000000 Hz
0x8ce73100: DEVICE!RegReadActivationValues RegQueryValueEx (\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class\BusPrefix) returned 2
0x8ce73100: SDMemory: +SMC_Init
0x8ce73100: SDGetDeviceHandle: ActivePath: Drivers\Active\4294967290
0x8ce73100: SDGetClientFunctions: +Init
0x8ce73100: SDGetClientFunctions: -Init
0x8ce73100: SDMemCalcDataAccessClocks: Tpd:f ns, Asynch: f ns, AsyncClocks:0 , SyncClocks: 1078231040, ReadTotal: 0, Write Factor: 1074528256 WriteTotal: 0
0x8ce73100: BusRequestHandler starts (CMD:16)
0x8ce73100: SendCommand (this:0x000406c0,Cmd:0x0010,Arg:0x00000200, ResponseType:0x0001,bDataTransfer:0x0) starts
0x8ce66d10: GetCommandResponse started
0x8ce73100: SDMemory: Initialize: Using block transfer size of 64 blocks
0x8ce73100: SDMemory: Idle Timeout: 2000 Idle Power State: 2
0x8ce73100: SDMemory: Power Management Setup complete
0x8ce73100: SDMemory: -SMC_Init
0x8cf95000: [NOTIFY] HandleSystemEvent 7 /ADD DSK1:
0x8cfcb640: SDMemory: GetDeviceInfo - Profile = SDMemory, length = 18
0x8cfcb640: SDMemory: GetStorageID Insufficient buffer space
SDMemory: -GetStorageID
0x8cfcb640: Loading partition driver mspart.dll hModule=8CDDDF10
0x8cfcb640: Driver mspart.dll loaded
0x8cfcb640: BusRequestHandler starts (CMD:17)
0x8cfcb640: SendCommand (this:0x000406c0,Cmd:0x0011,Arg:0x00000000, ResponseType:0x0001,bDataTransfer:0x1) starts
0x8ce66d10: GetCommandResponse started
0x8cfcb640: Opened the store hStore=000B1A20
0x8cfcb640: BusRequestHandler starts (CMD:17)
0x8cfcb640: SendCommand (this:0x000406c0,Cmd:0x0011,Arg:0x00000000, ResponseType:0x0001,bDataTransfer:0x1) starts
0x8ce66d10: GetCommandResponse started
0x8cfcb640: NumSec=182464 BytesPerSec=512 FreeSec=0 BiggestCreatable=0
做一个出色的程序员!
ddnewbie
驱动牛犊
驱动牛犊
  • 注册日期2003-07-25
  • 最后登录2009-04-13
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-21 17:49
关注。。。
[img]D:gs.jpg[/img]
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-22 20:50
把FAT文件系统加上,才可能出现目录.把存储管理器也加上,方便执行格式化等操作.
学海无涯
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-23 08:51
谢谢斑竹了。
文件已经系统加上了,但是在目录下还是无法出现。
加载SDmemory是会出现:
0x8cfcb640: SDMemory: GetStorageID Insufficient buffer space
                       SDMemory: -GetStorageID

错误发生在下面(位于sdmemmain.cpp)这句话。

其中cBytes大小为:cBytes   ---- Size of psid buffer(微软给的注释)。

那么cBytes 和sizeof(*psid)永远就是相等的(Debug 的时候两者也相等),

其不是cBytes < (sizeof(*psid)+SD_SIZEOF_STORAGE_ID) 一直会成立,

不知道是我的理解的有问题吧?还是?斑竹是否遇到过类似的问题。

  if( cBytes < (sizeof(*psid)+SD_SIZEOF_STORAGE_ID) ) {

        DEBUGMSG( SDCARD_ZONE_ERROR, (TEXT("SDMemory: GetStorageID Insufficient buffer space\r\nSDMemory: -GetStorageID\r\n")));

        return ERROR_INVALID_PARAMETER;

}
做一个出色的程序员!
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-23 12:02
这是驱动bug,改成如下
if( cBytes < (sizeof(*psid)+SD_SIZEOF_STORAGE_ID) ) {
    psid->dwSize = sizeof(*psid)+SD_SIZEOF_STORAGE_ID;
    DEBUGMSG( SDCARD_ZONE_ERROR, (TEXT("SDMemory: GetStorageID
Insufficient buffer space\r\nSDMemory: -GetStorageID\r\n")));
    return ERROR_INSUFFICIENT_BUFFER;
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-05-23 12:43
谢谢。
好的,我修改一下试试。楼上也遇到这个问题了??
做一个出色的程序员!
ddnewbie
驱动牛犊
驱动牛犊
  • 注册日期2003-07-25
  • 最后登录2009-04-13
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-05-23 15:45
wenzai ,你好,
改过之后,
这个函数可以过,
但是还是无法显示在mydevice下面...
知道什么原因不?
谢谢了。。。
[img]D:gs.jpg[/img]
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-05-23 20:37
你的注册表信息是什么?
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-24 12:32
我的注册表加载了sdbus.dll,sdmemory.dll,
还有就是sdhost.dll.

难道还有别的什么吗?

就这些就对了吧?

谢谢。
做一个出色的程序员!
游客

返回顶部