You copied the Doc URL to your clipboard.

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:

  • MMC_GO_IDLE_STATE.
  • MMC_SEND_OP_COND.
  • MMC_ALL_SEND_CID.
  • MMC_SET_RELATIVE_ADDR.
  • MMC_SET_DSR.
  • MMC_SELDESL_CARD.
  • MMC_SEND_CSD.
  • MMC_SEND_CID.
  • MMC_STOP_TRANSMISSION.
  • MMC_SEND_STATUS.
  • MMC_GO_INACTIVE_STATE.
  • MMC_READ_SINGLE_BLOCK.
  • MMC_READ_MULTIPLE_BLOCK.
  • MMC_SET_BLOCK_COUNT.
  • MMC_WRITE_BLOCK.
  • MMC_WRITE_MULTIPLE_BLOCK.
  • MMC_SLEEP_AWAKE.
  • MMC_SWITCH.
  • MMC_SEND_EXT_CSD.
  • MMC_SET_BLOCKLEN.

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:

  • MMC_ERASE_GROUP_START.
  • MMC_ERASE_GROUP_END.
  • MMC_ERASE.

The component does not support these commands:

  • MMC_BUSTEST_R.
  • MMC_BUSTEST_W.

The component does not support stream read and write commands (Classes 1 and 3):

  • MMC_READ_DAT_UNTIL_STOP.
  • MMC_WRITE_DAT_UNTIL_STOP.
  • MMC_PROGRAM_CID.
  • MMC_PROGRAM_CSD.

The component does not support block oriented write protection commands (Class 6):

  • MMC_SET_WRITE_PROT.
  • MMC_CLR_WRITE_PROT.
  • MMC_SEND_WRITE_PROT.

The component does not support lock card commands (Class 7) or application-specific commands (Class 8):

  • MMC_LOCK_UNLOCK.
  • MMC_APP_CMD.
  • MMC_GEN_CMD.

The component does not support I/O mode commands (Class 9):

  • MMC_FAST_IO.
  • MMC_GO_IRQ_STATE.

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.