阅读:3183回复:1
在WINCE5.0上实现通过USB device访问大容量SD卡问题
在对机器上的存储媒介做mass storage的时候出现了这么个问题..
系统是WINCE5.0 芯片是S3C2443 用Serial方式时SD卡可支持到8G,并能全部映射出去在PC机上显示出来. 但是用mass storage则出现问题: 具体现象是这样的:2G以下的卡通过USB MASS STORAGE PC能正常识别. 2G以上的卡PC提示"无法识别的设备" 不插卡 PC提示"设备无法启动" 我们做了跟踪,得出的结论是SD卡驱动的问题. 但是不能确定是PB上SD卡程序问题还是BSP部分程序问题. 跟踪步骤如下: 1.插入8G卡 并连接PC. 2.CE程序运行到...../USBFN/CLASS/STORAGE/TRANSPORT/BOT/BOT.CPP文件中的函数 BOT_DeviceNotify( ) { ................. case UFN_ATTACH: { DEBUGCHK(!g_fStoreOpened); DWORD dwRet = STORE_Init(g_szActiveKey); if (dwRet != ERROR_SUCCESS) { ERRORMSG(1, (_T("%s Failed to open store\r\n"), pszFname)); } else { g_fStoreOpened = TRUE; } break; } ...................... } 出现打印Failed to open store 说明DWORD dwRet = STORE_Init(g_szActiveKey); 失败了 3. 继续跟踪进入STORE_Init()函数 ...../USBFN/CLASS/STORAGE/EMULATION/SCSI2/BLOCK/BLOCK.CPP文件中的函数 STORE_Init() { ................. // read name of store to expose cbData = sizeof(g_szDeviceName); dwError = RegQueryValueEx(hKey, PRX_DEVICE_NAME_VAL, NULL, &dwType, (PBYTE) g_szDeviceName, &cbData); //得到SD卡的名字 "DSK1" .................... // open store g_hStore = OpenStore(g_szDeviceName); if ((g_hStore == NULL) || (g_hStore == INVALID_HANDLE_VALUE)) { dwError = GetLastError(); DEBUGMSG(ZONE_ERROR, (_T( "%s failed to open store %s; error = %u\r\n" //这里打印出 failed to open store ), pszFname, g_szDeviceName, dwError)); goto EXIT; } ............... } 这里打印出 failed to open store 说明OpenStore()函数打开错误. 也就是打开8G的SD卡操作失败了. 另外要问一下, OpenStore()打开SD卡后 紧跟着是运行SD卡的哪部分? |
|