MMC overview

来自百问网嵌入式Linux wiki
Zhouyuebiao讨论 | 贡献2020年5月8日 (五) 22:17的版本

SUMMARY
The MMC (MultiMediaCard) / SD (secure digital) / SDIO (secure digital input/output) subsystem implements a standard Linux® host driver to interface with MMC / SD memory cards or SDIO cards.

Framework purpose

The purpose of this article is to introduce the MMC Linux® subsystem (MMC / SD) by:

  • providing general information
  • describing the main components/stakeholders

The SDIO is addressed in the WLAN overview.

System overview

MMC overview.png

Component description

  • User space applications handle file I/O management to view the card memory as a disk, whereas programs that perform raw I/O accesses see the memory as a block device[1].
  • VFS (Kernel space)

Virtual File System. Please refer to the VFS documentation [2].

  • MMC core/SD/MMC/SDIO (Kernel space)

The MMC core ensures compliance with MultiMediaCard (MMC)[3] / secure digital (SD)[4] / secure digital input/output (SDIO)[5].

  • SDMMC driver (Kernel space) / SDMMC (hardware)

The SDMMC driver handles:

  • the registers, the clock, the interrupt and the IDMA control.
  • the communications over the bus based on command/response and data transfers.

Please refer to the SDMMC internal peripheral.

API description

The MMC core handles the file system read/write calls.

Configuration

Kernel configuration

The MMC framework is activated by default in ST deliveries. If a specific configuration is needed, this section indicates how the MMC framework can be activated/inactivated in the kernel.

The MMC framework can be activated in the kernel configuration via Linux® Menuconfig tool: Menuconfig or how to configure kernel

[*] Device Drivers
    [*] MMC/SD/SDIO card support
        <*> HW reset support for eMMC
        <*> Simple HW reset support for MMC
        <*> MMC block device driver
            (16) Number of minors per block device
        ...
        <*> ARM AMBA Multimedia Card Interface support
        [*] STMicroelectronics STM32 SDMMC Controller

Device tree configuration

DT configuration can be done thanks to STM32CubeMX.

Please refer to the SDMMC device tree configuration.

How to use the framework

A file system, which handles read/write/erase operations, can be used with the MMC framework. Please refer to the EXT4 support through MMC.


How to trace and debug the framework

How to monitor

The sysfs interface provides detailed information on each mmc device:

root:~# cat /sys/kernel/debug/mmc0/ios
clock:          50000000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      2 (4 bits)
timing spec:    2 (sd high-speed)
signal voltage: 0 (3.30 V)
driver type:    0 (driver type B)

How to trace

For details on dynamic trace usage, refer to How to use the kernel dynamic debug.

root:~# echo "file drivers/mmc/* +p" > /sys/kernel/debug/dynamic_debug/control

Source code location

The MMC framework is available drivers/mmc | |}} here .

References

Please refer to the following links for a full description of the MMC framework:

  1. https://en.wikipedia.org/wiki/Device_file#Block_devices
  2. Documentation/filesystems/vfs.txt | |}} VFS
  3. MultiMediaCard, embedded MultiMediaCard specification
  4. Secure Digital, secure digital specification
  5. Secure Digital Input Output, Secure Digital Input Output specification


<securetransclude src="ProtectedTemplate:ArticleBasedOnModel" params="Framework overview article model"></securetransclude>