SDHC Bus Level Functional Tests (SD 2.0) (Compact 2013)

3/26/2014

The Secure Digital High Capacity (SDHC) Bus Level Functional Tests (SD 2.0) job test the following areas of the SD Bus:

*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 features such as clock rate, bus width, select, deselect, and force reset

*Miscellaneous tests that include 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.

SD Card

SD 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 SDHC card (v2.0) inserted and mounted.

The OS design must also include at minimum:

* SYSGEN_SDHC_STANDARD=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 the following steps to run this test:

1. Insert the SDHC memory card into the device SD slot.

2. Modify the command line if necessary.

3. Run the test. By default, the command line is: s tux -o -d sdmemtux -c "/device sdhc".

Verifying the Test

When the test completes running, verify that "PASS" appears in the test log for all sub-tests.

Troubleshooting the Test

* Ensure that the OS design includes the SDHC card sysgen(s) necessary to support SDHC card.

* If the tests are failing, check to make sure from the Tux test log that the replacement of the default SDHC card driver to the test SDHC 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 SDHC host controller on the Windows Embedded Compact device is not designed to be unloadable and reloadable.

See Also

Other Resources

Storage Media - SDHC Memory Tests