Article ID: 933809 - Last Review: September 23, 2008 - Revision: 2.0

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

On This Page

Expand all | Collapse all

SYMPTOMS

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

RESOLUTION

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 "File information" 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  (http://support.microsoft.com/kb/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.
Collapse this tableExpand this table
File nameFile sizeDateTime
Wincepb50-070405-kb933809-armv4i.msi2,460,16006-Apr-200722:47
Wincepb50-070405-kb933809-mipsii.msi2,506,75206-Apr-200722:47
Wincepb50-070405-kb933809-mipsii_fp.msi2,511,87206-Apr-200722:47
Wincepb50-070405-kb933809-mipsiv.msi2,533,88806-Apr-200722:47
Wincepb50-070405-kb933809-mipsiv_fp.msi2,534,40006-Apr-200722:47
Wincepb50-070405-kb933809-sh4.msi2,412,54406-Apr-200722:47
Wincepb50-070405-kb933809-x86.msi2,280,96006-Apr-200722:47
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.
Collapse this tableExpand this table
File nameFile sizeDateTimePath
Winceos.bat100,54024-Mar-200700:57Public\Cebase\Oak\Misc
Makefile107,76624-Mar-200700:57Public\Common\Cesysgen
Sdcard.h22,89629-Mar-200721:57Public\Common\Ddk\Inc
Sdcardddk.h51,07729-Mar-200721:57Public\Common\Ddk\Inc
Sdcontrol.c74,40829-Mar-200721:57Public\Common\Oak\Csp\Arm\Intel\Pxa27x\Sdhc
Defbus.cpp23,46029-Mar-200721:57Public\Common\Oak\Drivers\Busenum\Busdef
Dirs51424-Mar-200700:57Public\Common\Oak\Drivers\Sdcard
Makefile66424-Mar-200700:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbus.cpp78,34429-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbus.def79724-Mar-200700:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbus.hpp10,95729-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbus2.def79724-Mar-200700:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbusdef.h6,32629-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbusreq.cpp16,66529-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbusreq.hpp6,71929-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdclient.cpp8,75229-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sddebug.cpp13,18429-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sddevice.cpp122,18929-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sddevice.hpp12,62229-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sddevinf.cpp55,90929-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdiofeat.cpp26,51729-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdslot.cpp38,16429-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdslot.hpp8,03529-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdworki.cpp3,88229-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdworki.hpp2,22129-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sources1,20024-Mar-200700:57Public\Common\Oak\Drivers\Sdcard\Sdbus
Sdbusdriver.cpp33,66629-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdbusdriver.h27,36829-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdbusrequest.cpp90,77729-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdbusrequest.h98329-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdcardio.cpp48,34429-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdclient.cpp27,04329-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdenum.cpp7,75929-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdenum.h2,09029-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdhcenum.cpp37,95829-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdhceventhandlers.cpp127,02329-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdmain.cpp18,70529-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdbusdriver
Sdcardapistubs.cpp3,94629-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdcardlib
Sddebug.cpp12,57429-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdcardlib
Sdmemcardio.cpp17,04029-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdclientdrivers\Sdmemory
Sdmemdiskio.cpp35,74729-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdclientdrivers\Sdmemory
Sdmemmain.cpp38,22029-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdclientdrivers\Sdmemory
Sdmemory.h8,05129-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdclientdrivers\Sdmemory
Sdhc.cpp30,29729-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdhcdrivers\Sdiostdhc\Base
Sdhc.h10,40129-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdhcdrivers\Sdiostdhc\Base
Sdhcregs.h13,51129-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdhcdrivers\Sdiostdhc\Base
Sdhcslot.cpp68,48429-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdhcdrivers\Sdiostdhc\Base
Sdhcslot.h14,47229-Mar-200721:57Public\Common\Oak\Drivers\Sdcard\Sdhcdrivers\Sdiostdhc\Base
Common.bib65,61724-Mar-200700:57Public\Common\Oak\Files
Common.reg228,43724-Mar-200700:57Public\Common\Oak\Files
Defbus.h7,46729-Mar-200721:58Public\Common\Oak\Inc
Sdhcd.h16,50729-Mar-200721:58Public\Common\Oak\Inc
Bthsdio.lib116,71629-Mar-200721:47Public\Common\Oak\Lib\Armv4i\Debug
Sdbus2_lib.lib828,59229-Mar-200721:47Public\Common\Oak\Lib\Armv4i\Debug
Sdbus_lib.lib692,83829-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Debug
Sdcardlibbase.lib114,14229-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Debug
Sdhcbase.lib318,76029-Mar-200721:47Public\Common\Oak\Lib\Armv4i\Debug
Sdhclib.lib17,58029-Mar-200721:47Public\Common\Oak\Lib\Armv4i\Debug
Sdhc_lib.lib352,31429-Mar-200721:47Public\Common\Oak\Lib\Armv4i\Debug
Sdmemory_lib.lib146,15029-Mar-200721:47Public\Common\Oak\Lib\Armv4i\Debug
Bthsdio.lib82,40029-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdbus2_lib.lib528,92229-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdbus_lib.lib373,40429-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdcardlibbase.lib57,69029-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdhcbase.lib179,86429-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdhclib.lib15,05429-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdhc_lib.lib207,60829-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Sdmemory_lib.lib76,06829-Mar-200721:46Public\Common\Oak\Lib\Armv4i\Retail
Bthsdio.lib121,21029-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdbus2_lib.lib832,14029-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdbus_lib.lib700,93829-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdcardlibbase.lib118,29229-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdhcbase.lib328,01629-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdhclib.lib19,82829-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdhc_lib.lib362,79829-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Sdmemory_lib.lib146,62829-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Debug
Bthsdio.lib82,75429-Mar-200721:47Public\Common\Oak\Lib\Mipsii\Retail
Sdbus2_lib.lib520,26629-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Retail
Sdbus_lib.lib373,85029-Mar-200721:47Public\Common\Oak\Lib\Mipsii\Retail
Sdcardlibbase.lib57,81029-Mar-200721:47Public\Common\Oak\Lib\Mipsii\Retail
Sdhcbase.lib174,92829-Mar-200721:47Public\Common\Oak\Lib\ Mipsii\Retail
Sdhclib.lib15,61629-Mar-200721:47Public\Common\Oak\Lib\Mipsii\Retail
Sdhc_lib.lib202,27029-Mar-200721:48Public\Common\Oak\Lib\Mipsii\Retail
Sdmemory_lib.lib74,59429-Mar-200721:47Public\Common\Oak\Lib\Mipsii\Retail
Bthsdio.lib121,24029-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdbus2_lib.lib835,23429-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdbus_lib.lib704,00029-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdcardlibbase.lib118,31429-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdhcbase.lib329,18829-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdhclib.lib19,83629-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdhc_lib.lib363,98029-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Sdmemory_lib.lib147,07829-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Debug
Bthsdio.lib82,78629-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdbus2_lib.lib523,66429-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdbus_lib.lib377,24229-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdcardlibbase.lib57,85229-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdhcbase.lib175,77629-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdhclib.lib15,62629-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdhc_lib.lib203,12429-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Sdmemory_lib.lib74,96829-Mar-200721:49Public\Common\Oak\Lib\Mipsii_fp\Retail
Bthsdio.lib122,39829-Mar-200721:51Public\Common\Oak\Lib\Mipsiv\Debug
Sdbus2_lib.lib844,94429-Mar-200721:51Public\Common\Oak\Lib\Mipsiv\Debug
Sdbus_lib.lib710,88629-Mar-200721:51Public\Common\Oak\Lib\Mipsiv\Debug
Sdcardlibbase.lib119,00429-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Debug
Sdhcbase.lib332,66029-Mar-200721:51Public\Common\Oak\Lib\Mipsiv\Debug
Sdhclib.lib19,96429-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Debug
Sdhc_lib.lib367,77829-Mar-200721:51Public\Common\Oak\Lib\Mipsiv\Debug
Sdmemory_lib.lib148,37029-Mar-200721:51Public\Common\Oak\Lib\Mipsiv\Debug
Bthsdio.lib83,07029-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Retail
Sdbus2_lib.lib525,81429-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Retail
Sdbus_lib.lib377,93229-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Retail
Sdcardlibbase.lib57,89029-Mar-200721:49Public\Common\Oak\Lib\Mipsiv\Retail
Sdhcbase.lib175,90029-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Retail
Sdhclib.lib15,67229-Mar-200721:49Public\Common\Oak\Lib\Mipsiv\Retail
Sdhc_lib.lib203,32629-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Retail
Sdmemory_lib.lib75,63029-Mar-200721:50Public\Common\Oak\Lib\Mipsiv\Retail
Bthsdio.lib122,42829-Mar-200721:52Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdbus2_lib.lib844,95429-Mar-200721:52Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdbus_lib.lib710,86429-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdcardlibbase.lib119,02629-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdhcbase.lib332,67229-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdhclib.lib19,97229-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdhc_lib.lib367,80029-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Debug
Sdmemory_lib.lib148,78629-Mar-200721:52Public\Common\Oak\Lib\Mipsiv_fp\Debug
Bthsdio.lib83,10429-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdbus2_lib.lib525,76029-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdbus_lib.lib377,88629-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdcardlibbase.lib57,93229-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdhcbase.lib176,07429-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdhclib.lib15,68229-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdhc_lib.lib203,50629-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Sdmemory_lib.lib76,02429-Mar-200721:51Public\Common\Oak\Lib\Mipsiv_fp\Retail
Bthsdio.lib107,34029-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Sdbus2_lib.lib751,16229-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Sdbus_lib.lib626,56829-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Sdcardlibbase.lib106,20629-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Sdhcbase.lib284,71029-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Sdhclib.lib16,16429-Mar-200721:45Public\Common\Oak\Lib\Sh4\Debug
Sdhc_lib.lib316,59429-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Sdmemory_lib.lib132,36229-Mar-200721:46Public\Common\Oak\Lib\Sh4\Debug
Bthsdio.lib76,26629-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdbus2_lib.lib480,80829-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdbus_lib.lib346,97629-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdcardlibbase.lib54,92229-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdhcbase.lib161,09429-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdhclib.lib14,61429-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdhc_lib.lib186,68229-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Sdmemory_lib.lib69,84029-Mar-200721:45Public\Common\Oak\Lib\Sh4\Retail
Bthsdio.lib101,71229-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdbus2_lib.lib701,36829-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdbus_lib.lib610,93429-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdcardlibbase.lib106,44629-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdhcbase.lib264,24029-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdhclib.lib15,18429-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdhc_lib.lib291,38029-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Sdmemory_lib.lib130,04629-Mar-200721:45Public\Common\Oak\Lib\X86\Debug
Bthsdio.lib76,37029-Mar-200721:45Public\Common\Oak\Lib\X86\Retail
Sdbus2_lib.lib477,61229-Mar-200721:45Public\Common\Oak\Lib\X86\Retail
Sdbus_lib.lib347,13629-Mar-200721:44Public\Common\Oak\Lib\X86\Retail
Sdcardlibbase.lib54,82629-Mar-200721:44Public\Common\Oak\Lib\X86\Retail
Sdhcbase.lib161,27229-Mar-200721:45Public\Common\Oak\Lib\X86\Retail
Sdhclib.lib13,57229-Mar-200721:44Public\Common\Oak\Lib\X86\Retail
Sdhc_lib.lib185,06629-Mar-200721:45Public\Common\Oak\Lib\X 86\Retail
Sdmemory_lib.lib68,78829-Mar-200721:45Public\Common\Oak\Lib\X86\Retail

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

This software update installs an SD bus driver that is compliant with the SD 2.0 specification. Additionally, this software update installs an enhanced SD memory card driver that supports high-capacity SD cards that are as large as 32 GB.

Environment

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

SD host controller

If you use your own custom SD host controller driver, you may have to update your driver. To do this, use 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. To handle Response 7, you can introduce a new enum variable for the command response in the SD host controller.

How to handle SD_API_STATUS codes

You may handle 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 by using 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;
}
… 
}

Changes to support high-capacity SD memory cards

This software update adds the following registry subkey to support high-capacity SD memory cards:
HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class\High_Capacity
This subkey includes the following entries.
Collapse this tableExpand this table
EntryExample valuesNotes
DllSDMemory.dll
PrefixDSK
BlockTransferSize40Value is type DWORD. A value of 40 indicates that no more than 64 blocks of data will be sent in each bus transfer.
SingleBlockWrites1Value is type DWORD. A value of 1 forces the driver to use single block access.
IdleTimeout7D0Value is type DWORD. A value of 7D0 indicates a time-out of 2000 milliseconds.
IdlePowerState2Value is type DWORD. Sets the idle power state to Dn, where n is the value of the entry.
DisablePowerManagementPower management is disabled if any value is present.
ProfileSDMemory
IClass{A4E7EDDA-E575-4252-9D6B-4195D48BB865}; {8DD679CE-8AB4-43c8-A14A-EA4963FAA715}Value is type MULTI_SZ.
High-capacity capability is checked when the SD memory client initializes.
apiStatus = SDCardInfoQuery( pMemCard->hDevice, SD_INFO_HIGH_CAPACITY_SUPPORT, &dwSDHC, sizeof(dwSDHC)); 
if(!SD_API_SUCCESS(apiStatus))
{ 
  pMemCard->HighCapacity = FALSE; 
} 
else 
{ 
  pMemCard->HighCapacity = dwSDHC != 0; 
} 
if( pMemCard->HighCapacity ) 
{ 
  DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemCardConfig: Card is high capacity (2.0+)\r\n"))); 
}
A high-capacity SD memory card always returns the device size in blocks. A standard SD memory card always returns the device size in bytes. This difference has to be considered when the number of sectors on the card is calculated.
if( pMemCard->CSDRegister.CSDVersion == SD_CSD_VERSION_CODE_2_0 && pMemCard->HighCapacity )
{ 
pMemCard->DiskInfo.di_total_sectors = pMemCard->CSDRegister.DeviceSize; 
} 
else 
{ 
pMemCard->DiskInfo.di_total_sectors = pMemCard->CSDRegister.DeviceSize/SD_BLOCK_SIZE; 
} 
A high-capacity SD memory card includes only the block offset. However, the standard SD memory card includes the byte offset. Therefore, the start block on a high-capacity SD memory card is used during read operations and write operations.
if (!pMemCard->HighCapacity) 
{ 
    if (ULONG_MAX / SD_BLOCK_SIZE < StartBlock) 
    { 
        ASSERT(FALSE); 
        return ERROR_INVALID_PARAMETER; 
     } 
StartBlock *= SD_BLOCK_SIZE; 
}

Common issues

Buffer overflow
A high-capacity SD memory card supports up to 32 GB. Because a high-capacity SD memory card may use memory that is beyond the 32-bit address space, you must make sure that there is no buffer overflow. For example, when you try to read or write to a high-capacity SD memory card, make sure that you check the block size. To do this, use the following code:
if (ULONG_MAX / SD_BLOCK_SIZE < NumBlocks) { status = ERROR_INVALID_PARAMETER; }
Blocks or bytes
The SD bus may return the device size as blocks or as bytes. When a high-capacity SD memory card is used, the CSD register returns the device size in blocks for a high-capacity SD memory card. When a standard SD memory card is used, the CSD register returns the device size in bytes. Therefore, when a very small card is used, the buffer that stores the total sectors may overflow. In this situation, the number of sectors appears very large.

REFERENCES

For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:
824684  (http://support.microsoft.com/kb/824684/ ) Description of the standard terminology that is used to describe Microsoft software updates

APPLIES TO
  • Microsoft Windows CE 5.0
Keywords: 
kbcode kbpubtypekc kbqfe kbhotfixserver kbfix kbbug KB933809
 

Article Translations

 

Related Support Centers