Wednesday, 17 September 2008

(Un)Fortunately, memory card are constantly growing in size

SD Cards larger than 2GB are SDHC cards now. Your multicard reader and older Windows CE don't like this SDHC cards. You have to change your driver. And it's very easy to do:

* Install all QFEs from 2007 or R2 for CE 6.0
* Set the environment variable IMGSDBUS2 to 1
* Add support for response type R7 to your SD driver
(Add "case ResponseR7:" just behind "case ResponseR6:", that's all!)

Refer http://support.microsoft.com/kb/933809 for a detailed description
or for CE 6.0 R2 http://msdn.microsoft.com/en-us/library/bb905598.aspx

At this point you may do some tests with a couple of SD-Cards.
As expected some cards work fine but some do NOT!
After debugging around I found the weak point in the initialization.
That's what you should do: Send CMD0, CMD8, ACMD41 and CMD2.
But the SDBus2 driver does an extra loop:
Send CMD0, CMD8, ACMD41, CMD0(IDLE), CMD8, ACMD41(READY) and CMD2.
And the 2nd ACMD41 will fail on some SD-Cards.
The card doesn't "like" the state change back to IDLE and again to READY.
I tried all kinds of additional sleeps without success.
But when I skipped the back-to-IDLE part the card works fine.

If you find any other non-functioning SDHC-Card on the market, just mail it to me.

Tschüß Holger

No comments: