MMC Bus Level Functional Tests (Compact 7)
3/12/2014
The Multi-Media Card (MMC) Bus Level Functional Tests (SD 1.1) job tests the following areas of the MMC card:
* Simple Bus Requests-most commands are tested both synchronously and asynchronously.
* Cancel Bus Requests for both partial and misalign read/write tests.
* Simple SDCard Info Query for various registers.
* SD set card feature such as clock rate, bus width, select, deselect, and force reset.
* Misc Tests which includes GetBitSlice, unloading of sdbus.dll, and SDIO bus IOCTL.
* Memory List.
* Feature Fullness.
Test Prerequisites
Your device must meet the following requirements before you run this test.
The following table shows the hardware requirement
Requirement | Description |
---|---|
SD Bus |
Platform with an SD Bus. |
MMC Card |
Multi-Media card memory card. |
The following table shows the software requirement for this test.
Requirement | Description |
---|---|
Tux.exe |
Test harness, required to execute the test. |
Kato.dll |
Logging engine, required for logging test data. |
SdMemTux.dll |
Library that contains the test cases |
sdtst.dll |
Test Client Driver. |
Subtests
The table below lists the subtests included in this test.
SubTest ID | Description |
---|---|
1009 |
Simple Synchronous Test of CMD7 (SELECT_DESELECT_CARD) |
1010 |
Simple Asynchronous Test of CMD7 (SELECT_DESELECT_CARD) |
1011 |
Simple Synchronous Test of CMD9 (SEND_CSD) |
1012 |
Simple Asynchronous Test of CMD9 (SEND_CSD) |
1013 |
Simple Synchronous Test of CMD10 (SEND_CID) |
1014 |
Simple Asynchronous Test of CMD10 (SEND_CID) |
1015 |
Simple Synchronous Test of CMD12 after write (SD_CMD_STOP_TRANSMISSION) |
1016 |
Simple Asynchronous Test of CMD12 after write (SD_CMD_STOP_TRANSMISSION) |
1017 |
Simple Synchronous Test of CMD12 after read (SD_CMD_STOP_TRANSMISSION) |
1018 |
Simple Asynchronous Test of CMD12 after read (SD_CMD_STOP_TRANSMISSION) |
1019 |
Simple Synchronous Test of CMD13 (SEND_STATUS) |
1020 |
Simple Asynchronous Test of CMD13 (SEND_STATUS) |
1023 |
Simple Synchronous Test of CMD16 (SET_BLOCKLEN) |
1024 |
Simple Asynchronous Test of CMD16 (SET_BLOCKLEN) |
1025 |
Simple Synchronous Test of CMD17 (READ_SINGLE_BLOCK) |
1026 |
Simple Asynchronous Test of CMD17 (READ_SINGLE_BLOCK) |
1027 |
Simple Synchronous Test of CMD18 (READ_MULTIPLE_BLOCK) |
1028 |
Simple Asynchronous Test of CMD18 (READ_MULTIPLE_BLOCK) |
1029 |
Simple Synchronous Test of CMD24 (WRITE_BLOCK) |
1030 |
Simple Asynchronous Test of CMD24 (WRITE_BLOCK) |
1031 |
Simple Synchronous Test of CMD25 (WRITE_MULTIPLE_BLOCK) |
1032 |
Simple Asynchronous Test of CMD25 (WRITE_MULTIPLE_BLOCK) |
1041 |
Simple Synchronous Test of CMD32 (ERASE_WR_BLK_START) |
1042 |
Simple Asynchronous Test of CMD32 (ERASE_WR_BLK_START) |
1043 |
Simple Synchronous Test of CMD33 (ERASE_WR_BLK_END) |
1044 |
Simple Asynchronous Test of CMD33 (ERASE_WR_BLK_END) |
1045 |
Simple Synchronous Test of CMD38 (ERASE) |
1046 |
Simple Asynchronous Test of CMD38 (ERASE) |
1055 |
Simple Synchronous Test of ACMD13 (SD_STATUS) |
1056 |
Simple Asynchronous Test of ACMD13 (SD_STATUS) |
1066 |
Simple Synchronous Test of ACMD51 (SEND_SCR) |
1067 |
Simple Synchronous Test of ACMD51 (SEND_SCR) |
1068 |
Test of SDCancelBusRequest |
1201 |
Read Block Partial Test |
1202 |
Write Block Partial Test |
1203 |
Read Block Misalign Test |
1204 |
Write Block Misalign Test |
2002 |
Simple SDCardInfoQuery test of getting the CID |
2003 |
Simple SDCardInfoQuery test of getting the CSD |
2004 |
Simple SDCardInfoQuery test of getting the RCA |
2005 |
Simple SDCardInfoQuery test of getting the Card Interface |
2006 |
Simple SDCardInfoQuery test of getting the Status Register |
2007 |
Simple SDCardInfoQuery test of getting the Host Interface Caps |
2008 |
Simple SDCardInfoQuery test of getting the Host Block Caps |
3001 |
Simple SDSetCardFeature test of adjusting the clock rate |
3002 |
Simple SDSetCardFeature test of adjusting the bus width |
3004 |
SDSetCardFeature SD_CARD_FORCE_RESET |
3005 |
SDSetCardFeature SD_CARD_DESELECT |
3006 |
SDSetCardFeature SD_CARD_SELECT |
4002 |
GetBitSlice Test |
4004 |
Testing unload of sdbus.dll |
4006 |
SDIO Version 1.1 Bus IOCTLS |
5001 |
Basic Memory List Test |
6002 |
SD/MMC Card Feature Fullness Test |
Setting Up the Test
The Windows Embedded Compact platform under test must have an MMC inserted and mounted.
The OS design must also include at minimum:
* SYSGEN_SDBUS=1
* SYSGEN_SDMMC=1
Note:When you are building a new image you need to set the image flag IMGSDBUS2 equal to 1 in order to use the new bus (sdbus2.dll). When IMGSDBUS2 is set to 1, sdbus2.dll is picked up during the makeimg process and is renamed to sdbus.dll in the generated image.
Running the Test
The following table shows the command line parameter for the SD Bus Level Functional Test.
Command line parameter | Description |
---|---|
/device <card> |
Specifies the Secure Digital card type to test. |
/manual |
The user must manually insert an SD card to continue, the reason is the host may not be designed to be unloaded and reloadable. If that is the case, client need to manually insert/eject an SD peripheral in order to load the test driver for testing purposes. |
/softblock |
Soft-Block operations increase performance for large I/O operations on cards that support small block sizes in hardware by reducing the number of driver stack traversals. Soft-Block operations only benefit SDIO cards as multi-block operations are mandatory for all memory cards. |
Follow these steps to run this test:
1. Insert the SD memory card into the device's SD slot.
2. Modify the command line if necessary.
3. Run the test. The default command line used is: tux -o -d sdmemtux.dll -c "/device mmc"
Verifying the Test
When the test completes running, verify that 'PASS' appears in the test log for all subtests.
Troubleshooting the Test
* Ensure that the OS design includes the MMC card sysgen(s) necessary to support MMC card.
* If the tests are failing, check to make sure from the Tux test log that the replacement of the default MMC card driver to the test MMC card driver happened successfully. If the driver was not replaced properly, the test may behave unexpectedly.
* You may need to specify the "manual" flag in the command option if the SD host controller on the Windows Embedded Compact device is not designed to be unloadable and reloadable.
For additional platform specific issues, consult the CTK articles on the TechNet wiki.