0% found this document useful (0 votes)
91 views4 pages

EMMC Linux Kernel Internals by SSM

eMMC is an embedded version of the MultiMediaCard (MMC) standard that provides flash memory storage. It consists of flash memory, a flash controller, and a host interface. The flash memory is divided into partitions for booting, secure storage, general storage, and user data. The flash controller handles tasks like bad block management and error correction to improve performance and simplify the host software compared to directly connecting flash. The host interface uses signals like clock, data, and command to communicate between the eMMC and host.

Uploaded by

Siba Ssm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views4 pages

EMMC Linux Kernel Internals by SSM

eMMC is an embedded version of the MultiMediaCard (MMC) standard that provides flash memory storage. It consists of flash memory, a flash controller, and a host interface. The flash memory is divided into partitions for booting, secure storage, general storage, and user data. The flash controller handles tasks like bad block management and error correction to improve performance and simplify the host software compared to directly connecting flash. The host interface uses signals like clock, data, and command to communicate between the eMMC and host.

Uploaded by

Siba Ssm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

11/9/23, 6:17 PM eMMC · Linux Kernel Internals

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:

Picture: eMMC overall architecture


The eMMC can be mainly divided into three parts: Flash Memory, Flash Controller and Host
Interface.

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

Image: eMMC internal partition


1. BOOT Area Partition 1 & 2
This partition is mainly designed to support booting the system from eMMC.
The data of this partition can be read through a very simple protocol after the eMMC is
powered on. At the same time, most SOCs can be configured through GPIO or FUSE to
allow the ROM code to load the contents of the eMMC BOOT partition into the SRAM inside
the SOC for execution after power-on.
2. RPMB Partition
RPMB is the abbreviation of Replay Protected Memory Block. It uses HMAC SHA-256 and
Write Counter to ensure that the data stored inside RPMB is not illegally tampered with.
In practical applications, RPMB partitions are usually used to store security-related data,
such as fingerprint data, secure payment-related keys, etc.
3. General Purpose Partition 1~4
This area is mainly used to store system or user data. General Purpose Partition usually
does not exist when the chip leaves the factory. It needs to be actively configured before it
exists.
4. User Data Area
This area is mainly used to store system and user data.
The User Data Area is usually re-partitioned. For example, in the Android system, boot,
system, userdata and other partitions are usually divided into this area.
For more details about eMMC partitions, please refer to the eMMC Partition
Management 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 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.

Picture: NAND Flash and eMMC

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

Image: eMMC Interface


The purpose of each signal is as follows:
CLK
is the clock signal used for synchronization

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

You might also like