Microsoft KB Archive/933809

= Windows CE 5.0 supports only SD 1.1-compliant memory cards that are smaller than 2 GB =

Article ID: 933809

Article Last Modified on 5/3/2007

-

APPLIES TO


 * Microsoft Windows CE 5.0

-



SYMPTOMS
Microsoft Windows CE 5.0 supports only Secure Digital (SD) 1.1-compliant memory cards that are smaller than 2 gigabytes (GB).



Software update information
A supported software update is now available from Microsoft as Windows CE 5.0 Platform Builder Monthly Update (April 2007). You can confirm this by scrolling to the &quot;File information&quot; section of this article. The package file name contains the product version, date, Knowledge Base article number, and processor type. The package file name format is:

Product version-yymmdd-kbnnnnnn-processor type

For example: Wincepb50-060503-kb917590-armv4i.msi is the ARMV4i Windows CE 5.0 Platform Builder fix that is documented in KB article 917590 and that is contained in the May 2006 monthly update. To resolve this problem immediately, click the following article number for information about obtaining Windows CE Platform Builder and core operating system software updates:

837392 How to locate core operating system fixes for Microsoft Windows CE Platform Builder products

Prerequisites
This software update is supported only if all previously issued software updates for this product have also been applied.

Restart requirement
After you apply this software update, you must perform a clean build of the whole platform. To clean the platform, click Clean on the Build menu. To build the platform, click Build Platform on the Build menu. You do not have to restart the computer after you apply this software update.

Software update replacement information
This software update does not replace any other software updates.

File information
The English version of this software update package has the file attributes, or the later file attributes, that are listed in the following table.

The English version of this software update has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the &quot;Applies to&quot; section.



MORE INFORMATION
This software update installs the SD bus driver that is compliant with the SD 2.0 specification. Additionally, the software update installs an enhanced SD memory driver that supports high-capacity SD cards that are larger than 4 GB and as large as 32 GB.

To enable support for SDHC 2.0-compliant memory cards after you apply this update, set the value of the IMGSDBUS2 variable to 1.

If you use your own custom SD host controller driver, you may have to update your driver by using the following information.

SD host controller considerations
The new SD Physical Layer Specification 2.0 is targeted only to the SD Bus. Therefore, you do not have to change the SD host controller. However, a common problem occurs because of the new command support that exists in the SD 2.0 specification that uses Response 7. When you submit a request in the SD host controller, make sure that Response 7 is handled. Otherwise, the request fails with an SD_API_STATUS_INVALID_PARAMETER error. You may handle Response 7 by introducing a new enum variable for the command response in the SD host controller.

Handling SD_API_STATUS codes
You may handle the SD_API_STATUS codes by using code that resembles the following code example. The new SD Bus and enhanced SD memory drivers for high-capacity card support may require OEMs to modify SD host controller software if the software is tightly coded to SD 1.1 commands.

Note The following code example applies to SD host controller sample drivers that are delivered by using Platform Builder 5.0. CSDHCSlotBase::SubmitBusRequestHandler( PSD_BUS_REQUEST pRequest) { … // Bypass CMD12 if AutoCMD12 was done by the hardware. … // Initialize the command register with the command code. wRegCommand = (pRequest->CommandCode << CMD_INDEX_SHIFT) & CMD_INDEX_MASK;

// Check for a response. switch (pRequest->CommandResponse.ResponseType) { case NoResponse: break;

case ResponseR2: wRegCommand |= CMD_RESPONSE_R2; break;

case ResponseR3: case ResponseR4: wRegCommand |= CMD_RESPONSE_R3_R4; break;

case ResponseR1: case ResponseR5: case ResponseR6: case ResponseR7: wRegCommand |= CMD_RESPONSE_R1_R5_R6_R7; break;

case ResponseR1b: wRegCommand |= CMD_RESPONSE_R1B_R5B; break; default: status = SD_API_STATUS_INVALID_PARAMETER; goto EXIT; } … }

