This section describes the MMC component.
MMC - about
This LISA+ component is a model of a MultiMediaCard (MMC) device.
It can simulate an SD card compatible with the MultiMedia Card Association (MMCA, www.jedec.org) specification version 3.31, or an eMMC card compatible with version 4.4. You can extend functionality using the supplied source code.
When paired with a PL180_MCI component, the MMC device model provides emulation of a flexible, persistent storage mechanism. The MMC component uses a file on the host PC to simulate the storage device. The size of this backing store file determines the reported size of the MMC device. As small sections of this file are paged in by the model, large filesystems can be modeled while making efficient use of host PC memory. The backing store file can contain a partition table and filesystems such as FAT or EXT2. The image file is a direct bit copy of the contents of an SD card. If the image file that p_mmc_file refers to does not exist, the component behaves as if the card is absent. If the image file is read-only, then the component behaves as if the card is read-only. Note that operating-system boots often attempt to write to the boot filesystem. They might not work properly if the boot filesystem is on a read-only card.
The MMC component does not model card insertion or removal. It models having already been inserted at system instantiation time.
You can configure the MMC component to behave as an eMMC module by setting the card_type parameter to eMMC. In this mode, it handles the MMC_SLEEP_AWAKE, MMC_SWITCH, MMC_SEND_EXT_CSD, and MMC_SET_BLOCKLEN commands, which are otherwise illegal.
The component supports these commands:
In SD mode, the block length is 512 bytes. SimGen reports attempts to change it as errors.
The component supports these erase commands (Class 5), but they have no effect on the disk backing storage:
The component does not support these commands:
The component does not support stream read and write commands (Classes 1 and 3):
The component does not support block oriented write protection commands (Class 6):
The component does not support lock card commands (Class 7) or application-specific commands (Class 8):
The component does not support I/O mode commands (Class 9):
The component does not support reserved commands. Using a reserved command sets the MMC ST_ER_B_ILLEGAL_COMMAND bit in the status register of the card. Read this with the MMC_SEND_STATUS command.
MMC - ports
This section describes the ports.
Table 4-102 MMC ports
||StateSignal||Master||Used to signal whether an MMC image is loaded. It is set if an image is loaded, and is clear if no image is loaded.|
||ClockSignal||Slave||Master clock input.|
||MMC_Protocol||Slave||The MMC slave port.|
MMC - parameters
This section describes the parameters.
The parameters permit configuration of a number of attributes reflected in the CID and CSD registers. You can customize the component further by modifying the MMC model source code directly.
Table 4-103 MMC parameters
|Name||Type||Allowed values||Default value||Description|
||'SD', 'eMMC'||'SD'||The card is eMMC (MMCA v4.4) or SD (v3.31).|
||Use sector addressing not byte addressing even if p_mmc_file is a file <2GB in size.|
||0-4||0||Level of diagnostics printed to
||Complete MMC-card block reads and writes as fast as possible, or simulate a delay.|
||Valid filename||'mmc.dat'||File for the MMC component backing store.|
||Six character string||'ARMmmc'||Card ID product name.|
||Card ID product revision.|
||Card ID manufacturer ID.|
||Card ID OEM ID.|
||Card serial number.|
MMC - registers
This section describes the registers.
The registers are not memory mapped. Instead, you access them using relevant MMC commands. The MMC component model makes the registers available through a CADI interface. Modification of these registers through CADI is not recommended, but not prohibited. For example, modifying the card ID (CID) registers can be useful when experimenting with drivers, but direct modification of the STATUS_REG register is likely to put the card model into an indeterminate state.
For a full definition of MMC registers, see the MMCA System Summary documentation. Device-specific register information can also be obtained from MMC vendors.
Table 4-104 MMC registers
|Name||CADI register number||Description|
||Operating conditions register|
||Card ID bits 127:96|
||Card ID bits 95:64|
||Card ID bits 63:32|
||Card ID bits 31:0|
||Card specific data bits 127:96|
||Card specific data bits 95:64|
||Card specific data bits 63:32|
||Card specific data bit 31:0|
||Relative card address register|
||Driver stage register|
MMC - debug features
This component provides a CADI interface for viewing internal registers.
p_diagnostics parameter to select the level of diagnostic output,
to help to debug device driver and controller-to-card protocol issues:
- Level 0
- Level 1
- Warnings about attempting to change read-only settings.
- Level 2
- Trace of command calls.
- Level 3
- Information about every step in the MMC_Protocol interaction.
- Level 4
- Hex dump of every block sent or received.
See the source code for details.
MMC - verification and testing
This component passes tests in conjunction with the ARM MMC reference model, and in the VE example with Boot Monitor and Linux drivers.