阅读:1910回复:16
请问使用mainstoneIII下CF驱动问题?
根据自己板子修改好PDD层,现在能够检测到KINGSTON-CF_CARD_1GB,试过两张不同的KINSTON CF卡,打印出系列号不一样。但是在读CIS的时候出错,详细信息如下:先拔卡再插卡打印的信息,gerryzhou是PDD层自己添加的注释
0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=0,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardSetWindow 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardSetWindow 0x83d8c400: CardBus.DLL DLL_PROCESS_DETACH 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardSetWindow 0x83d8c400: gerryzhou--PDCardGetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=0,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou--PDCardSetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x65bfc4c,m_pBridge=0x4c57e0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d8c400: pState->fVcc=0,pState->uVpp1=0,pState->uVpp2=0 0x83d8c400: m_SockState.fVcc=0,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 0x83d8c400: gerryzhou--PDCardGetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=0,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou--PDCardSetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x65bfc7c,m_pBridge=0x4c57e0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d8c400: pState->fVcc=0,pState->uVpp1=0,pState->uVpp2=0 0x83d8c400: m_SockState.fVcc=0,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 0x83d8c400: gerryzhou--CPcmciaBusBridge::RemovePcmciaCardSocket 0x83d8c400: gerryzhou--CPcmciaBusBridge::ThreadRun-remove1. 0x83d8c400: gerryzhou--++CPcmciaCardSocket::CPcmciaCardSocket. 0x83d8c400: gerryzhou--CPcmciaCardSocket::MapDeviceRegisters. 0x83d8c400: PCCARD: PCMCIA (dwWinIndex=0) memory window created 0x83d8c400: PCCARD: PCMCIA (dwWinIndex=1) memory window created 0x83d8c400: PCCARD: PCMCIA (dwWinIndex=0) memory window created 0x83d8c400: PCCARD: PCMCIA (dwWinIndex=1) memory window created 0x83d8c400: gerryzhou--CPcmciaBusBridge::InsertPcmciaCardSocket--test. 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou-- PDCardInquireSocket 0x83d8c400: gerryzhou--PDCardGetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou-- PDGetPowerEntry 0x83d8c400: gerryzhou-- PDCardInquireWindow 0x83d8c400: gerryzhou-- PDCardInquireWindow 0x83d8c400: gerryzhou-- PDCardInquireWindow 0x83d8c400: gerryzhou-- PDCardInquireWindow 0x83d8c400: gerryzhou-- PDCardResetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardResetSocket. 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardResetSocket--bCardDetectStatus=1. 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardResetSocket--test0. 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardResetSocket--uiCardVoltage=1. 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardGetWindow 0x83d8c400: gerryzhou-- PDCardSetWindow 0x83d8c400: gerryzhou--PDCardGetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou--PDCardSetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x65bfab8,m_pBridge=0x4c57e0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d8c400: pState->fVcc=1,pState->uVpp1=0,pState->uVpp2=0 0x83d8c400: m_SockState.fVcc=1,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardResetSocket--test6. 0x83d8c400: gerryzhou--PDCardGetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou--PDCardGetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d8c400: gerryzhou--slot num =0. 0x83d8c400: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d8c400: gerryzhou--PDCardSetSocket 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x65bfca4,m_pBridge=0x4c57e0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d8c400: pState->fVcc=1,pState->uVpp1=0,pState->uVpp2=0 0x83d8c400: m_SockState.fVcc=1,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d8c400: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 0x83d8c400: gerryzhou--CPcmciaBusBridge::InsertPcmciaCardSocket. 0x83d8c400: gerryzhou--CPcmciaBusBridge::ThreadRun-remove2. 0x83b8d000: GetCardCRC: CardGetNextTuple returned fails 0x83b8d000: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\PCCARD\PCMCIA\INSTANCE\PCMCIA1\Prefix) returned 2 0x83b8d000: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\PCCARD\PCMCIA\INSTANCE\PCMCIA1\BusPrefix) returned 2 0x83b8d000: CardBus.DLL DLL_PROCESS_ATTACH 0x83b8d000: GetCardCRC: CardGetNextTuple returned fails 0x83d61dac: ATADISK: DLL_PROCESS_ATTACH 0x83d61dac: ATADISK: DLL_PROCESS_DETACH 0x83d61dac: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\PCMCIA\KINGSTON-CF_CARD_1GB-571F\BusPrefix) returned 2 0x83d61dac: ATADISK: DLL_PROCESS_ATTACH 0x83d61dac: ATADISK: DSK_Init 0x83d61dac: ATADISK: Attempting to register with PCMCIA.DLL 0x83d61dac: gerryzhou-- PDCardGetWindow 0x83d61dac: gerryzhou-- PDCardGetWindow 0x83d61dac: gerryzhou-- PDCardGetWindow 0x83d61dac: gerryzhou-- PDCardSetWindow 0x83d61dac: CPcmcia::PcmciaCardMapWindow() : ! IO Space 0x83d61dac: ATADISK: pATAReg = 0x6901f0 0x83d61dac: gerryzhou-- PDCardGetWindow 0x83d61dac: gerryzhou-- PDCardGetWindow 0x83d61dac: gerryzhou-- PDCardGetWindow 0x83d61dac: gerryzhou-- PDCardSetWindow 0x83d61dac: CPcmcia::PcmciaCardMapWindow() : ! IO Space 0x83d61dac: ATADISK: pATARegAlt = 0x6c03f6. v_MemGran = 1 0x83d61dac: ATADISK: Using 16 bit I/O 0x83d61dac: gerryzhou--PDCardGetSocket 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d61dac: gerryzhou--slot num =0. 0x83d61dac: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d61dac: gerryzhou--PDCardSetSocket 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x660e698,m_pBridge=0x4c57e0 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d61dac: pState->fVcc=1,pState->uVpp1=0,pState->uVpp2=0 0x83d61dac: m_SockState.fVcc=1,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 0x83d61dac: PCMCIA!PCIRequestResources: I/O Resource Manager request for IRQ 75 failed 0x83d61dac: gerryzhou--PDCardGetSocket 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d61dac: gerryzhou--slot num =0. 0x83d61dac: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d61dac: gerryzhou--PDCardSetSocket 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x660e6b0,m_pBridge=0x4c57e0 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d61dac: pState->fVcc=1,pState->uVpp1=0,pState->uVpp2=0 0x83d61dac: m_SockState.fVcc=1,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 0x83d61dac: PCMCIA: DEBUGCHK failed in file d:\wince500\public\common\oak\drivers\pccard\pcmcia\pcmcia.cpp at line 1482 0x83d61dac: DEBUG_BREAK @0248d330 MD=1f Ignored. 0x83d61dac: ATADISK: CardRequestIRQ failed 33 0x83d61dac: ATADISK: ATAConfig failed 33 0x83d61dac: DEVICE!LaunchDevice: Init() failed for device 0x00639cc0 0x83d61dac: DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK, index 1, dll ATADISK.DLL, context 0x660f130 0x83d61dac: ATADISK: DLL_PROCESS_DETACH 0x83d61dac: PCMCIA:LoadPCCardDriver: ActivateDeviceEx('Drivers\PCMCIA\KINGSTON-CF_CARD_1GB-571F') failed 110 0x83d61dac: gerryzhou--PDCardGetSocket 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardGetSocket--begin. 0x83d61dac: gerryzhou--slot num =0. 0x83d61dac: gerryzhou--bCardDectStatus=1,bIRQReadyStatus=1,bBvd1Status=0. 0x83d61dac: gerryzhou--PDCardSetSocket 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.pState=0x660f898,m_pBridge=0x4c57e0 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett. in1 0x83d61dac: pState->fVcc=0,pState->uVpp1=0,pState->uVpp2=0 0x83d61dac: m_SockState.fVcc=1,m_SockState.uVpp1=0,m_SockState.uVpp2=0 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.int 2 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett--test3. 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardPowerHandler--beginxx. 0x83d61dac: INFO: Setting PCCARD slot 0 voltage to 0v (off). 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett.in 3 0x83d61dac: gerryzhou--CPcmciaCardSocket::CardSetSockett--finish. 请问这会是什么原因呢? |
|
沙发#
发布于:2007-11-30 08:58
插入卡后的debug信息如下:
0x83d91d88: PCCARD: PCMCIA (dwWinIndex=0) memory window created 0x83d91d88: PCCARD: PCMCIA (dwWinIndex=1) memory window created 0x83d91d88: PCCARD: PCMCIA (dwWinIndex=0) memory window created 0x83d91d88: PCCARD: PCMCIA (dwWinIndex=1) memory window created 0x83b732f0: GetCardCRC: CardGetNextTuple returned fails 0x83b732f0: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\PCCARD\PCMCIA\INSTANCE\PCMCIA1\Prefix) returned 2 0x83b732f0: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\PCCARD\PCMCIA\INSTANCE\PCMCIA1\BusPrefix) returned 2 0x83b732f0: CardBus.DLL DLL_PROCESS_ATTACH 0x83b732f0: GetCardCRC: CardGetNextTuple returned fails 0x83d8ca40: DEVICE!RegReadActivationValues RegQueryValueEx(Drivers\PCMCIA\KINGSTON-ELITE_PRO_CF_CARD_1GB-C6B2\BusPrefix) returned 2 0x83d8ca40: ATADISK: DLL_PROCESS_ATTACH 0x83d8ca40: ATADISK: DSK_Init 0x83d8ca40: ATADISK: Attempting to register with PCMCIA.DLL 0x83d8ca40: CPcmcia::PcmciaCardMapWindow() : ! IO Space 0x83d8ca40: ATADISK: pATAReg = 0x6001f0 0x83d8ca40: CPcmcia::PcmciaCardMapWindow() : ! IO Space 0x83d8ca40: ATADISK: pATARegAlt = 0x6903f6. v_MemGran = 1 0x83d8ca40: ATADISK: Using 16 bit I/O 0x83d8ca40: PCMCIA!PCIRequestResources: I/O Resource Manager request for IRQ 75 failed 0x83d8ca40: PCMCIA: DEBUGCHK failed in file d:\wince500\public\common\oak\drivers\pccard\pcmcia\pcmcia.cpp at line 1482 0x83d8ca40: DEBUG_BREAK @0249d330 MD=1f Ignored. 0x83d8ca40: ATADISK: CardRequestIRQ failed 33 0x83d8ca40: ATADISK: ATAConfig failed 33 0x83d8ca40: DEVICE!LaunchDevice: Init() failed for device 0x00611190 0x83d8ca40: DEVICE!I_ActivateDeviceEx: couldn't activate: prefix DSK, index 1, dll ATADISK.DLL, context 0x65af3c0 0x83d8ca40: ATADISK: DLL_PROCESS_DETACH 0x83d8ca40: PCMCIA:LoadPCCardDriver: ActivateDeviceEx('Drivers\PCMCIA\KINGSTON-ELITE_PRO_CF_CARD_1GB-C6B2') failed 110 0x83d8ca40: INFO: Setting PCCARD slot 0 voltage to 0v (off). |
|
板凳#
发布于:2007-11-30 09:31
请问CF存储卡的厂商ID是否已经读到了?CF卡读取过程中在PDD层使用ready/busy信号,但是MDD层还需要用吗?是不是就是clientIRQ?
|
|
地板#
发布于:2007-11-30 10:37
哦,已经解决,一定要使用clientIRQ
|
|
地下室#
发布于:2007-12-11 08:59
gerryzhou
能否介绍一下CF卡在CE5.0下面的目录结构以及结构? 谢谢。 |
|
|
5楼#
发布于:2007-12-11 12:26
1。pdd层在bsp的driver目录下:pccard(不同处理器名字可能不同),主要要针对自己的硬件修改这部分的代码
2。mdd层代码public\common\oak\drivers\pccard,pcmcia mdd层代码。不用修改 3。atapi在public\common\oak\drivers\block\atapi,不用修改 |
|
6楼#
发布于:2007-12-11 13:50
谢谢。。
|
|
|
7楼#
发布于:2007-12-27 22:42
gerryzhou,请问一下,你说的针对硬件的修改主要是指哪些方面?我用的是intel 自己的PXA27x developer's kit, 那是不是不需要修改了? 谢谢~~
|
|
8楼#
发布于:2007-12-28 08:38
主要是pdd层对FPGA操作部分,需要修改成跟自己硬件板子相符合
|
|
9楼#
发布于:2007-12-28 16:05
gerryzhou,请问一下,支持CF卡的话,PB的feature里哪些是必须要选的?比如ATADISK等等的。。。
|
|
10楼#
发布于:2007-12-29 08:34
ATADISK就够了,在加上自己的pcmcia驱动
|
|
11楼#
发布于:2007-12-29 08:45
那组件中的atadisk和public\common\oak\\DRIVERS\BLOCK\ATADISK 下面的atadisk有什么关系??
因为看你前面的回答是mdd层代码public\common\oak\drivers\pccard。而非public\common\oak\\DRIVERS\BLOCK\ATADISK 。。。 谢谢。 |
|
|
12楼#
发布于:2007-12-29 10:38
组件中的atadisk就是public\common\oak\\DRIVERS\BLOCK\ATADISK,他们应该是一个东西啊
|
|
13楼#
发布于:2007-12-29 10:46
引用第12楼modernhill于2007-12-29 10:38发表的 : 2。mdd层代码public\common\oak\drivers\pccard,pcmcia mdd层代码。不用修改 ?? 那这两个不是矛盾的吗?? 怎么mdd层的代码不是publiccommonoak\DRIVERSBLOCKATADISK 而是public\common\oak\drivers\pccard,pcmcia ?? 有点搞不明白。。还请大虾多多解释,谢谢。。 |
|
|
14楼#
发布于:2007-12-29 11:28
gerryzhou,问个问题,下面这个回调函数是谁来调用的?我找不见他的函数体,呵呵
typedef void(*PF_SS_CALLBACK)( HANDLE hSocket, UINT16 uSocket, PSS_SOCKET_STATE pSocketState ); |
|
15楼#
发布于:2007-12-29 11:45
pcmcia只是一个接口,而接口驱动也分为mdd和pdd。pcmcia可以插CF卡,moden等设备。CF卡需要atadisk驱动,用来加载fat文件系统,如果是无线网卡,那就要加载moden驱动
|
|
16楼#
发布于:2007-12-29 16:15
引用第15楼gerryzhou于2007-12-29 11:45发表的 : 多谢gerryzhou的指导。 |
|
|