EMMC Linux Kernel Internals by SSM
EMMC Linux Kernel Internals by SSM
Introduction to eMMC
eMMC is the abbreviation of embedded MultiMediaCard. MultiMediaCard, or MMC, is a Flash
Memory Card standard that defines the architecture of MMC and the interface and protocol for
accessing Flash Memory. eMMC is an expansion of MMC to meet higher standards of
performance, cost, size, stability, ease of use, etc.
The overall architecture of eMMC is shown in the following picture:
Flash Memory
Flash Memory is a kind of non-volatile memory, which is usually used in embedded systems to
store systems, applications and data, etc., similar to the hard disk in PC systems.
Currently, the Flash Memory inside the eMMC used in most mobile devices such as mobile
phones and tablets belongs to NAND Flash. For more details about NAND Flash, please refer to
the Flash Memory chapter.
eMMC internally divides Flash Memory into several main areas, as shown in the figure below:
https://linux-codingbelief-com.translate.goog/zh/storage/flash_memory/emmc/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp 1/4
11/9/23, 6:17 PM eMMC · Linux Kernel Internals
https://linux-codingbelief-com.translate.goog/zh/storage/flash_memory/emmc/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp 2/4
11/9/23, 6:17 PM eMMC · Linux Kernel Internals
Flash Controller
When NAND Flash is directly connected to the Host, the Host usually needs a NAND Flash
Translation Layer, that is, NFTL or NAND Flash file system to perform functions such as bad
block management and ECC.
eMMC integrates a Flash Controller inside it to complete functions such as erase and write
balancing, bad block management, and ECC verification. Compared with directly connecting
NAND Flash to the host side, eMMC shields the physical characteristics of NAND Flash, which
can reduce the complexity of the host side software, allowing the host side to focus on upper-
layer services, eliminating the need for special processing of NAND Flash. At the same time,
eMMC uses Cache, Memory Array and other technologies to achieve much better read and write
performance than NAND Flash.
Host Interface
The connection between eMMC and Host is shown in the figure below:
https://linux-codingbelief-com.translate.goog/zh/storage/flash_memory/emmc/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp 3/4
11/9/23, 6:17 PM eMMC · Linux Kernel Internals
Data Strobe
This signal is the clock signal output from the Device side. The frequency is the same as the
CLK signal. It is used to synchronize the data output from the Device side. This signal was
introduced in eMMC 5.0.
CMD
This signal is used to send the Host command and Device response.
DAT0-7
is an 8-bit bus used to transmit data.
The communication between Host and eMMC is initiated by Host starting with a
Command. Device will respond differently to different Commands. For detailed communication
protocol related content, please refer to the eMMC bus protocol chapter.
https://linux-codingbelief-com.translate.goog/zh/storage/flash_memory/emmc/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp 4/4