Problem with bmiBufferSend

Topics: Developer Forum, User Forum
Jun 4, 2009 at 1:43 PM

Hi All,

On last week I bought a silex SX-SDWAG SDIO WiFi card with AR6001XL chip. Now I'm trying to run codeplex Windows CE WLAN Driver for Atheros AR-6001 under Windows CE 5.0.

Unfortunately I have a problem with running this driver .

During debugging        I found that in bmiBufferSend function in bmi.c  file the driver will try to repeatedly read a register of the card. The read value is stored in a cmdCredits variable. The register is read until the register value read back is Non-zero and then the following steps can go on. But the value returned from register was always zero.

There are debug messages below:

HTCInit: Enter
hifDeviceInserted: Enter
0x83fcac60: [NOTIFY] HandleSystemEvent 7 /ADD DRG1:
Card RCA  is 0x1
ESCSlotOptionHandler - SetSlotInterface : Set clock rate: 24000000
ESCSlotOptionHandler - SetSlotInterface : setting for 4 bit mode
Function supports block mode
ESCSlotOptionHandler: Read Block Length: 128 , Read Blocks: 8
ESCSlotOptionHandler: Write Block Length: 128 , Write Blocks: 8
Bytes Per Block: 128 bytes, Block Count:8
htcTargetInserted - Enter
endPoint[0]: 0035B4C8
endPoint[1]: 0035BBFC
endPoint[2]: 0035C330
endPoint[3]: 0035CA64
HIFReadWrite:Enter
Address 0x418
Byte mode (BlockLen: 4, BlockCount: 1)
Incremental
[Write]
Synchronous
dispatchEvent(endpoint: -1, eventId: 0x0, handler: 0x00000000)
htcTargetInserted - Exit
HTCInit: Exit
HTCEventReg: Enter (eventId: 0x5, endPointId: -1)
addToEventTable(endpoint: -1, eventId: 0x5, handler: 0x01EE8F10)
dispatchEvent(endpoint: -1, eventId: 0x5, handler: 0x01EE8F10)
AR6K: +AR6KTargetAvailableEventHandler
BMI Get Target ID: Enter (device: 0x01F34C54)
HIFReadWrite:Enter
Address 0x450
Byte mode (BlockLen: 1, BlockCount: 1)
Fixed      
[Read ]
Synchronous
HIFReadWrite:Enter
Address 0x450
Byte mode (BlockLen: 1, BlockCount: 1)
Fixed      
[Read ]
Synchronous
HIFReadWrite:Enter
Address 0x450
Byte mode (BlockLen: 1, BlockCount: 1)
Fixed      
[Read ]
Synchronous

.
.
.

BMI Communication timeout
Unable to write to the device
AR6K: -AR6KTargetAvailableEventHandler
HTCEventReg: Exit
HTCEventReg: Enter (eventId: 0x6, endPointId: -1)
addToEventTable(endpoint: -1, eventId: 0x6, handler: 0x01EE80F0)
HTCEventReg: Exit
AR6K: ERROR - No TGT_READY event after 20000 ms, failing initialization
AR6K: +Halt
Reset Power State = 1
ResetPowerWorkItem :: Exit
HTCShutDown: Enter

I tested SD memory cards on the same hardware plaftorm under Windows CE 5.0 and it worked good.

 

Any help and advise will be greatly appreciated.

Thanks

 

Coordinator
Jun 4, 2009 at 6:15 PM

The firmware version on the target hardware needs to match the host driver version. Please check with your hardware vendor as to what firmware version you have and what is the appropriate host driver.

Regards

Paul

Jun 5, 2009 at 10:01 AM
Edited Jun 5, 2009 at 10:03 AM

 What exactly do you mean by firmware and how can I check the firmware version?

I guess that target hardware means SDIO Host Controller and host driver means SDIO Host Controller driver. Right?

Sorry about these questions but I want to make sure I get it right.

 

Why Windows CE WLAN Driver for Atheros AR-6001 driver can not read a non-zero value from the register at address 0x450 as it wanted?

What can be cause of this problem? Wrong command sequence sending to card? ...

 

Regards

Peter

Coordinator
Jun 5, 2009 at 5:48 PM

>I guess that target hardware means SDIO Host Controller and host driver means SDIO Host Controller driver. Right?

The target hardware is your Ar6001 board. It is flashed with a certain verison of the firmware. The host driver is the AR6001 host network driver.

>Why Windows CE WLAN Driver for Atheros AR-6001 driver can not read a non-zero value from the register at address 0x450 as it wanted?

The first place I'd look is to ensure that you have matching firmware.

The second place would be possible issues with the SDIO host drive not handlng short data transfers correctly.

 

Regards

Paul

 

Jun 8, 2009 at 8:11 AM

How can I check firmware version?

Driver can't read target ID because it hangs in bmiBufferSend function. The newer version of firmawre can make impossible to read target ID?

 

Regards

Peter

Coordinator
Jun 8, 2009 at 4:55 PM

Check with the card vendor to determine what firmware version they are using and what host driver you should be using.

Regards

Paul