Jesd84 B51
Jesd84 B51
Jesd84 B51
STANDARD
JESD84-B51
(Revision of JESD84-B50.1, July 2014)
FEBRUARY 2015
NOTICE
JEDEC standards and publications contain material that has been prepared, reviewed, and approved
through the JEDEC Board of Directors level and subsequently reviewed and approved by the JEDEC
legal counsel.
JEDEC standards and publications are designed to serve the public interest through eliminating
misunderstandings between manufacturers and purchasers, facilitating interchangeability and
improvement of products, and assisting the purchaser in selecting and obtaining with minimum delay the
proper product for use by those other than JEDEC members, whether the standard is to be used either
domestically or internationally.
JEDEC standards and publications are adopted without regard to whether or not their adoption may
involve patents or articles, materials, or processes. By such action JEDEC does not assume any liability to
any patent owner, nor does it assume any obligation whatever to parties adopting the JEDEC standards or
publications.
The information included in JEDEC standards and publications represents a sound approach to product
specification and application, principally from the solid state device manufacturer viewpoint. Within the
JEDEC organization there are procedures whereby a JEDEC standard or publication may be further
processed and ultimately become an ANSI standard.
No claims to be in conformance with this standard may be made unless all requirements stated in the
standard are met.
Inquiries, comments, and suggestions relative to the content of this JEDEC standard or publication should
be addressed to JEDEC at the address below, or refer to www.jedec.org under Standards and Documents
for alternative contact information.
Published by
JEDEC Solid State Technology Association 2015
3103 North 10th Street
Suite 240 South
Arlington, VA 22201-2107
This document may be downloaded free of charge; however JEDEC retains the
copyright on this material. By downloading this file the individual agrees not to
charge for or resell the resulting material.
PLEASE!
DONT VIOLATE
THE
LAW!
This document is copyrighted by JEDEC and may not be
reproduced without permission.
For information, contact:
JEDEC Solid State Technology Association
3103 North 10th Street
Suite 240 South
Arlington, VA 22201-2107
or refer to www.jedec.org under Standards-Documents/Copyright Information.
-i-
Discard .......................................................................................................................................................... 62
Secure Erase .................................................................................................................................................. 64
Secure Trim ................................................................................................................................................... 65
Write protect management ............................................................................................................................ 66
Extended Security Protocols Pass Through Commands ................................................................................ 68
Production State Awareness .......................................................................................................................... 69
Field Firmware Update .................................................................................................................................. 72
Device lock/unlock operation ........................................................................................................................ 73
Application-specific commands .................................................................................................................... 76
Sleep (CMD5) ............................................................................................................................................... 77
Replay Protected Memory Block .................................................................................................................. 78
Dual Data Rate mode selection ..................................................................................................................... 92
Dual Data Rate mode operation .................................................................................................................... 92
Background Operations ................................................................................................................................. 93
High Priority Interrupt (HPI) ......................................................................................................................... 94
Context Management .................................................................................................................................... 95
Data Tag Mechanism..................................................................................................................................... 99
Packed Commands ...................................................................................................................................... 100
Exception Events ......................................................................................................................................... 102
Cache ......................................................................................................................................................... 103
Features cross matrix ................................................................................................................................... 105
Dynamic Capacity Management ................................................................................................................. 106
Large sector size .......................................................................................................................................... 107
Real Time Clock Information ...................................................................................................................... 111
Power Off Notification ................................................................................................................................ 112
Cache Enhancement Barrier ........................................................................................................................ 113
Cache Flushing Policy ................................................................................................................................. 114
Command Queuing ..................................................................................................................................... 115
Secure Write Protect Mode ......................................................................................................................... 120
Clock control ............................................................................................................................................... 121
Error conditions ........................................................................................................................................... 121
CRC and illegal command .......................................................................................................................... 121
Time-out conditions .................................................................................................................................... 122
Read ahead in multiple block read operation .............................................................................................. 123
Minimum performance ................................................................................................................................ 123
Speed class definition .................................................................................................................................. 123
Measurement of the performance ................................................................................................................ 124
Commands................................................................................................................................................... 124
Command types ........................................................................................................................................... 124
Command format ......................................................................................................................................... 124
Command classes ........................................................................................................................................ 125
Detailed command description .................................................................................................................... 126
Device state transition table ........................................................................................................................ 134
Responses .................................................................................................................................................... 136
Device status ............................................................................................................................................... 138
Memory array partitioning .......................................................................................................................... 142
Timings ....................................................................................................................................................... 144
Command and response............................................................................................................................... 144
Data read ..................................................................................................................................................... 146
Data write .................................................................................................................................................... 147
Bus test procedure timing ............................................................................................................................ 151
Boot operation ............................................................................................................................................. 152
Alternative boot operation ........................................................................................................................... 153
Timing Values ............................................................................................................................................. 154
Timing changes in HS200 and HS400 mode............................................................................................... 155
Enhanced Strobe in HS400 Mode ............................................................................................................... 158
-ii-
-iii-
-iv-
-v-
-vi-
-vii-
-viii-
-ix-
Tables
Page
Table 1 eMMC Voltage Modes ............................................................................................................................... 4
Table 2 eMMC interface .........................................................................................................................................7
-x-
-xi-
-xii-
-xiii-
-xiv-
-xv-
Foreword
This standard has been prepared by JEDEC and the MMC Association, hereafter referred to as MMCA.
JEDEC took the basic MMCA specification and adopted it for embedded applications, calling it
eMMC.
The purpose of this standard is the definition of the eMMC Electrical Interface, its environment and
handling. It provides guidelines for systems designers. The standard also defines a tool box (a set of
macro functions and algorithms) that contributes to reducing design-in effort.
Introduction
The eMMC is a managed memory capable of storing code and data. It is specifically designed for mobile
devices. The eMMC is intended to offer the performance and features required by mobile devices while
maintaining low power consumption. The eMMC device contains features that support high throughput
for large data transfers and performance for small random data more commonly found in code usage. It
also contains many security features.
eMMC communication is based on an advanced 11-signal bus. The communication protocol is defined
as a part of this standard and referred to as the eMMC mode.
The eMMC standard only covers embedded devices, however, the protocol and commands were
originally developed for a removable Device. The spec has been updated to remove references to the
removable Device but some functions remain to support backward compatibility.
As used in this document, shall or will denotes a mandatory provision of the standard. Should
denotes a provision that is recommended but not mandatory. May denotes a feature whose presence
does not preclude compliance, that may or may not be present at the option of the implementer.
-xvi-
Scope
This document provides a comprehensive definition of the eMMC Electrical Interface, its environment,
and handling. It also provides design guidelines and defines a tool box of macro functions and algorithms
intended to reduce design-in overhead.
Normative reference
The following normative documents contain provisions that through reference in this text, constitutes
provisions of this standard. For dated references, subsequent amendments to, or revisions of, any of these
publications do not apply. However, parties to agreements based on this standard are encouraged to
investigate the possibility of applying the most recent editions of the normative documents indicated. For
undated references, the latest edition of the normative document referred to applies.
INCITS, T10 Committee, SPC-4, SPSCSI Primary Commands
For the purposes of this publication, the following abbreviations for common terms apply:
Address Space Definitions:
Mapped Host Address Space: the area of the eMMC device that can be accessed by a read
command from the host software.
Private Vendor Specific Address Space: the area of the eMMC device that cannot be accessed by a
read command from the host software. It contains vendor specific internal management data. This
data can be either loaded at manufacturing or generated during device operation e.g., Memory Vendor
Firmware and mapping tables. It does not contain any data (or portion of data) that was sent from the
host to the device.
Unmapped Host Address Space: the area of the eMMC device that cannot be accessed by a read
command from the host software. It excludes private vendor specific address space. It may contain
old host data or copies of host data.
Block: A number of bytes, basic data transfer unit
CID: Device IDentification register
CLK: Clock signal
CMD: Command line or eMMC bus command (if extended CMDXX)
CRC: Cyclic Redundancy Check
SQS: Send Queue Status. CMD13 sent with SQS bit set to 1 act as a query for QSR
stuff bit: Filling 0 bits to ensure fixed length frames for commands and responses
TAAC: Defines the time dependent factor of the data access time
three-state driver: A driver stage that has three output driver states: HIGH, LOW and high impedance
(meaning that the interface does not have any influence on the interface level)
token: Code word representing a command
TRIM: A command that removes data from a write group. When TRIM is executed the region shall read
as 0. This serves primarily as a data removal command. (See Discard for performance command)
Tuning Process: A process commonly done by the host to find the optimal sampling point of a data input
signals. The device may provide a tuning data block as specified for HS200 mode
UI: Unit Interval; It is one bit nominal time. For example, UI=5 ns at 200 MHz SDR, UI = 2.5 ns for
200MHz DDR.
UTC: Universal time coordinated
VDD: represents the common supply in case of a single supply device (VCC=VCCQ) or when related to
consumed currents it represents the total consumed current for VCC and VCCQ.
VSS: Positive supply voltage ground for Core Device
VCC: Positive supply voltage for Core
VCCQ: Positive supply voltage for I/O
VSSQ: Positive supply voltage ground for I/O
Write Protection, Permanent: Write and erase prevention scheme, that once enabled, cannot be
reversed.
Write Protection, Power-on: Write and erase prevention scheme, that once enabled, can only be
reversed when a power failure event, that causes the device to reboot occurs, or the device is reset using
the reset pin.
Write protection, Temporary: Write and erase prevention scheme that can be enabled and disabled.
System Features
The eMMC device is a managed memory, that defines a mechanism for indirect memory accesses to the
memory array. This indirect access is often enabled by a separate controller. The advantage of indirect
memory access is that the memory device can perform several background memory management tasks
without the involvement of the host software. This results in a simpler flash management layer on the
host system.
The eMMC device supports the following features:
Communication
(VCCQ)
Memory Access
(VCC)
NOTE 1
devices.
2.7 3.6
2.7 3.6
1.70-1.95, 2.7-3.6
Refer to Table 199 eMMC voltage combinations for all the valid combinations of dual voltage
Eleven-wire bus (clock, Data Strobe, 1 bit command, 8 bit data bus) and a hardware reset.
o Clock frequencies of 0-200MHz
o Three different data bus width modes: 1-bit (default), 4-bit, and 8-bit
Boot Areas that will automatically stream data when using defined boot modes.
Two types of high capacity devices: small 512B sector devices and large 4KB sector devices.
5.1
The eMMC specification covers the behavior of the interface and the device controller. As part of this
specification the existence of a host controller and a memory storage array are implied but the operation
of these pieces is not fully specified.
Memory Addressing
Previous implementations of the eMMC specification (versions up to v4.1) implemented byte addressing
using a 32 bit field. This addressing mechanism permitted for eMMC densities up to and including 2
GB.
To support larger densities the addressing mechanism was update to support sector addresses (512 B
sectors). The sector addresses shall be used for all devices with capacity larger than 2 GB.
To determine the addressing mode use the host should read bit [30:29] in the OCR register.
The eMMC device transfers data via a configurable number of data bus signals. The communication
signals are:
CLK: Each cycle of this signal directs a one bit transfer on the command and either a one bit (1x) or a
two bits transfer (2x) on all the data lines. The frequency may vary between zero and the maximum
clock frequency.
Data Strobe: This signal is generated by the device and used for output in HS400 mode.
The frequency of this signal follows the frequency of CLK. For data output each cycle of this signal
directs two bits transfer(2x) on the data - one bit for positive edge and the other bit for negative edge.
For CRC status response output and CMD response output (enabled only HS400 enhanced strobe
mode), the CRC status and CMD Response are latched on the positive edge only, and don't care on
the negative edge.
CMD: This signal is a bidirectional command channel used for device initialization and transfer of
commands. The CMD signal has two operation modes: open-drain for initialization mode, and pushpull for fast command transfer. Commands are sent from the eMMC host controller to the eMMC
device and responses are sent from the device to the host.
DAT0-DAT7: These are bidirectional data channels. The DAT signals operate in push-pull mode.
Only the device or the host is driving these signals at a time. By default, after power up or reset, only
DAT0 is used for data transfer. A wider data bus can be configured for data transfer, using either
DAT0-DAT3 or DAT0-DAT7, by the eMMC host controller. The eMMC device includes internal
pull-ups for data lines DAT1-DAT7. Immediately after entering the 4-bit mode, the device
disconnects the internal pull ups of lines DAT1, DAT2, and DAT3. Correspondingly, immediately
after entering to the 8-bit mode the device disconnects the internal pull-ups of lines DAT1DAT7.
Name
Type
CLK
DS
DAT0
DAT1
DAT2
DAT3
DAT4
DAT5
DAT6
DAT7
CMD
RST_n
VCC
VCCQ
VSS
VSSQ
I
O/PP
I/O/PP
I/O/PP
I/O/PP
I/O/PP
I/O/PP
I/O/PP
I/O/PP
I/O/PP
I/O/PP/OD
I
S
S
S
S
NOTE 1
I: input; O: output; PP: push-pull; OD: open-drain; NC: Not connected (or logical high); S: power supply.
5.3
Each device has a set of information registers (see also clause 7, Device Registers):
Table 3 eMMC registers
Name
Width
(bytes)
CID
16
RCA
DSR
CSD
2
16
OCR
EXT_CSD
512
Description
Implementation
Mandatory
Mandatory
Optional
Mandatory
Mandatory
Mandatory
Switching the power supply off and back on. The device shall have its own power-on detection
circuitry that puts the device into a defined state after the power-on.
A reset signal
By sending a special command
command: a command is a token that starts an operation. A command is sent from the host to a
device . A command is transferred serially on the CMD line.
response: a response is a token that is sent from the device to the host as an answer to a previously
received command. A response is transferred serially on the CMD line.
data: data can be transferred from the device to the host or vice versa. Data is transferred via the data
lines. The number of data lines used for the data transfer can be 1(DAT0), 4(DAT0-DAT3) or
8(DAT0-DAT7).
For each data lines, data can be transferred at the rate of one bit (single data rate) or two bits (dual data
rate) per clock cycle.
Device addressing is implemented using a session address, assigned during the initialization phase, by the
bus controller to the connected device. A device is identified by its CID number. This method requires the
device to have a unique CID number. To ensure uniqueness of CIDs the CID register contains 24 bits
(MID and OID fields, see 7.2) that are defined by JEDEC/MMCA. Every device manufacturer is required
to apply for an unique MID (and optionally OID) number.
eMMC bus data transfers are composed of command, response, and data block structure tokens. One
data transfer is a bus operation. Operations always contain a command and a response token. In addition,
some operations have a data token.
eMMC commands are Block-oriented commands: These commands send a data block succeeded by
CRC bits. Both read and write operations allow either single or multiple block transmission. A multiple
block transmission is terminated when a stop command follows on the CMD line similarly to the
sequential read.
CLK
LSByte(High nibble)
MSByte-1(Low nibble)
MSByte(Low nibble)
LSByte+1(High nibble)
DAT3
DAT2
DAT1
DAT0
0
(start)
0
(start)
0
(start)
0
(start)
b7
b7
(odd)
(even)
b6
b6
(odd)
(even)
b5
b5
(odd)
(even)
b4
b4
(odd)
(even)
...
...
...
...
b3
b3
(odd)
(even)
b2
b2
(odd)
(even)
b1
b1
(odd)
(even)
b0
b0
(odd)
(even)
b15
(CRC
odd)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
Blocklength
1
(end)
1
(end)
1
(end)
1
(end)
CRC
CLK
LSByte
MSByte-1
MSByte
LSByte+1
DAT7
DAT6
DAT5
DAT4
DAT3
DAT2
DAT1
DAT0
0
(start)
0
(start)
0
(start)
0
(start)
0
(start)
0
(start)
0
(start)
0
(start)
b7
b7
(odd)
(even)
b6
b6
(odd)
(even)
b5
b5
(odd)
(even)
b4
b4
(odd)
(even)
b3
b3
(odd)
(even)
b2
b2
(odd)
(even)
b1
b1
(odd)
(even)
b0
b0
(odd)
(even)
...
...
...
...
...
...
...
...
b7
b7
(odd)
(even)
b6
b6
(odd)
(even)
b5
b5
(odd)
(even)
b4
b4
(odd)
(even)
b3
b3
(odd)
(even)
b2
b2
(odd)
(even)
b1
b1
(odd)
(even)
b0
b0
(odd)
(even)
Blocklength/2
b15
(CRC
odd)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
CRC
Notice that bytes data are not interleaved but CRC are interleaved
Start and end bits are only valid on the rising edge. (x: undefined)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
DS
LSByte
MSByte-1
MSByte
LSByte+1
DAT7
DAT6
DAT5
DAT4
DAT3
DAT2
DAT1
DAT0
b7
b7
(start)
(start)
(odd)
(even)
b6
b6
(start)
(start)
(odd)
(even)
b5
b5
(start)
(start)
(odd)
(even)
b4
b4
(start)
(start)
(odd)
(even)
b3
b3
(start)
(start)
(odd)
(even)
b2
b2
(start)
(start)
(odd)
(even)
b1
b1
(start)
(start)
(odd)
(even)
b0
b0
(start)
(start)
(odd)
(even)
...
...
...
...
...
...
...
...
b7
b7
(odd)
(even)
b6
b6
(odd)
(even)
b5
b5
(odd)
(even)
b4
b4
(odd)
(even)
b3
b3
(odd)
(even)
b2
b2
(odd)
(even)
b1
b1
(odd)
(even)
b0
b0
(odd)
(even)
Blocklength/2
b15
(CRC
odd)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b0
b0
...
(CRC
odd)
(CRC
even)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
b15
(CRC
odd)
CRC
Notice that bytes data are not interleaved but CRC are interleaved
Start bits are valid when Data Strobe is High and Low.
End bits are only valid when Data Strobe is High. (x: undefined)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
1
(end)
CLK
DAT
0
(start)
(end)
CLK
DAT
0
(start)
(end)
Start, end, CRC status and boot acknowledge bits are only valid on the rising edge (x is undefined)
DS
DAT
(start)
(start)
1
(end)
DS
DAT
(start)
(start)
Start bits are valid when Data Strobe is High and Low.
CRC status and end bit are only valid when Data Strobe is High (x is undefined)
1
(end)
Data
Rate
I/O Voltage
Bus Width
Frequency
Backwards
Compatibility with
legacy MMC card
Single
3 V/1.8 V/
1.2 V
1, 4, 8
0-26 MHz
26 MB/s
Single
3 V/1.8 V/
1.2 V
1,4, 8
0-52 MHz
52 MB/s
Dual
3 V/1.8 V/
1.2 V
4, 8
0-52 MHz
104 MB/s
HS200
Single
1.8 V/1.2 V
4, 8
0-200 MHz
200 MB/s
HS400
Dual
1.8 V/1.2 V
0-200 MHz
400 MB/s
5.3.3
CLOCK
Clock Generator
Output Circuit
CMD-In
DAT-In
Flash
Memory
Tuned Clock
Adjustable
Sampling
Point
CMD-Out
Data
Strobe
Enhanced
Strobe Mode
DAT Input Circuit
Enhanced
Strobe Mode
DAT-Out
DAT Output
Data
Strobe
Host
Device
Figure 13 HS400 Host and Device block diagram
6.1
eMMC Overview
All communication between host and device are controlled by the host (master). The host sends a
command, that results in a device response. A general overview of the command flow is shown in Figure
25 for the device identification mode and in Figure 27 for the data transfer mode. The commands are
listed in the command tables (see Table 49 to Table 58). The dependencies between current state, received
command and following state are listed in Table 60. Five operation modes are defined for the eMMC
system (hosts and devices):
Boot mode:
The device will be in boot mode after power cycle, reception of CMD0 with argument of
0xF0F0F0F0 or the assertion of hardware reset signal.
Interrupt mode
Host and device enter and exit interrupt mode simultaneously. In interrupt mode there is no data
transfer. The only message allowed is an interrupt service request from the device or the host.
Inactive mode
The device will enter inactive mode if either the device operating voltage range or access mode is not
valid. The device can also enter inactive mode with GO_INACTIVE_STATE command (CMD15).
The device will reset to Pre-idle state with power cycle.
Table 5 shows the dependencies between bus modes, operation modes and device states. Each state in the
eMMC state diagram (see Figure 25 and Figure 27) is associated with one bus mode and one operation mode.
Table 5 CMD line modes overview
Device state
Inactive State
Pre-Idle State
Pre-Boot State
Idle State
Ready State
Identification State
Stand-by State
Sleep State
Transfer State
Bus-Test State
Sending-data State
Receive-data State
Programming State
Disconnect State
Boot State
Wait-IRQ State
Operation mode
Inactive mode
Boot mode
Push-pull
Boot mode
Interrupt mode
Open-drain
Partition Management
6.2.1 General
The default area of the memory device consists of a User Data Area to store data, two possible boot area
partitions for booting (see 6.3.2) and the Replay Protected Memory Block Area Partition (see 6.6.22) to
manage data in an authenticated and replay protected manner. The memory configuration initially consists
(before any partitioning operation) of the User Data Area and RPMB Area Partitions and Boot Area
Partitions (whose dimensions and technology features are defined by the memory manufacturer).
User Data Area
0x00000000
0x00000000
128 KB
RPMB Partition
0x0000
Device Size 1
Two Boot Area Partitions, whose size is multiple of 128 KB and where booting from eMMC can be
performed.
One RPMB Partition accessed through a trusted mechanism, whose size is defined as multiple of
128 KB.
Four General Purpose Area Partitions to store sensitive data or for other host usage models, whose
sizes are a multiple of a Write Protect Group.
Each of the General Purpose Area Partitions can be implemented with enhanced or extended
technological features (such as better reliability1) that distinguish them from the default storage media. If
the enhanced storage media feature is supported by the device, boot and RPMB Area Partitions shall be
implemented as enhanced storage media by default.
This is cited as an example of an enhanced storage media characteristic, and should not be considered as a
necessary definition of enhanced storage media technology. The definition of enhanced storage media should be
decided upon by each system manufacturer, and is outside the scope of this standard.
General (contd)
Boot and RPMB Area Partitions' sizes and attributes are defined by the memory manufacturer (readonly), while General Purpose Area Partitions' sizes and attributes can be programmed by the host only
once in the device life-cycle (one-time programmable).
Moreover, the host is free to configure one segment in the User Data Area to be implemented as enhanced
storage media, and to specify its starting location and size in terms of Write Protect Groups. The attributes
of this Enhanced User Data Area can be programmed only once during the device life-cycle (one-time
programmable).
A possible final configuration can be the following:
0x00000000
Size as multiple of
128 KB
Boot Partitions
Start Address
RPMB Partition
Multiple of WPG
0x0000
Enhanced User
Data Area
Size
RPMB Partition
Device Size 1
Partition 1
Partition 2
Partition 3
Partition 4
0x00000000
WPG
Size
General (contd)
General Purpose Partitions and Enhanced User Data Area configuration by the host can have effects on
data previously stored (they will be destroyed) and the device initialization time. In particular, the
initialization time after first power cycle subsequent to the configuration can exceed the maximum
initialization time defined by the specs since the internal controller could execute operations to set up the
configurations stated by the host.
More generally also the following initialization phases can be affected by the new configuration. Max
power up timings shall be specified in the device technical literature.
6.2.2 Command restrictions
Some restrictions for the commands that can be issued to each partition is defined:
Boot Partitions
o
RPMB Partition
o
Command class 6 (Write Protect) and class 7 (Lock Device) not admitted.
Only commands of classes Class0, Class2 and Class4 are admitted. Still usage of any other
command than CMD0, CMD6, CMD8, CMD12, CMD13, CMD15 or commands defined in
6.6.22 shall be considered as illegal one.
Write protection can be set individually for each write protect group in each partition. So the host
can set write protection types differently in each write protect group.
In the Enhanced User Data Area, all the commands belonging to the classes admitted in the User Data
Area can be issued.
6.2.3 Extended Partitions Attribute
Each General Purpose Partition can have a different extended partition attribute. The list of attribute types
includes:
Using the extended attribute, the device can optimize the mixture of storage media characteristics to better
suit the intended uses per partition.
A single partition cannot have both enhanced and extended attributes set for it.
General Purpose Partitions - size and attribute of max 4 partitions. The fields in the Modes segment of
the EXT_CSD register to be set are:
o
Enhanced User Data Area - start address and attribute of the region. The fields in the Modes segment
of the EXT_CSD register to be set are:
o
The Enhanced User Data Area start address (ENH_START_ADDR in the Extended CSD) shall be write
protect group aligned. It is a group address in byte units, for densities up to 2 GB, and in sector units for
densities greater than 2 GB. The device will ignore the LSBs below the write group size and will align the
Enhanced User Data Area start address to the Write Protect Group the address (in bytes or sectors)
belongs to. The address space of the enhanced user data area is continuous to the address for the rest of
the user data area (there is no address gap between the enhanced user data area and the rest of the user
data area).
The granularity of General Purpose Partitions and of the Enhanced User Data Area is in units of High
Capacity Write Protect Group Sizes (see 7.4). When the partition parameters are configured,
ERASE_GROUP_DEF bit in the Extended CSD shall be set to indicate that High Capacity Erase Group
Sizes and High Capacity Write Protect Group Sizes are to be used. If the partition parameters are sent to a
device by CMD6 before setting ERASE_GROUP_DEF bit, the slave shows SWITCH_ERROR.
Once the device is partitioned and the configuration is stable, all the Command Class 5 and 6 commands
will be referred to the high capacity erase groups and write protect groups.
In addition to partitioning parameters fields mentioned before, the host shall set Bit 0 in
PARTITION_SETTING_COMPLETED in Modes segment: in this way the host notifies the device that
the setting procedure has been successfully completed. This bit setting is to protect partitioning sequence
against unexpected power loss event: if a sudden power loss occurs after that partitioning process has
been only partially executed, at the next power up the device can detect and invalidate - being this bit not
set - the previous incomplete partitioning process giving the host the possibility to repeat and correctly
complete it.
Figure 16 Flow Chart for General Purpose Partitions & Enhanced User Data Area parameter
setting
A CMD13 shall be issued by the host to make sure that all the parameters are correctly set. If any of the
partitioning parameters is not correct a SWITCH_ERROR will be raised by the device. Since the device
will not know the total size of configured partitions and user area until
PARTITION_SETTING_COMPLETED bit is set, device may show SWITCH_ERROR when host set
PARTITION_SETTING_COMPLETED bit, if the total size of the configured partitions and user data
area does not fit in the available space of the device. In this case, all the setting will be cleared after the
next power cycle. So the host needs to set proper values in each of partition configuration register bytes
again.
The device will actually configure itself, according to the partition parameters in the Extended CSD, only
after a power cycle. Any valid commands issued after PARTITION_SETTING_COMPLETED bit is set
but before a power cycle takes place will be normally executed. Any previous incomplete partitioning
configuration sequence before this bit is set will be cancelled upon a power cycle.
After the power cycle following the partition configuration, C_SIZE value for up to 2 GB devices and
SEC_COUNT value for more than 2GB devices will be changed to indicate the size of user data area after
the configuration. The size compared to 2 GB shall be the size of user data area before configuring
partitions (e.g., for more than 2 GB devices before configuring partitions, SEC_COUNT shall keep
indicating the size of user data area after configuring partitions, even if the size is decreased to lower than
or equal to 2 GB).The size of the user data area includes the size of Enhanced User Data area in the user
area. So host may need to read these values after the power cycle to calculate the size of the user data
area. Access mode shall keep after configuring partitions.
If the host tries to change General Purpose partitions and Enhanced User Data Area features by using
CMD6 after a power up following the configuration procedure, the device will assert the
SWITCH_ERROR bit in the status register of CMD 6 response without performing any internal action.
Partitions configuration parameters are stored in one time programmable fields of the Extended CSD
register. The host can read them by a CMD8 even though the PARTITION_SETTING_COMPLETED
has not yet been set but the execution of partitioning will take place only after the following power up. It
is recommended to avoid changes on these parameters after reading them since they are one time
programmable fields.
The host shall follow the flow chart in Figure 16 for configuring the parameters of General Purpose Area
Partitions and Enhanced User Data Area; otherwise undefined behavior may result.
In boot operation mode, the master (eMMC host) can read boot data from the slave (eMMC device) by
keeping CMD line low or sending CMD0 with argument + 0xFFFFFFFA, before issuing CMD1. The data
can be read from either boot area or user area depending on register setting.
6.3.1 Device reset to Pre-idle state
The device may enter into Pre-idle state through any of the following four mechanisms:
After power-on by the host, the device (even if it has been in Inactive state) is in Pre-idle State.
Hardware reset may be used by host resetting a device , moving the device to Pre-idle state and
disabling power-on period write protect on blocks that had been set as power-on write protect before
the reset was asserted. When the device receives GO_PRE_IDLE_STATE command (CMD0 with
argument of 0xF0F0F0F0) or assertion of hardware reset signal during sleep state, the device also
moves to Pre-idle state.
GO_PRE_IDLE_STATE command or hardware RESET assertion, the device's output bus drivers are in
high-impedance state and the device is initialized with a default relative device address (0x0001) and with
a default driver stage register setting, as shown in 7.6.
When device powers up, RST_n signal also rises with power source ramp up. So the device may detect
rising edge of the RST_n signal at the power up period (either (1), (2), (3) or (4) as shown in below).The
device must handle this situation and work properly after the power-up.
In the dual data rate mode, data are clocked out with both the rising edge of the clock and the falling edge
of the clock and there are two CRC appended per data line. In this mode, the block length is always 512
bytes, and bytes come interleaved in either 4-bit or 8-bit width configuration. Bytes with odd
number(1,3,5, ... ,511) shall be sampled on the rising edge of the clock by the host and bytes with even
number (2,4,6, ... ,512) shall be sampled on the falling edge of the clock by the host. The device will
append two CRC16 per each valid data line, one corresponding to the bits of the 256 odd bytes to be
sampled on the rising edge of the clock by the host and the second for the remaining bits of the 256 even
bytes of the block to be sampled on the falling edge of the clock by the host.
All timings on DAT lines shall follow DDR timing mode. The start bit, the end bit and Boot acknowledge
bits are only valid on the rising edge of the clock. The value of the falling edge is not guaranteed.
The master can terminate boot mode by issuing CMD0 (Reset). If the master issues CMD0 (Reset) in the
middle of a data transfer, the slave has to terminate the data transfer or acknowledge pattern within NST
clock cycles (one data cycle and end bit cycle). If the master terminates boot mode between consecutive
blocks, the slave must release the data line(s) within NST clock cycles.
Boot operation will be terminated when all contents of the enabled boot data are sent to the master. After
boot operation is executed, the slave shall be ready for CMD1 operation and the master needs to start a
normal MMC initialization sequence by sending CMD1.
Power On
Pre-idle State
(pre-idle)
Hardware Reset
or
CMD0 with
Arg = 0xF0F0F0F0
BOOT_PARTITION_ENABLE = 1
Pre-boot state
(pre-boot)
Original Boot Mode: CMD line low for 74 or more clock cycles
or
Alternative Boot mode: CMD0 with arg=0xFFFFFFFA
Boot State
(boot)
Card-identification Mode
Idle State
(idle)
CMD0
CMD1
Inactive State
(ina)
CMD15
Boot state
(boot)
Idle state
(idle)
CMD1
CMD0
Other cases:
- If host uses original boot mode, CMD0 with
arg=0x00000000 shall reset the bus condition to x1
SDR mode.
- If host uses alternate boot mode and the device
automatically moves to idle state because the host
reads the entire boot partition, any CMD0 with
arg=0x00000000, following the first subsequent
CMD0 with arg=0x00000000, shall reset the bus
condition to x1 SDR mode even if retain is set.
- If host issues CMD0 with other arguments than
arg=0x00000000, the bus condition shall be reset to
x1 SDR mode.
All the bits BOOT_WP register, except the two R/W bits B_PERM_WP_DIS (bit 4) and
B_PERM_WP_EN (bit 2), shall only be written once per power cycle. The protection mode intended
for both boot areas will be set with a single write.
Two bits in the register are type R/W, B_PERM_WP_DIS (bit 4) and B_PERM_WP_EN (bit 2) the
first write to the boot register will permanently set these bits. The flow chart in Figure 24 should be
followed for the first write to register BOOT_WP to properly set these bits.
If the B_PERM_WP_EN bit is set for only one boot partition, the host should ensure that
B_SEC_WP_SEL (bit 7) and B_PERM_WR_SEC_SEL (bit 3) are set correctly to avoid accidentally
permanently protecting the other boot Area.
The host has the ability to disable both permanent and power on write protection in the boot area by
setting B_PERM_WP_DIS (EXT_CSD[173] bit 4) and B_PWR_WP_DIS (EXT_CSD[173] bit 6). If
boot area protection is not required it is recommended that these bits be set in order to ensure that the boot
area is not protected unintentionally or maliciously.
Refer to 6.6.40, Secure Write Protect Mode, for further handling of BOOT_WP register when
SECURE_WP_EN is set.
No
Do the contents in boot area 1 and/or 2
need to be permanently protected?
Yes
Boot Area 1
Which Boot Area Requires
Permanent Protection?
Both Area 1
and 2
Boot Area 2
Write the Value
0b10x001xx to
BOOT_WP, which will
permanently protect
Boot Area 1
While in device identification mode the host resets the device, validates operation voltage range and
access mode, identifies the device and assigns a Relative device Address (RCA) to the device on the bus.
All data communication in the Device Identification Mode uses the command line (CMD) only.
6.4.1 Device reset
After receiving Command GO_IDLE_STATE (CMD0 with argument of 0x00000000), the device s go to
Idle State. The following are the cases where the device moves into Idle State.
In this state, the devices output bus drivers are in high-impedance state and the Device is initialized with
a default relative Device address (0x0001) and with a default driver stage register setting, as shown in 7.6
The host clocks the bus at the identification clock rate fOD, as described in 10.6. CMD0 with argument of
0x00000000 is valid in all states, with the exception of Inactive State. While in Inactive state the Device
does not accept CMD0 with argument of 0x00000000.
For backward compatibility reason, if device receive CMD0 with argument of other than 0xFFFFFFFA or
0xF0F0F0F0 in any state except Inactive state, device shall treat it as Device reset command and move to
Idle state. CMD0 with argument of 0xFFFFFFFA is a boot initiation command in Pre-boot state, but if
host issue this command in any state except Inactive state and Pre-boot state, the device shall treat it as a
rest command and move to Idle state.
If there is no indication by a host to a memory that the host is capable of handling sector type of
addressing the higher than 2GB of density of memory will change its state to Inactive (similarly to a
situation where there is no common voltage range to work with) (exception, if a host send 0x0000
0000 for voltage range validation, device shall not change its state to Inactive during voltage range
validation stage) This will also be true if the operand generated by the host is 0x0000 0000, and does
not represent any valid range.
From the indication of the sector type of addressing requirement in the OCR register the host is able
to separate the device from the byte access mode Devices and prepare itself.
The eMMC devices shall respond with a fixed pattern of either 0x00FF 8080 or 0x40FF 8080 if device is
busy, 0x80FF8080 (capacity less than or equal to 2GB) or 0xC0FF8080 (capacity greater than 2 GB) if
device is entering Ready state, and they shall not move into Inactive state. The host shall ignore the access
mode bits if the device is busy.
Due to legacy reasons a host may need to change the voltage of a device. If the host changes the voltage
range from one range to another range, the device shall be fully powered down and then powered up to
the new voltage range. Dual voltage devices may fail if the voltage range 1.95 V to 2.7 V is used.
The addressing mode should be reconfirmed by the host by reading the SEC_COUNT information from
the EXT_CSD register.
6.4.3 From busy to ready
The busy bit in the CMD1 response can be used by a device to tell the host that it is still working on its
power-up/reset procedure (e.g., downloading the register information from memory field) and is not ready
yet for communication. In this case the host must repeat CMD1 until the busy bit is cleared.
During the initialization procedure, the host is not allowed to change the operating voltage range or access
mode setting. Such changes shall be ignored by the device. If there is a real change in the operating
conditions, the host must reset the device (using CMD0 with argument of 0x00000000) and restart the
initialization procedure. However, for accessing devices already in Inactive State, a hard reset must be
done by switching the power supply off and back on.
The command GO_INACTIVE_STATE (CMD15) can be used to send an addressed device into the
Inactive State. This command is used when the host explicitly wants to deactivate a device.
The command CMD1 shall be implemented by all devices defined by this standard.
Interrupt mode
The interrupt mode on the eMMC system enables the master (eMMC host) to grant the transmission
allowance to the slaves (Device) simultaneously. This mode reduces the polling load for the host and
hence, the power consumption of the system, while maintaining adequate responsiveness of the host to a
Device request for service. Supporting eMMC interrupt mode is an option, both for the host and the
Device.
The system behavior during the interrupt mode is described in the state diagram in Figure 26.
The host must ensure that the Device is in Stand-by State before issuing the GO_IRQ_STATE
(CMD40) command. While waiting for an interrupt response from the Device, the host must keep the
clock signal active. Clock rate may be changed according to the required response time.
The host sets the Device into interrupt mode using GO_IRQ_STATE (CMD40) command.
A Device in Wait-IRQ-State is waiting for an internal interrupt trigger event. Once the event occurs,
the Device starts to send its response to the host. This response is sent in the open-drain mode.
While waiting for the internal interrupt event, the Device is also waiting for a start bit on the
command line. Upon detection of a start bit, the Device will abort interrupt mode and switch to the
stand-by state.
Regardless of winning or losing bus control during CMD40 response, the device switches to stand-by
state (as opposed to CMD2).
After the interrupt response was received by the host, the host returns to the standard data
communication procedure.
Identification mode
CMD3
CMD15
RESET signal
CMD13
No state transitions in
Data transfer mode
0 sent
Stand-by
State (stby)
CMD40
CMD4, 9, 10,
39
Wait-IRQ
State (irq)
CMD55
Interrupt mode
If the host wants to terminate the interrupt mode before an interrupt response is received, it can
generate the CMD40 response by himself (with Device bit = 0) using the reserved RCA address
0x0000; this will bring the Device from Wait-IRQ-State back into the Stand-by-State. Now the host
can resume the standard communication procedure.
When the Device is in Stand-by State, communication over the CMD and DAT lines will be performed in
push-pull mode. Until the contents of the CSD register is known by the host, the fPP clock rate must remain
at fOD (see 10.6). The host issues SEND_CSD (CMD9) to obtain the Device Specific Data (CSD register).
CMD3
CMD15
RESET signal
Identification mode
Interrupt mode
CMD 44, 45
CMD 13, 55
Sleep
State (slp)
Wait-IRQ
State (irq)
No state transitions in
Data transfer mode CMD12, operation
complete
CMD40
CMD5
CMD7
Stand-by
State (stby)
CMD7
CMD 4, 9, 10,
39
Operation
complete
Operation
complete
Transfer
State (tran)
CMD19
Receive-data
State (rcv)
CMD 44, 45
Bus test
State (btst)
CMD7
Disconnect
State (dis)
Programming
State (prg)
CMD12, transfer
complete
CMD14
CMD7
High Priority Interrupt
(CMD12/CMD13),
CMD 44, 45
NOTE The busy (DAT0=low) is always active during the prg-state. Due to legacy reasons, a Device may still treat
CMD24/25 during prg-state (while busy is active) as a legal or illegal command. A host should not send CMD24/25
while the Device is in the prg state and busy is active.
While the Device is in Stand-by State, CMD7 is used to select the Device and put it into the Transfer
State by including Devices relative address in the argument. If the Device was previously selected and
was in Transfer State its connection with the host is released and it will move back to the Stand-by State
when deselected by CMD7 with any address in the argument that is not equal to Devices own relative
address. When CMD7 is issued with the reserved relative Device address 0x0000, the Device is put
back to Stand-by State. Reception of CMD7 with Devices own relative address while the Device is in
Transfer State is ignored by the Device and may be treated as an Illegal Command. After the Device is
assigned an RCA it will not respond to identification commands: CMD1, CMD2, or CMD3 (see 6.4.4).
While the Device is in Disconnect State, CMD7 is used to select the Device and put it into the
Programming State by including Devices relative address in the argument. If the Device was previously
selected and was in Programming State its connection with the host is released and it will move back to
the Disconnect State when deselected by CMD7 with any address in the argument that is not equal to
Devices own relative address. Reception of CMD7 with Devices own relative address while the Device
is in Programming State is ignored by the Device and may be treated as an Illegal Command.
All data communication in the Data Transfer Mode is point-to point between the host and the selected
Device (using addressed commands). All addressed commands get acknowledged by a response on the
CMD line.
The relationship between the various data transfer modes is summarized (see Figure 27):
All data read commands can be aborted any time by the stop command (CMD12). The data transfer
will terminate and the Device will return to the Transfer State. The read commands are: block read
(CMD17), multiple block read (CMD18), send tuning block (CMD21) and send write protect
(CMD30).
All data write commands can be aborted any time by the stop command (CMD12). The write commands must be stopped prior to deselecting the Device by CMD7. The write commands are: block
write (CMD24 and CMD25), write CID (CMD26), and write CSD (CMD27).
As soon as the data transfer is completed, the Device will exit the data write state and move either to
the Programming State (transfer is successful) or Transfer State (transfer failed).
If a block write operation is stopped and the block length and CRC of the last block are valid, the data
will be programmed.
The Device may provide buffering for block write. This means that the next block can be sent to the
Device while the previous is being programmed.
There is no buffering option for write CSD, write CID, write protection and erase. This means that
while the Device is busy servicing any one of these commands, no other data transfer commands will
be accepted. DAT0 line will be kept low as long as the Device is busy and in the Programming State.
Parameter set commands are not allowed while Device is programming. Parameter set commands are:
set block length (CMD16), and erase group selection (CMD35-36).
Read commands are not allowed while Device is programming.
Moving another Device from Stand-by to Transfer State (using CMD7) will not terminate a
programming operation. The Device will switch to the Disconnect State and will release the DAT0
line.
A Device can be reselected while in the Disconnect State, using CMD7. In this case the Device will
move to the Programming State and reactivate the busy indication.
In the following format definitions, all upper case flags and parameters are defined in the CSD (7.3), and
the other status flags in the Device Status (6.13).
6.6.1 Command sets and extended settings
The Device operates in a given command set, by default, after a power cycle, reset by CMD0 with
argument of 0x00000000 or after boot operation; it is the eMMC standard command set, using a single
data line, DAT0. The host can change the active command set by issuing the SWITCH command
(CMD6) with the Command Set access mode selected.
The supported command sets, as well as the currently selected command set, are defined in the EXT_CSD
register. The EXT_CSD register is divided in two segments, a Properties segment and a Modes segment.
The Properties segment contains information about the Device capabilities. The Modes segment reflects
the current selected modes of the Device.
The host reads the EXT_CSD register by issuing the SEND_EXT_CSD command. The Device sends the
EXT_CSD register as a block of data, 512 bytes long. Any reserved, or write only field, reads as 0. The
host can write the Modes segment of the EXT_CSD register by issuing a SWITCH command and setting
one of the access modes. All three modes access and modify one of the EXT_CSD bytes, the byte pointed
by the Index field.
NOTE The Index field can contain any value from 0255, but only values 0191 are valid values. If the Index
value is in 192-255 range the Device does not perform any modification and the SWITCH_ERROR status bit is set.
Access Name
Operation
00
01
10
11
Command Set
Set Bits
Clear Bits
Write Byte
The command set is changed according to the Cmd Set field of the argument
The bits in the pointed byte are set, according to the 1 bits in the Value field.
The bits in the pointed byte are cleared, according to the 1 bits in the Value field.
The Value field is written into the pointed byte.
The SWITCH command can be used either to write the EXT_CSD register or to change the command set.
If the SWITCH command is used to change the command set, the Index and Value field are ignored, and
the EXT_CSD is not written. If the SWITCH command is used to write the EXT_CSD register, the
command set field is ignored, and the command set remains unchanged.
The SWITCH command response is of type R1b, therefore, the host should read the Device status, using
SEND_STATUS command, after the busy signal is de-asserted, to check the result of the SWITCH
operation.
Device is
Locked
Yes
No
VCCq=1.8V or 1.2V?
No
Cannot switch to
HS200 mode
Yes
Read CARD_TYPE
(CMD8)
Device supports
HS200?
No
Yes
Set desired bus
width 4bit or 8bit
(CMD6)(2)
Busy
Device Busy?
Not Busy
Tuning process
completed?
Device reports
No Error?
(CMD13)
Yes
No
Yes
HS200 mode
selection completed
(1) Locked device does not support CMD21 therefore this check may be done any time before CMD21 is used.
(2) The switch to the required bus width may be done any time before the tuning process starts
No
5) Set the Selected Driver Strength parameter in the HS_TIMING [185] field of the Extended CSD
register to the appropriate driver strength for HS400 operation and set the Timing Interface
parameter to 0x2 to switch to HS200 mode,
6) Perform the Tuning Process at the HS400 target operating frequency,
NOTE Tuning process in HS200 mode is required to synchronize the command response on the CMD line to
CLK for HS400 operation.
7) Set the Timing Interface parameter in the HS_TIMING [185] field of the Extended CSD register to
0x1 to switch to High Speed mode and then set the clock frequency to a value not greater than 52
MHz,
8) Set BUS_WIDTH[183] to 0x06 to select the dual data rate x8 bus mode,
9) Set the Timing Interface parameter in the HS_TIMING [185] field of the Extended CSD register to
0x3 to switch to HS400 mode.
Tuning process
completed?
No
Yes
HS200 mode
selection completed
HS400 mode
selection completed
Yes
Set HS_TIMING to 0x3
(HS400)
Yes
No
Device busy?
No
8) Set the Timing Interface parameter in the HS_TIMING [185] field of the Extended CSD register to
0x3 to switch to HS400 mode,
9) Host may set the clock frequency to a value not greater than 200 MHz".
Yes
Set HS_TIMING to 0x3
(HS400)
Yes
No
No
Device busy?
Data Pattern
10xxxxxx
End bit
1
The Device ignores all but the first two bits of the data pattern. Therefore, the Device buffer size is not
limiting the maximum length of the data pattern. The minimum length of the data pattern is two bytes, of
which the first two bits of each data line are sent back, by the Device, reversed. The data pattern sent by
the host may optionally include a CRC16 checksum, this is ignored by the Device.
The Device detects the start bit on DAT0 and synchronizes accordingly the reading of all its data inputs.
The host ignores all but the two first bits of the reverse data pattern. The length of the reverse data pattern
is eight bytes and is always sent using all the Devices DAT lines (See Table 8 through Table 10). The
reverse data pattern sent by the Device may optionally include a CRC16 checksum, that is ignored by the
host.
The Device has internal pull ups in DAT1DAT7 lines. In cases where the Device is connected to only a
1-bit or a 4-bit eMMC system, the input value of the upper bits (e.g., DAT1DAT7 or DAT4DAT7) are
detected as logical 1 by the Device.
Table 8 1-bit bus testing pattern
Data
line
DAT0
DAT1
DAT2
DAT3
DAT4
DAT5
DAT6
DAT7
Notes
Start bit defines beginning of pattern
No data pattern sent
No data pattern sent
No data pattern sent
No data pattern sent
No data pattern sent
No data pattern sent
No data pattern sent
Data
line
DAT0
DAT1
DAT2
DAT3
DAT4
DAT5
DAT6
DAT7
Notes
Start bit defines beginning of pattern
Notes
Start bit defines beginning of pattern
Index
Reserved
CRC7
010101
All 0
1111011
CMD
CMD21
R1
Data Block
146 Clk
CRC16
XXXX
3 C C C 3 3 C C C F F F E F F F E E F
3 C C C 3 3 C C C F F F E F F F E E F
Byte #32
Byte #31
Byte #30
Byte #29
Byte #28
Byte #27
Byte #26
Byte #25
Byte #24
Byte #23
Byte #22
Byte #21
Byte #20
Byte #19
Byte #18
Byte #17
Byte #16
Byte #15
Byte #14
Byte #13
Byte #12
Byte #11
Byte #10
Byte #9
Byte #8
Byte #7
Byte #6
Byte #5
Byte #4
Byte #3
Byte #2
Byte #1
F F D F F F D D F F F B F F F B B F F F 7 F F F 7 7 F 7 B D E F
F F D F F F D D F F F B F F F B B F F F 7 F F F 7 7 F 7 B D E F
Byte #64
Byte #63
Byte #62
Byte #61
Byte #60
Byte #59
Byte #58
Byte #57
Byte #56
Byte #55
Byte #54
Byte #53
Byte #52
Byte #51
Byte #50
Byte #49
Byte #48
Byte #47
Byte #46
Byte #45
Byte #44
Byte #43
Byte #42
Byte #41
Byte #40
Byte #39
Byte #38
Byte #37
Byte #36
Byte #35
Byte #34
Byte #33
F F F 0 F F F 0 0 F F C C C
F F F 0 F F F 0 0 F F C C C
3 C C C 3 3 C C C F F F E F F F E E
3 C C C 3 3 C C C F F F E F F F E E
Byte #96
Byte #95
Byte #94
Byte #93
Byte #92
Byte #91
Byte #90
Byte #89
Byte #88
Byte #87
Byte #86
Byte #85
Byte #84
Byte #83
Byte #82
Byte #81
Byte #80
Byte #79
Byte #78
Byte #77
Byte #76
Byte #75
Byte #74
Byte #73
Byte #72
Byte #71
Byte #70
Byte #69
Byte #68
Byte #67
Byte #66
Byte #65
F F F D F F F D D F F F B F F F B B F F F 7 F F F 7 7 F 7 B D E
F F F D F F F D D F F F B F F F B B F F F 7 F F F 7 7 F 7 B D E
Byte #128
Byte #127
Byte #126
Byte #125
Byte #124
Byte #123
Byte #122
Byte #121
Byte #120
Byte #119
Byte #118
Byte #117
Byte #116
Byte #115
Byte #114
Byte #113
Byte #112
Byte #111
Byte #110
Byte #109
Byte #108
Byte #107
Byte #106
Byte #105
Byte #104
Byte #103
Byte #102
Byte #101
Byte #100
Byte #99
Byte #98
Byte #97
Tuning Pattern
DAT[0]
DAT[1]
DAT[2]
DAT[3]
DAT[4]
DAT[5]
DAT[6]
DAT[7]
DAT[7:0]
S
S
S
S
S
S
S
S
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
E946h
8D06h
A2E5h
C59Fh
E946h
8D06h
A2E5h
C59Fh
F F 0 F F F 0 0 F F C C C 3 C C
F F 0 F F F 0 0 F F C C C 3 C C
Byte #3
Byte #2
Byte #1
E
E
E
E
E
E
E
E
The host can abort reading at any time, within a multiple block operation, regardless of the its type.
Transaction abort is done by sending the stop transmission command. If either one of the following
conditions occurs, the Device will reject the command, remain in Tran state and respond with the
respective error bit set.
The host provides an out of range address as an argument to either CMD17 or CMD18.
ADDRESS_OUT_OF_RANGE is set.
The currently defined block length is illegal for a read operation. BLOCK_LEN_ERROR is set.
The address/block-length combination positions the first data block misaligned to the Device physical
blocks. ADDRESS_MISALIGN is set.
If the Device detects an error (e.g., out of range, address misalignment, internal error, etc.) during a
multiple block read operation (both types) it will stop data transmission and remain in the Data State. The
host must then abort the operation by sending the stop transmission command. The read error is reported
in the response to the stop transmission command.
If the host sends a stop transmission command after the Device transmits the last block of a multiple
block operation with a pre-defined number of blocks, it is regarded as an illegal command, since the
Device is no longer in data state.
If the host uses partial blocks whose accumulated length is not block aligned, and block misalignment is
not allowed, the Device shall detect a block misalignment error condition during the transmission of the
first misaligned block and the content of the further transferred bits is undefined. As the host sends
CMD12 the Device will respond with the ADDRESS_MISALIGN bit set and return to Tran state.
If the host sets the argument of the SET_BLOCK_COUNT command (CMD23) to all 0s, then the
command is accepted; however, a subsequent read will follow the open-ended multiple block read
protocol (STOP_TRANSMISSION command - CMD12 - is required).
If a host had sent a CMD16 for password setting to a higher than 2GB of density of Device, then this host
MUST re-send CMD16 before read data transfer; otherwise, the Device will response a
BLK_LEN_ERROR and stay in TRANS state without data transfer since the data block (except in
password application) transfer is sector unit (512B). Same error applies to up to 2GB of density of
Devices in case partial read accesses are not supported.
Reliable Write: Multiple block write with pre-defined block count and Reliable Write parameters.
This transaction is similar to the basic pre-defined multiple-block write (defined in previous bullet)
with the following exceptions. The old data pointed to by a logical address must remain unchanged
until the new data written to same logical address has been successfully programmed. This is to
ensure that the target address updated by the reliable write transaction never contains undefined data.
Data must remain valid even if a sudden power loss occurs during the programming.
o
o
o
o
The block size defined by SET_BLOCKLEN(CMD16) is ignored and all blocks are 512 B in
length. The data transfers will be in multiple of 512 B sectors or in multiple of eight 512 B sectors
if Large Sector size mode is activated. There is no limit on the size of the reliable write.
The function is activated by setting the Reliable Write Request parameter (bit 31) to 1 in the
SET_BLOCK_COUNT command (CMD23) argument.
Reliable write transactions must be sector aligned, if a reliable write is not sector aligned the error
bit 19 will be set and the transaction will not complete.
If a power loss occurs during a reliable write, each sector being modified by the write is atomic.
After a power failure sectors may either contain old data or new data. All of the sectors being
modified by the write operation that was interrupted may be in one of the following states: all
sectors contain new data, all sectors contain old data or some sectors contain new data and some
sectors contain old data.
In the case where a reliable write operation is interrupted by a high priority interrupt operation,
the sectors that the register marks as completed will contain new data and the remaining sectors
will contain old data.
The REL_WR_SEC_C [222] register shall be set to 1 and has no impact on the reliable write
operation.
The host provides an out of range address as an argument to either CMD24 or CMD25.
ADDRESS_OUT_OF_RANGE is set.
The currently defined block length is illegal for a write operation. BLOCK_LEN_ERROR is set.
The address/block-length combination positions the first data block misaligned to the Device physical
blocks. ADDRESS_MISALIGN is set.
If the Device detects an error (e.g., write protect violation, out of range, address misalignment, internal
error, etc.) during a multiple block write operation (both types) it will ignore any further incoming data
blocks and remain in the Receive State. The host must then abort the operation by sending the stop
transmission command. The write error is reported in the response to the stop transmission command.
If the host sends a stop transmission command after the Device received the last data block of a multiple
block write with a pre-defined number of blocks, it is regarded as an illegal command, since the Device is
no longer in rcv state.
If the host uses partial blocks whose accumulated length is not block aligned, and block misalignment is
not allowed (CSD parameter WRITE_BLK_MISALIGN is not set), the Device shall detect the block
misalignment error during the reception of the first misaligned block, abort the write operation, and
ignore all further incoming data. As the host sends CMD12, the Device will respond with the
ADDRESS_MISALIGN bit set and return to Tran state.
If the host sets the argument of the SET_BLOCK_COUNT command (CMD23) to all 0s, then the
command is accepted; however, a subsequent write will follow the open-ended multiple block write
protocol (STOP_TRANSMISSION command - CMD12 - is required).
Programming of the CID and CSD registers does not require a previous block length setting. The
transferred data is also CRC protected. If a part of the CSD or CID register is stored in ROM, then this
unchangeable part must match the corresponding part of the receive buffer. If this match fails, then the
Device will report an error and not change any register contents.
Some Devices may require long and unpredictable times to write a block of data. After receiving a block
of data and completing the CRC check, the Device will begin writing and hold the DAT0 line low. The
host may poll the status of the Device with a SEND_STATUS command (CMD13) at any time, and the
Device will respond with its status (except in Sleep state). The status bit READY_FOR_DATA indicates
whether the Device can accept new data or not. The host may deselect the Device by issuing CMD7 that
will then displace the Device into the Disconnect State and release the DAT0 line without interrupting the
write operation. When reselecting the Device, it will reactivate busy indication by pulling DAT0 to low.
See 6.15 for details of busy indication
If a host had sent a CMD16 for password setting to a higher than 2GB of density of Device, then this host
MUST re-send CMD16 before write data transfer; otherwise, the Device will response a
BLK_LEN_ERROR and stay in TRANS state without data transfer since the data block (except in
password application) transfer is sector unit (512B). Same error applies to up to 2GB of density of devices
in case partial write accesses are not supported.
In some cases other flash management tasks may also be completed during the execution of this command.
The host can erase a contiguous range of Erase Groups. Starting the erase process is a three steps
sequence. First the host defines the start address of the range using the ERASE_GROUP_START
(CMD35) command, next it defines the last address of the range using the ERASE_GROUP_END
(CMD36) command and finally it starts the erase process by issuing the ERASE (CMD38) command with
argument bits set to zero. See Table 11 for the arguments supported by CMD38. The address field in the
erase commands is an Erase Group address, in byte units for densities up to 2GB, and in sector units for
densities greater than 2GB. The Device will ignore all LSB's below the Erase Group size, effectively
rounding the address down to the Erase Group boundary.
If an erase command (either CMD35, CMD36, CMD38) is received out of the defined erase sequence, the
Device shall set the ERASE_SEQ_ERROR bit in the status register and reset the whole sequence. If the
host provides an out of range address as an argument to CMD35 or CMD36, the Device will reject the
command, respond with the ADDRESS_OUT_OF_RANGE bit set and reset the whole erase sequence.
If an non erase command (neither of CMD35, CMD36, CMD38 or CMD13) is received, the Device
shall respond with the ERASE_RESET bit set, reset the erase sequence and execute the last command.
Commands not addressed to the selected Device do not abort the erase sequence.
If the erase range includes write protected blocks, they shall be left intact and only the non-protected
blocks shall be erased. The WP_ERASE_SKIP status bit in the status register shall be set. As described
above for block write, the Device will indicate that an erase is in progress by holding DAT0 low. The
actual erase time may be quite long, and the host may issue CMD7 to deselect the Device.
Erase (contd)
Table 11 Erase command (CMD38) Valid arguments
CMD38
Arguments
SEC_GB_CL_EN
(EXT_CSD[231] bit 4)
SEC_ER_EN
(EXT_CSD[231] bit 0)
n/a
n/a
n/a
n/a
n/a
Required
0x80008000
Required
Required
0x80000001
Required
Required
0x00000001
Required
n/a
0x00000000
0x00000003
0x80000000
Command Description
When executing the Erase command the host should note that an erase group contains multiple write
blocks that could each contain different pieces of information. When the Erase is executed it will apply to
all write blocks within an erase group. Before the host executes the Erase command it should make sure
that the information in the individual write blocks no longer needed. So to avoid the deletion of valid data
by accident, the Erase command is best used to erase the entire device or a partition. If the host only
wishes to purge a single write block a Trim command might be more appropriate.
In some cases other flash management tasks may also be completed during the execution of this command.
Completing the TRIM process is a three steps sequence. First the host defines the start address of the
range using the ERASE_GROUP_START (CMD35) command, next it defines the last address of the
range using the ERASE_GROUP_END (CMD36) command and finally it starts the erase process by
issuing the ERASE (CMD38) command with argument bit 0 set to one and the remainder of the
arguments set to zero. In the case of a TRIM operation both CMD35 and CMD36 identify the addresses
of write blocks rather than erase groups.
If an element of the Trim command (CMD35, CMD36 or CMD38) is received out of the defined erase
sequence, the device shall set the ERASE_SEQ_ERROR bit in the status register and reset the whole
sequence.
If the host provides an out of range address as an argument to CMD35 or CMD36, the Device will reject
the command, respond with the ADDRESS_OUT_OF_RANGE bit set and reset the whole erase
sequence. If a non erase command (neither of CMD35, CMD36, CMD38 or CMD13) is received, the
Device shall respond with the ERASE_RESET bit set, reset the erase sequence and execute the last
command. Commands not addressed to the selected Device do not abort the erase sequence.
If the trim range includes write protected blocks, they shall be left intact and only the non-protected
blocks shall be erased. The WP_ERASE_SKIP status bit in the status register shall be set. As described
above for block write, the Device will indicate that a Trim command is in progress by holding DAT0 low.
The actual erase time may be quite long, and the host may issue CMD7 to deselect the Device.
The host should execute the Trim command with caution to avoid unintentional data loss.
Resetting a Device (using CMD0, CMD15, or hardware reset for eMMC) or power failure will terminate
any pending or active Trim command. This may leave the data involved in the operation in an unknown
state
After the sanitize operation is completed, no data should exist in the unmapped host address space.
If the sanitize operation is interrupted, either by HPI, power failure, CMD0 or hardware reset, the state of
the unmapped host address space cannot be guaranteed. The host must re-initiate the sanitize operation by
writing to the SANITIZE_START[165] and allow the operation to complete to be sure that unmapped
host address space is clear.
Since the region being operated on is not accessible by the host, applications requiring this feature must
work with individual device manufacturers to ensure this operation is performing properly and to
understand the impact on device reliability.
6.6.12 Discard
The Discard is similar operation to TRIM. The Discard function allows the host to identify data that is no
longer required so that the device can erase the data if necessary during background erase events. The
contents of a write block where the discard function has been applied shall be dont care. After discard
operation, the original data may be remained partially or fully accessible to the host dependent on device.
The portions of data that are no longer accessible by the host may be removed or unmapped just as in the
case of TRIM. The device will decide the contents of discarded write block.
The distinction between Discard and TRIM, is that a read to a region that was discarded may return some
or all of the original data. However, in the case of Trim the entire region shall be unmapped or removed
and will return 0 or 1 depending on the memory technology.
When Sanitize is executed, only the portion of data that was unmapped by a Discard command shall be
removed by the Sanitize command. The device cannot guarantee that discarded data is completely
removed from the device when Sanitize is applied.
Completing the Discard process is a three steps sequence. First the host defines the start address of the
range using the ERASE_GROUP_START (CMD35) command, next it defines the last address of the
range using the ERASE_GROUP_END (CMD36) command and finally it starts the erase process by
issuing the ERASE (CMD38) command with argument bit 0 and bit 1 set to one and the remainder of the
arguments set to zero. In the case of a Discard operation both CMD35 and CMD36 identify the addresses
of write blocks rather than erase groups.
If an element of the Discard command (CMD35, CMD36 or CMD38) is received out of the defined erase
sequence, the device shall set the ERASE_SEQ_ERROR bit in the status register and reset the whole
sequence.
Argument
Arguments
31
Secure Request
15
Discard Enable
The entire Device (including the Boot Area Partitions, General Purpose Area Partition, RPMB, and
User/Enhanced User Data Area Partition) may be write-protected by setting the permanent or temporary write protect bits in the CSD. When permanent protection is applied to the entire Device it
overrides all other protection mechanisms that are currently enabled on the entire Device or in a
specific segment. CSD Register bits and Extended CSD Register bits are not impacted by this
protection. When temporary write protection is enabled for the entire Device it only applies to those
segments that are not already protected by another mechanism. See Table 13 for details.
Specific segments of the Devices may be permanent, power-on or temporarily write protected.
ERASE_GROUP_DEF in EXT_CSD decides the segment size. When set to 0, the segment size is
defined in units of WP_GRP_SIZE erase groups as specified in the CSD. When set to 1, the segment
size is defined in units of HC_WP_GRP_SIZE erase groups as specified in the EXT_CSD. If host
does not set ERASE_GROUP_DEF bit for a device of which high capacity write protect was already
set in some of the area in the previous power cycle, then the device may show unknown behavior
when host issue write or erase commands to the device, because the write protect group size
previously set mismatches the current write protect group size. Similarly if the host set
ERASE_GROUP_DEF bit for a device that the default write protect was already set in some of the
area in the previous power cycle, then the device may show unknown behavior when host issue write
or erase commands to the device. In application, it is mandatory for host to use same ERASE GROUP
DEF value to the device all the time.
CSD[12]
N/A
N/A
1
0
N/A
N/A
1
1
1
Action
Power failure or hardware reset
SET_WRITE_PROT (US_PERM_WP_EN = 0)
Power failure or hardware reset
Power failure or hardware reset
SET_WRITE_PROT (US_PERM_WP_EN = 1)
SET_WRITE_PROT (US_PERM_WP_EN = 0 and
US_PWR_WP_EN = 0)
Power failure or hardware reset
SET_WRITE_PROT (US_PERM_WP_EN = 1)
SET_WRITE_PROT (US_PERM_WP_EN = 0 and
US_PWR_WP_EN = 1)
Resulting
Protection mode
Permanent
Permanent
Temporary
None
Permanent
Power-On
Temporary
Permanent
Power-On
US_PWR_WP_EN
0
0
1
1
0
1
0
1
As of publication of this document, JEDEC has not published the referenced standard.
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
M
M+1
Padding
Padding
Padding
The values shall be in ascending order starting with 00h. Pad Bytes shall have value 0.
NOTE Devices that support several Security Systems may not support them simultaneously during the same
power on session.
Host sets
PRE_LOADING_DATA_SIZE
Auto Mode
Manual Mode
Host sets
PRODUCTION_STATE_AWARENESS
To 0X3(AUTO_PRE_SOLDERING)
Host sets
PRODUCTION_STATE_AWARENESS
to 0x1 (PRE_SOLDERING_WRITES )
Host sets
PRODUCTION_STATE_AWARENESS
to 0x2
(PRE_SOLDERING_POST_WRITES).
No writes past this point
Device Soldering
Device Soldering
Host sets
PRODUCTION_STATE_AWARENESS
to 0x0 (NORMAL).
PWD_LEN +1
ERASE: 1 Defines Forced Erase Operation (all other bits shall be 0) and only the cmd byte is sent.
It is valid to set this bit together with SET_PWD but it is not allowed to set it together with CLR_PWD.
Define the block length (CMD16), given by the 8bit Device lock/unlock mode, the 8 bits password
size (in bytes), and the number of bytes of the new password. In case that a password replacement is
done, then the block size shall consider that both passwords, the old and the new one, are sent with
the command.
Send Device Lock/Unlock command (CMD42) with the appropriate data block size on the data line
including 16 bit CRC. The data block shall indicate the mode (SET_PWD), the length (PWD_LEN)
and the password itself. In case that a password replacement is done, then the length value
(PWD_LEN) shall include both passwords, the old and the new one, and the PWD field shall include
the old password (currently used) followed by the new password. Each of the old and the new
password length should not exceed 16 Bytes. In case that the new password length exceeds 16 Bytes,
the LOCK_UNLOCK_FAILED error bit is set in the status register and the old password is not
changed.
In case that a password replacement is attempted with PWD_LEN set to the length of the old password only, the LOCK_UNLOCK_FAILED error bit is set in the status register and the old password
is not changed.
In case that the sent old password is not correct (not equal in size and content) then
LOCK_UNLOCK_FAILED error bit will be set in the status register and the old password does not
change. In case that PWD matches the sent old password then the given new password and its size
will be saved in the PWD and PWD_LEN fields, respectively.
NOTE The password length register (PWD_LEN) indicates if a password is currently set. When it equals 0 there
is no password set. If the value of PWD_LEN is not equal to zero, the Device will lock itself after power up. It is
possible to lock the Device immediately in the current power session by setting the LOCK/UNLOCK bit (while
setting the password) or sending additional command for Device lock.
Define the block length (CMD16), given by the 8 bit Device lock/unlock mode, the 8 bit password
size (in bytes), and the number of bytes of the currently used password.
Send the Device lock/unlock command (CMD42) with the appropriate data block size on the data line
including 16 bit CRC. The data block shall indicate the mode CLR_PWD, the length (PWD_LEN)
and the password (PWD) itself (LOCK/UNLOCK bit is dont care). If the PWD and PWD_LEN
content match the sent password and its size, then the content of the PWD register is cleared and
PWD_LEN is set to 0. If the password is not correct then the LOCK_UNLOCK_FAILED error bit
will be set in the status register.
Define the block length (CMD16), given by the 8 bit Device lock/unlock mode, the 8 bit password
size (in bytes), and the number of bytes of the currently used password.
Send the Device lock/unlock command (CMD42) with the appropriate data block size on the data line
including 16 bit CRC. The data block shall indicate the mode LOCK, the length (PWD_LEN) and the
password (PWD) itself.
If the PWD content equals to the sent password then the Device will be locked and the Device-locked
status bit will be set in the status register. If the password is not correct then
LOCK_UNLOCK_FAILED error bit will be set in the status register.
NOTE It is possible to set the password and to lock the Device in the same sequence. In such case the host shall
perform all the required steps for setting the password (as described above) including the bit LOCK set while the
new password command is sent.
If the password was previously set (PWD_LEN is not 0), then the Device will be locked automatically
after power on reset. An attempt to lock a locked Device or to lock a Device that does not have a
password will fail and the LOCK_UNLOCK_FAILED error bit will be set in the status register.
Unlocking the Device:
Define the block length (CMD16), given by the 8 bit Device lock/unlock mode, the 8 bit password
size (in bytes), and the number of bytes of the currently used password.
Send the Device lock/unlock command (CMD42) with the appropriate data block size on the data line
including 16 bit CRC. The data block shall indicate the mode UNLOCK, the length (PWD_LEN) and
the password (PWD) itself.
If the PWD content equals to the sent password then the Device will be unlocked and the Device-locked
status bit will be cleared in the status register. If the password is not correct then the
LOCK_UNLOCK_FAILED error bit will be set in the status register.
NOTE The unlocking is done only for the current power session. As long as the PWD is not cleared the Device
will be locked automatically on the next power up. The only way to unlock the Device is by clearing the password.
An attempt to unlock an unlocked Device will fail and LOCK_UNLOCK_FAILED error bit will be set in the status
register.
In case that the user forgot the password (the PWD content) it is possible to erase all the Device data
content along with the PWD content. This operation is called Forced Erase.
Define the block length (CMD16) to 1 byte (8bit Device lock/unlock command). Send the Device
lock/unlock command (CMD42) with the appropriate data block of one byte on the data line including 16
bit CRC. The data block shall indicate the mode ERASE (the ERASE bit shall be the only bit set).
If the ERASE bit is not the only bit in the data field then the LOCK_UNLOCK_FAILED error bit will be
set in the status register and the erase request is rejected. If the command was accepted then ALL THE
DEVICE CONTENT WILL BE ERASED including the PWD and PWD_LEN register content and the
locked Device will get unlocked. In addition, if the Device is temporary write protected it will be
unprotected (write enabled), the temporary-write-protect bit in the CSD and all temporary Write-ProtectGroups will be cleared.
If a force erase command is issued and power-on protected or a permanently-write-protected write protect
groups exist on the device, the command will fail (Device stays locked) and the
LOCK_UNLOCK_FAILED error bit will be set in the status register.
An attempt to force erase on an unlocked Device will fail and LOCK_UNLOCK_FAILED error bit will
be set in the status register. If a force erase command is issued on a permanently-write-protect media the
command will fail (Device stays locked) and the LOCK_UNLOCK_FAILED error bit will be set in the
status register.
The Force Erase time-out is specified in 0. On v4.3 and later version devices, when host issues the Force
erase, only the data stored in user data area (including enhanced attribute area) will be erased. The Force
erase will not applied to Boot, RPMB and General partition area.
6.6.20 Application-specific commands
The eMMC system is designed to provide a standard interface for a variety applications types. In this
environment, it is anticipated that there will be a need for specific customers/applications features. To
enable a common way of implementing these features, two types of generic commands are defined in the
standard:
Send APP_CMD. The response will have the APP_CMD bit (new status bit) set signaling to the
host that ACMD is now expected.
Send the required ACMD. The response will have the APP_CMD bit set, indicating that the
accepted command was interpreted as ACMD. If a non-ACMD is sent then it will be respected
by the Device as normal eMMC command and the APP_CMD bit in the Device Status stays
clear.
If a non-valid command is sent (neither ACMD nor CMD) then it will be handled as a standard
eMMC illegal command error. From the eMMC protocol point of view the ACMD numbers will be
defined by the manufacturers without any restrictions.
Stuff
Bytes
Key/
(MAC)
Data
Nonce
Write
Counter
1bit
196Byte
[511:316]
Address
Block
Count
Result
Req/
Resp
CRC16
End
32Byte
(256b)
256Byte
16Byte
4Byte
2Byte
2Byte
2Byte
2Byte
2Byte
1bit
[315:284]
[283:28]
[27:12]
[11:8]
[7:6]
[5:4]
[3:2]
[1:0]
Byte order of the RPMB data frame is MSB first, e.g., Write Counter MSB [11] is storing the upmost byte
of the counter value.
Length: 2B
Direction: Request (to the memory), Response (from the memory)
Description: defines the type of request and response to/from the memory. Table 18 is listing the
defined requests and responses. The response type is corresponding to the previous Replay Protected
Memory Block read/write request.
Table 18 RPMB Request/Response Message Types
Request Message Types
0x0001
0x0002
0x0003
0x0004
0x0005*
0x0006
0x0007
Response Message Types
0x0100
0x0200
0x0300
0x0400
0x0500
0x0600
0x0700
NOTE
There is no corresponding response type for the Result read request because the reading of the result with
Length: 2B
Direction: Response
Description: includes information about the status of the write counter (valid, expired) and
successfulness of the access made to the Replay Protected Memory Block. Table 19 represents the
RPMB Operation Results data structure. Table 20 is listing the defined results and possible reasons
for failures.
Bit[15:8]
reserved
Length: 4Bytes
Direction: Request and Response.
Description: Counter value for the total amount of the successful authenticated data write requests
and Authenticated Device Configuration write request made by the host.
Length: 2B
Direction: Request and Response.
Description: Address of the data to be programmed to or read from the Replay Protected Memory
Block. Address is the serial number of the accessed half sector (256B) and the first address is 0x0000.
Address argument in CMD 18 and CMD 25 will be ignored.
Name: Nonce
Length: 16B
Direction: Request and Response.
Description: Random number generated by the host for the Requests and copied to the Response by
the eMMC Replay Protected Memory Block engine.
Name: Data
Length: 256B
Direction: Request and Response.
Description: Data to be written or read by signed access.
Length: 2B
Direction: Request.
Description: Number of blocks (half sectors, 256B) requested to be read/programmed. This value is
equal to the count value in CMD23 argument.
Size: 32B
Type: Write once
Description: One time programmable authentication key register. This register cannot be overwritten,
erased or read. The key is used by the eMMC Replay Protected Memory Block engine to authenticate the accesses when MAC is calculated.
Size: 4B
Type: Read only
Description: Counter value for the total amount of successful authenticated data write requests and
Authenticated Device Configuration write request made by the host. Initial value after eMMC
production is 0x0000 0000. Value will be incremented by one automatically by the eMMC Replay
Protected Memory Block engine along with successful programming accesses. The value cannot be
reset. After the counter has reached its maximum value 0xFFFF FFFF it will not be incremented
anymore (overflow prevention) and the bit [7] in Operation Result value will be permanently set.
Name: Data
Stuff Bytes
Key/ (MAC)
196Byte
32Byte(256b)
256Byte
16Byte
Write
Counter
4Byte
2Byte
Block
Count
2Byte
[511:316]
[315:284]
[283:28]
[27:12]
[11:8]
[7:6]
[5:4]
0xAA...
0x0000
...
0x123456
78
0x0010
0xBB...
0x0000
...
0x123456
78
0x0010
Data
Nonce
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
[1:0]
0x0002
0x0000
0x0003
0x0002
0x0000
0x0003
Request frame 1
0x0000...
0x0000...
Request frame 2
0x0000...
MAC
A General Failure (0x01) will be indicated in the Results register (in multiple block case in all frames). If
there are more than one failure related to an access then the first type of error shall be indicated in the
Results register. The order of the error checking is defined under each access below. After finishing data
access to the Replay Protected Memory Block partition, the PARTITION_ACCESS bits should be
cleared.
6.6.22.4.1 Programming of the Authentication Key
The Authentication Key is programmed with the Write Multiple Block command, CMD25. Prior to the
command CMD25 the block count is set to 1 by CMD23, with argument bit [31] set as 1 to indicate
Reliable Write type of programming. If block count has not been set to 1 and/or argument bit [31] has not
been set to 1 then the subsequent Write Multiple Block command must fail and General Failure shall be
indicated.
The key information itself is delivered in data packet. The packet is size of 512B and it is including the
request type information and the Authentication Key. The request type value 0x0001 indicates
programming of the Authentication Key.
Table 22 Authentication Key Data Packet
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
Write
Counter
4Byte
[511:316]
0x0000...
[315:284]
0b
[283:28]
0x00
[27:12]
0x00
[11:8]
0x00
2Byte
Block
Count
2Byte
[7:6]
0x00
[5:4]
0x00
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x00
[1:0]
0x0001
The busy signaling in the DAT0 line after the CRC status by the eMMC is indicating programming busy
of the key. The status can also be polled with CMD13. The status response received in R1 is indicating
the generic status condition, excluding the status of successful programming of the key.
The successfulness of the programming of the key should be checked by reading the result register of the
Replay Protected Memory Block. The result read sequence is initiated by Write Multiple Block
command, CMD25. Prior to CMD25, the block count is set to 1 by CMD23. If block count has not been
set to 1 then the subsequent Write Multiple Block command must fail and General Failure shall be
indicated.
The request type information is delivered in data packet. The packet is size of 512B and is including the
request type information. The request type value 0x0005 indicates Result register read request initiation.
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
Write
Counter
4Byte
0b
[511:316]
0x0000...
[315:284]
0x00
[283:28]
0x00
[27:12]
0x00
[11:8]
0x00
2Byte
Block
Count
2Byte
[7:6]
0x00
[5:4]
0x00
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x00
[1:0]
0x0005
1b
The busy signaling in the DAT0 line after the CRC status by the eMMC is indicating request busy. The
result itself is read out with the Read Multiple Block command, CMD18. Prior to the read command, the
block count is set to 1 by CMD23. If block count has not been set to 1 then the Read Multiple Block
command must fail and General Failure shall be indicated.
The result information itself is delivered in the read data packet. The packet size is 512B and is including
the response type information and result of the key programming operation. The response type value
0x0100 corresponds to the key programming request.
Table 24 Response for Key Programming Result Request
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
Write
Counter
4Byte
0b
[511:316]
0x0000...
[315:284]
0x00
[283:28]
0x00
[27:12]
0x00
[11:8]
0x00
2Byte
Block
Count
2Byte
[7:6]
0x00
[5:4]
0x00
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
[1:0]
0x0100
Access to Reply Protected Memory Block is not allowed and not possible before Authentication Key is
programmed. The state of the device can be checked by trying to write/read data to/from the Replay
Protected Memory Block and then reading the result register. If the Authentication Key is not yet
programmed then message 0x07 (Authentication Key not yet programmed) is returned in result field.
If programming of Authentication Key fails then returned result is 0x05 (Write failure). If some other
error occurs during Authentication Key programming then returned result is 0x01 (General failure).
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[315:284]
0x00
[283:28]
0x00
[27:12]
0b
[511:316]
0x0000...
Write
Counter
4Byte
[11:8]
0x00
2Byte
Block
Count
2Byte
[7:6]
0x00
[5:4]
0x00
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x00
[1:0]
0x0002
1b
The busy signaling in the DAT0 line after the CRC status by the eMMC is indicating request busy. The
counter value itself is read out with the Read Multiple Block command, CMD18. Prior to the command
CMD18, the block count is set to 1 by CMD23. If block count has not been set to 1 then the Read
Multiple Block command must fail and General Failure shall be indicated.
The counter value itself is delivered in the read data packet. The packet size is 512B and it is including
the response type information, a copy of the nonce received in the request, the write counter value, the
MAC and the Result.
Table 26 Counter Value Response
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
Write
Counter
4Byte
[511:316]
0x0000...
[315:284]
[283:28]
0x00
[27:12]
[11:8]
0b
2Byte
Block
Count
2Byte
[7:6]
0x00
[5:4]
0x00
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
[1:0]
0x0200
If reading of the counter value fails then returned result is 0x06 (Read failure). If some other error occurs
then Result is 0x01 (General failure). If counter has expired also bit 7 is set to 1 in returned results (Result
values 0x80,0x86 and 0x81, respectively).
1b
EN_RPMB_REL_WR = 0 : Two different sizes are supported in RPMB partition: 256B (single 512B
frame) and 512B (two 512B frames)
EN_RPMB_REL_WR = 1 : Three different sizes are supported in RPMB partition: 256B (single
512B frame), 512B (two 512B frames), and 8KB (thirty two 512B frames)
If block count has not been set and/or argument bit[31] has not been set to 1and/or the size is different
from the supported data size defined by EN_RPMB_REL_WR, then the subsequent Write Multiple Block
command must fail and General Failure shall be indicated.
Data itself is delivered in data packet. The packet is size of 512B and it is including the request type
information, the block count, the counter value, the start address of the data, the data itself and the MAC.
In multiple block write case the MAC is included only to the last packet n, the n-1 packets will include
value 0x00. In every packet the address is the start address of the full access (not address of the individual
half a sector) and the block count is the total count of the half sectors (not the sequence number of the half
a sector).The request type value 0x0003 indicates programming of the data.
Table 27 Program Data Packet
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[315:284]
[283:28]
0b
[511:316]
0x0000...
[27:12]
0x00
Write
Counter
4Byte
[11:8]
2Byte
Block
Count
2Byte
[7:6]
[5:4]
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x00
[1:0]
0x0003
The busy signaling in the DAT0 line after the CRC status by the eMMC is indicating buffer busy
between the sent blocks (in multiple block write case) and programming busy of the key after the last
block (or in single block case). The status can also be polled with CMD13. The status response received
in R1 is indicating the generic access status condition (e.g., state transitions), excluding the status of
successfulness of programming of the data.
When the eMMC receives this message it first checks whether the write counter has expired. If the write
counter is expired then eMMC sets the result to 0x85 (write failure, write counter expired). No data is
written to the eMMC
Next the address is checked. If there is an error in the address (out of range) then the result is set to 0x04
(address failure). In case of multiple block write, if the Data Address is not aligned to its own data size
then the result is set to 0x04 (address failure).No data are written to the eMMC. If the write counter was
not expired then the MAC is calculated over bytes [283:0] (request type, result = 0x00, block count, write
counter, address, nonce = 0x00 and data), and compares this with the MAC in the request.
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
Write
Counter
4Byte
0b
[511:316]
0x0000...
[315:284]
0x00
[283:28]
0x00
[27:12]
0x00
[11:8]
0x00
2Byte
Block
Count
2Byte
[7:6]
0x00
[5:4]
0x00
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x00
[1:0]
0x0005
1b
The busy signaling in the DAT0 line after the CRC status by the eMMC is indicating request busy. The
result itself is read out with the Read Multiple Block command, CMD18. Prior to the read command, the
block count is set to 1 by CMD23. If block count has not been set to 1 then the Read Multiple Block
command must fail and General Failure shall be indicated. The result information itself is delivered in the
read data packet. The packet size is 512B and includes the response type information, the incremented
counter value, the data address, the MAC and result of the data programming operation.
Table 29 Response for Data Programming Result Request
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[315:284]
0b
[511:316]
0x0000...
[283:28]
0x00
[27:12]
0x00
Write
Counter
4Byte
[11:8]
Address
2Byte
[7:6]
Block
Count
2Byte
[5:4]
0x00
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
[1:0]
0x0300
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[315:284]
0x00
[283:28]
0x00
[27:12]
0b
[511:316]
0x0000...
Write
Counter
4Byte
[11:8]
0x00
Address
2Byte
[7:6]
Block
Count
2Byte
[5:4]
0x00
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x00
[1:0]
0x0004
1b
The busy signaling in the DAT0 line after the CRC status by the eMMC is indicating request busy.
When the eMMC receives this request it first checks the address. If there is an error in the address (out of
range) then result is set to 0x04 (address failure). The data read is not valid. The data itself is read out
with the Read Multiple Block command, CMD18. Prior to the read command, the block count is set by
CMD23.
NOTE The block count of the RPMB read operation is not indicated in the original RPMB Data Read Request
packet. Block count set in CMD23 for reading out the RPMB data also indicates the block count for the RPMB read
operation. This is intentional for RPMB implementation in eMMC standard that may be different from
implementations in other protocol standards.
The block count is the number of the half sectors (256B) to be read. If block count has not been set then
the Read Multiple Block command must fail and General Failure shall be indicated. MAC is calculated
over bytes [283:0] (response type, nonce, address, block count, write counter = 0x00, data and result). If
the MAC calculation fails then returned result is 0x02 (Authentication failure).
The data information itself is delivered in the read data packet. The packet size is 512B and it is including
the response type information, the block count, a copy of the nonce received in the request, the data
address, the data itself, the MAC and the result. In multiple block read case the MAC is included only to
the last packet n, the n-1 packets will include value 0x00. In every packet the address is the start address
of the full access (not address of the individual half a sector) and the block count is the total count of the
half sectors (not the sequence number of the half a sector).
Table 31 Read Data Packet
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[511:316]
0x0000...
[315:284]
[283:28]
[27:12]
0b
Write
Counter
4Byte
[11:8]
0x00
2Byte
Block
Count
2Byte
[7:6]
[5:4]
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
[1:0]
0x0400
If data fetch from addressed location inside eMMC fails then returned result is 0x06 (Read failure). If
some other error occurs during the read procedure then returned result is 0x01 (General failure).
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[315:284]
0b
[511:316]
0x0000...
[283:28]
0x00xx
(1 Byte
config data)
[27:12]
0x00..0
Write
Counter
4Byte
[11:8]
Current
Write
Counter
Address
2Byte
[7:6]
0x0001 or
0x0002
Block
Count
2Byte
[5:4]
0x00001
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x0000
[1:0]
0x0006
The busy signaling in the Dat0 line after the CRC status by the eMMC is indicating programming busy.
The status can also be polled with CMD13. The status response received in R1 is indicating the generic
access status condition (e.g., state transitions), excluding the status of successfulness of programming of
the data.
When the eMMC receives this message it first checks whether the write counter has expired. If the write
counter is expired then eMMC sets the result to 0x85 (write failure, write counter expired). No data is
written to the eMMC
If host access reserved area (address[0] and address[3~255]), the device should not return error. No data
are written to the eMMC. If the write counter was not expired then the MAC is calculated over bytes
[283:0] (request type, result = 0x00, block count, write counter, address, nonce = 0x00 and data), and
compares this with the MAC in the request. If the two MACs are different then eMMC sets the result to
0x02 (authentication failure). No data are written to the eMMC.
If the MAC in the request and the calculated MAC are equal then the eMMC compares the write counter
in the request with the write counter stored in the eMMC. If the two counters are different then eMMC
sets the result to 0x03 (counter failure). No data are written to the eMMC.
If the MAC and write counter comparisons are successful then the write request is considered to be
authenticated. The data from the request are written to the Device Configuration Area indicated by
address in the request and the write counter is incremented by 1.
If write fails then returned result is 0x05 (write failure). If some other error occurs during the write
procedure then returned result is 0x01 (General failure). The successfulness of the programming of the
data should be checked by the host by reading the result register of the Replay Protected Memory Block.
The result read sequence is initiated by Write Multiple Block command, CMD 25. Prior to CMD25, the
block count is set to 1 by CMD23. If block count has not been set to 1 then the subsequent Write Multiple
Block command shall fail and General Failure shall be indicated in RPMB Operation Results.
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[511:316]
0x0000...
[315:284]
0b
[283:28]
0x00
[27:12]
0x000
Write
Counter
4Byte
[11:8]
Incremented
counter value
Address
2Byte
[7:6]
Index for
Device
Conf. Reg
Block
Count
2Byte
[5:4]
0x0000...
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
Result
code
[1:0]
0x0600
1b
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
0b
[511:316]
0x0000...
[315:284]
0x000
[283:28]
0x00..0
[27:12]
Host
Generated
Nonce
Write
Counter
4Byte
[11:8]
0x000
2Byte
Block
Count
2Byte
[7:6]
0x0000
[5:4]
0x0000
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
0x0000
[1:0]
0x0007
1b
The busy signaling in the Dat0 line after the CRC status by the eMMC is indicating request busy.
The data itself is read out with the Read Multiple Block command, CMD18. Prior to the read command,
the block count is set by CMD23.
The block count shall be set as 0x1. . If block count has not been set as 0x1 then the Read Multiple Block
command shall fail and General Failure shall be indicated in RPMB Operation Results.
The data information itself is delivered in the read data packet. The packet size is 512B and it is including
the response type information, the block count, a copy of the nonce received in the request, the data
address, the data itself, the MAC and the result.
Table 35 Response for Authenticated Device Configuration Read
Start
Stuff Bytes
Key/ (MAC)
Data
Nonce
1bit
196Byte
32Byte (256b)
256Byte
16Byte
[511:316]
0x0000...
[315:284]
[283:28]
0b
[27:12]
Host
Generated
Nonce
Write
Counter
4Byte
[11:8]
0x00..0
2Byte
Block
Count
2Byte
[7:6]
0x0000
[5:4]
0x0001
Address
Result
Req/ Resp
CRC16
End
2Byte
2Byte
2Byte
1bit
[3:2]
[1:0]
0x0700
If data fetch from addressed Device Configuration Area inside eMMC fails then returned result is 0x06
(Read failure). If some other error occurs during the read procedure then returned result is 0x01 (General
failure).
1b
Foreground operations operations that the host needs serviced such as read or write commands;
Background operations operations that the device executes while not servicing the host; Depending
on how they can be initiated, there are two types of background operations: manually initiated
background operations and autonomously initiated background operations.
Manually initiated method: In order for the device to know when the host does not need it and it can
execute background operations, host shall write any value to BKOPS_START (EXT_CSD byte [164]) to
manually start background operations. Device will stay busy till no more background processing is
needed.
Since foreground operations are of higher priority than background operations, host may interrupt ongoing background operations using the High Priority Interrupt mechanism (see 6.6.26). In order for the
device to know if host is going to periodically start background operations, host shall set bit 0
(MANUAL_EN) of BKOPS_EN (EXT_CSD byte [163]) to indicate that it is going to write to
BKOPS_START periodically. The device may then delay some of its maintenance operations to when
host writes to BKOPS_START.
The device reports its background operation status in bits [1:0] of BKOPS_STATUS (EXT_CSD byte
[246]), that can be in one of four possible levels: 0x0: No operations required 0x1: Operations outstanding
non critical 0x2: Operations outstanding performance being impacted 0x3: Operations outstanding
critical
Host shall check the status periodically and start background operations as needed, so that the device has
enough time for its maintenance operations, to help reduce the latencies during foreground operations. If
the status is at level 3 ("critical"), some operations may extend beyond their original timeouts due to
maintenance operations that cannot be delayed anymore. The host should give the device enough time for
background operations to avoid getting to this level in the first place.
To allow hosts to quickly detect the higher levels, the URGENT_BKOPS bit in the
EXCEPTION_EVENTS_STATUS is set whenever the levels is either 2 or 3. That automatically sets the
EXCEPTION_BIT in Device Status. This allows hosts to detect urgent levels on every R1 type response.
Hosts shall still read the full status from the BKOPS_STATUS byte periodically and start background
operations as needed.
The background operations feature is mandatory for this specification. Bit 0 of BKOPS_SUPPORT
(EXT_CSD byte [502]) shall be set.
Autonomously initiated method; a Host that wants to enable the device to perform background operations
during device idle time, should signal the device by setting AUTO_EN in BKOPS_EN field [EXT_CSD
byte 163] to 1b. When this bit is set, the device may start or stop background operations whenever it sees
fit, without any notification to the host.
When AUTO_EN bit is set, the host should keep the device power active. The host may set or clear this
bit at any time based on its power constraints or other considerations.
CMD12 based on STOP_TRANSMISSION command when the HPI bit in its argument is set.
CMD13 based on SEND_STATUS command when the HPI bit in its argument is set.
Host shall check the read-only HPI_IMPLEMENTATION bit in HPI_FEATURES (EXT_CSD byte
[503]) and use the appropriate command index accordingly.
If CMD12 is used with HPI bit set, it differs from the non-HPI command in the allowed state transitions.
See Table 60, Device state transition, for the specific transitions for both cases.
HPI shall only be executed during prg-state. Then, it indicates the device that a higher priority command
is pending and therefore it should interrupt the current operation and return to tran-state as soon as
possible, with a different timeout value.
If HPI is received in states other than prg-state, the device behavior is defined in Table 60, Device state
transition. If the state transition is allowed, response is sent but the HPI bit is ignored. If the state
transition is not allowed, the command is regarded as an illegal command.
HPI command is accepted as a legal command in prg-state. However, only some commands may be
interrupted by HPI. If HPI is received during commands that are not interruptible, a response is sent but
the HPI command has no effect and the original command is completed normally, possibly exceeding the
OUT_OF_INTERRUPT_TIME timeout. Table 36 shows the commands are interruptible and those that
are not.
Table 36 Interruptible commands
CMD Index
Name
CMD24
CMD25
CMD38
CMD6
CMD6
CMD6
WRITE_BLOCK
WRITE_MULTIPLE_BLOCK
ERASE
SWITCH, byte BKOPS_START, any value
SWITCH, byte SANITIZE_START, any value
SWITCH, byte
POWER_OFF_NOTIFICATION, value
POWER_OFF_LONG
or SLEEP_NOTIFICATION
SWITCH, byte
POWER_OFF_NOTIFICATION, other values
CACHE_CTRL when used for turning the
cache OFF
FLUSH_CACHE
SWITCH, other bytes, any value
CMD6
CMD6
CMD6
CMD6
All others
Is interruptible?
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
No
No
Read/write context may have reduced performance compared to read-only or write-only contexts.
When writing a Large Unit context, last Large Unit before closing the context may be partially written, as
long as it is written from the beginning, in order and up to a specific point where it is closed. Host should
be aware that the rest of the Large Unit may be padded (by the device) to the end of the Large Unit with
some data (may be random).
o
o
MODE0 Normal mode Any unit may be affected: Any data written to the context from the
time it was configured may be affected
MODE1 Large Unit, unit-by-unit mode Unit N may be affected, units N-1 and earlier are not:
Any data written to a Large Unit context may affect the entire specific Large Unit accessed. Any
previously completed Large Units in the context shall not be changed because of any interruption.
MODE2 Large Unit, one-unit-tail mode Unit N and N-1 may be affected, units N-2 and
earlier are not: Any data written to a Large Unit context may affect the entire specific Large Unit
accessed and the entire completed Large Unit that was accessed before the current one. Any other
completed Large Units in the context shall not be changed because of any interruption.
In case HPI is used during a write to a non-zero context, the write may still be interrupted like any
context-less write. In case HPI is interrupting a write to a Large Unit context (including one that is packed
inside a packed-write command), the device shall always stop writing on a SUPER_PAGE_SIZE
boundary (and report CORRECTLY_PRG_SECTORS_NUM accordingly), so host may later continue
the stopped write from an address that is aligned to SUPER_PAGE_SIZE as required for Large Unit
contexts. See also 6.6.26.
The data shall still be written to the device regardless of the resources exhaustion; however, it may not
have the improved characteristics.
The host should manage the tag operation counting in order to avoid resources exhaustion. If it happens
the host should execute operations having the final effect of freeing some of the resources (for instance by
issuing a Trim command on some of the addresses containing System Data).
Version of structure a byte to indicate version for future compatibility; shall be set to 0x01,
R/W flag 0x01 for packed read, 0x02 for packed write,
Number of entries in the table,
Then, for each entry:
o Argument of CMD23 of the individual command (4 bytes), formatted as in CMD23, including
both the count field and the various flags fields (high bits), with the packed bit always 0
(except for the packed bit, all other CMD23 argument bits are still allowed in the header). Each
individual read and write command shall not be open-ended. If any bit[15:0] of argument of
CMD23in the header is set to 0, device behavior is undefined."
o Argument of CMD18 or CMD25 (4 bytes) the address read/written by the individual command.
The structure contains (in little-endian format, padding shall be all zeros):
Table 37 Packed Command Structure
Entry
index
Offset (Bytes)
Name
Length (Bytes)
+0
VERSION
+1
R/W
+2
NUM_ENTRIES (=N)
+3
padding to 8B
+8
CMD23_ARG_1
+12
CMDxx_ARG_1
+16
CMD23_ARG_2
+20
CMDxx_ARG_2
+24
CMD23_ARG_3
+28
CMDxx_ARG_3
N
-
+8N
CMD23_ARG_N
+8N+4
CMDxx_ARG_N
+8N+8
Padding
Caching of data shall apply only for the single block read/write (CMD17/24), pre-defined multiple
block read/write (CMD23+CMD18/25) and open ended multiple block read/write
(CMD18/25+CMD12) commands and excludes any other access e.g., to the register space (e.g.,
CMD6).
Data0 busy and status response bit [8] after CMD24, CMD23+CMD25 or CMD25+CMD12 does not
anymore necessarily indicate the programming status to the nonvolatile memory but may indicate
programming status to the volatile cache (exceptions defined later).
A Flush operation refers to the requirement, from the host to the device, to write the cached data to
the nonvolatile memory. Prior to a flush, the device may autonomously write data to the nonvolatile
memory, but after the flush operation all data in the volatile area must be written to nonvolatile
memory.
Data in the cache may (and most probably will) be lost due to a sudden power down. If there was a
flush operation ongoing when the power was lost then also any such data may be lost.
Accesses to the RPMB and Boot partitions while the cache is ON shall still be directed to the
nonvolatile storage with same requirements as defined elsewhere in this standard.
When the cache is turned ON it applies to the eMMC device as whole (When flushing the cache the
data for all partitions shall be flushed, this operation is independent of the active partition).
There is no requirement for flush due to switching between the partitions. (Note: This also implies
that the cache data shall not be lost when switching between partitions). Cached data may be lost in
SLEEP state, so host should flush the cache before placing the device into SLEEP state.
The device may invalidate the data in the cache in case of RST_n or CMD0 received.
Support of the cache function and size of the cache are indicated in the CACHE_SIZE byte (EXT_CSD
byte [252:249]).
The cache shall be OFF by default after power up, RST_n assertion or CMD0. All accesses shall be
directed to the nonvolatile storage like defined elsewhere in this specification. The cache function can be
turned ON and OFF by writing to the CACHE_CTRL byte (EXT_CSD byte [33]). Turning the cache ON
shall enable behavior model defined in this section. Turning the cache OFF shall trigger flushing of the
data to the nonvolatile storage.
The cache may be flushed to the nonvolatile storage by writing to FLUSH_CACHE byte (EXT_CSD byte
[32]). The R1b response result shall reflect the status of programming of cached data to the nonvolatile
storage. Any error resulted can be read from the status register by CMD13 after the completion of the
programming as defined for normal write. If a flush error occurs during the execution of the
FLUSH_CACHE or while turning off the cache using the CACHE_CTRL operation, the device shall set
the generic error bit, STATUS BIT[19]. If an error occurs as a result of flush operation the device has no
responsibility to isolate the error to a specific data area. The error could affect any data written to the
cache since the previous flush operation.
If CMD23 Reliable Write [31] bit is set then Forced Prg [24] is ignored,
CMD23 bits for Data Tag [29] and ContextID [28:25] cannot be set in the same command argument,
In case of Packed Command, in the encapsulating CMD23, packed [30] bit and number of blocks
[15:0] are valid; all other parameter bits are 0 and are included in the header (see the Packed
Command and Non-Packed Command description in Table 52),
Enhanced and Extended partition settings cannot co-exist in same partition,
Data Tagging works only for default partitions,
ContextID overrides Reliable Write,
Cache mode does not apply for Boot and RPMB partitions.
Table 38 Features Cross Reference Table
Cache On
Ok
Packed
Commands
Ok
Ok, in header
(1)
Context ID
Ok
Ok, in header
(1)
Not valid
Data Tag
If Reliable
Write bit is
set, cache is
bypassed
Ok, in header
(1)
Reliable
Write bit is
ignored if a
Context is
open
Ok
Reliable
Write
No caching on
Boot and
RPMB
Partitions
No Packed
Commands
on Boot and
RPMB
Partitions
Ok
Data tag is
valid on
default
memory
type only
Ok
Partitions (all)
Ok
If Reliable
Write bit is
set, Forced
Programming
bit is ignored
Ok
Forced
programming
Switch to FFU
mode could be
done from any
partition except
boot and
RPMB
If Force
programming
bit is set,
cache is
bypassed (2)
Ok, in header
(1)
No
Ok
No
No
FFU
Mode
NOTE1 The feature bit (ContextID, Data Tag, Reliable Write) is valid in the Packed Command header (first data block of CMD25), and not in
the Packed Command argument (argument of the encapsulating CMD23)
NOTE 2 Forced Programming is ignored when the Cache is turned OFF
NOTE 3 If contradicting features are activated in CMD23 argument, device behavior is undefined.
For example, ContextID + Reliable Write + Forced Programming: this combination is undefined since ContextID causes Reliable Write to be
ignored, and Reliable Write causes Forced Programming to be ignored
The dynamic capacity commands and statuses are only supported for high capacity devices and are based
on the high capacity write protect group size.
The device user area size shall never change while a device is powered up even if WP-Groups from the
end of the user area were released. The device may update its user area following the release of WPGroups from the end of its address space only after passing through CMD1 after a power cycle, assertion
of RST_n signal or CMD0. In any case, the addressing mode of the device doesnt change (device stays in
high capacity sector based addressing).
Definition
512 B
Native
Sector
Granularity
4 KB Native Sector
Emulation
Disable
Emulation
512 B
Native
Sector
4 KB Native Sector
Emulation
Disable
Emulation
2GB
BLOCKNR BLOCK_LEN
512B
512B
512B
4KB
> 2GB
SEC_COUNT 512B
512B
512B
512B
4KB
Erase Group
Size
(ERASE_GRP_SIZE+ 1)
(ERASE_GRP_MULT + 1)
512B
512B
512B
4KB
Write Protect
Group Size
WP_GRP_SIZE
Erase
group
Erase group
Erase
Group
Erase Group
High Capacity
Erase Size
HC_ERASE_GRP_SIZE
512KB
512KB
512KB
512 KB
512KB
High Capacity
Write Protect
size
HC_ERASE_GRP_SIZE
HC_WP_GRP_SIZE
512KB
512KB
512KB
512KB
512KB
2(SUPER_PAGE_SIZE-1) 512B
512B
512B
512B
4KB
Boot partition
size
BOOT_SIZE_MULT
128KB
128KB
128KB
128KB
128KB
RPMB partition
size
RPMB_SIZE_MULT
128KB
128KB
128KB
128KB
128KB
2TAG_UNIT_SIZESector Size
512B
Tag Resource
Size
((N TAG_UNIT_SIZE)
2TAG_RES_SIZE)/210
Tag Unit
Size
Tag Unit
Size
1MB
(LARGE_UNIT_SIZE_M1
+ 1)
1MB
1MB
1MB
1MB
Cache size
CACHE_SIZE1Kb
1Kb
1Kb
1Kb
32Kb (=4KB)
Reliable Write
Sector size
REL_WR_SEC_C
512B
512B
512B
4KB
Max Enhanced
area size
MAX_ENH_SIZE_MULTHC_
WP_GRP_SIZEHC_ERASE_G
RP_SIZE512KB
512 KB
512KB
512KB
512KB
General purpose
partition size
(GP_SIZE_MULT_X_2216+
GP_SIZE_MULT_X_128+
GP_SIZE_MULT_X_020)
HC_WP_GRP_SIZE
HC_ERASE_GRP_SIZE
512KB
512 KB
512KB
512KB
512KB
Enhanced user
data area size
(ENH_SIZE_MULT_2216+
ENH_SIZE_MULT_128+
ENH_SIZE_MULT_020)
HC_WP_GRP_SIZE
HC_ERASE_GRP_SIZE
512KB
512KB
512KB
512KB
512KB
Device
Capacity
512B
4KB
512B
512B
4KB
Data transfers on the bus are still using 512 B CRC-protected blocks, but data shall only be
transferred in multiple of 8 such blocks (always multiples of 4 KB),
Sector addressing is still used, but sector addresses shall always be aligned to 8 (4 KB),
Sector counts shall be multiples of 8 (4 KB), e.g., in SET_BLOCK_COUNT (CMD23), and
CORRECTLY_PRG_SECTORS_NUM field in EXT_CSD,
Single block Write and Read Command (CMD17 and CMD24) are not supported. If the host attempts
to issue CMD17 or CMD24 the device behavior is undefined,
Arguments for read multiple block command (CMD18) and multiple block write command (CMD25)
shall always be aligned to 8 (4 KB),
If a power loss occurs during a reliable write, each 4 KB sector being modified by the write is atomic.
After a power failure sectors may either contain old data or new data . All of the sectors being
modified by the write operation that was interrupted may be in one of the following states: all sectors
contain new data, all sectors contain old data or some sectors contain new data and some sectors
contain old data,
Start and end addresses in erase/trim/discard commands shall always be aligned to 8 (4 KB), and
RPMB partition, if exists, is an exception to the above: Since read/write commands to the RPMB
partition are data frames packets and not actual read/write operations, access to RPMB partition shall
still be done in 512 B blocks.
Not following any of the above restrictions may result in undefined behavior.
Table 40 summarizes data sector size, address mode and reliable write granularity depending on the
device density range, device sector size and emulation mode enablement state:
Table 40 Admitted Data Sector Size, Address Mode and Reliable Write granularity
Device density range
Native
Sector size
Emulation
mode
Data
Sector size
Address mode
Reliable Write
granularity
`< 2GB
N/A
N/A
512B
Byte
512B
512B
N/A
512B
Sector (512B)
512B
4KB
On (when device
is shipped)
512B
Sector (512B)
512B
4KB
Off
4KB
Sector (512B)
(1)
4KB
4KB
(mandatory)
On (when device
is shipped)
512B
Sector (512B)
512B
4KB
(mandatory)
Off
4KB
Sector (512B)
(1)
4KB
NOTE 1
Each data transfer has a minimum length of 8 Sectors (4KB) and the addresses shall be aligned to 8 (4KB)
Field Name
RTC_INFO_TYPE
SECONDS_PASSED
10-511
Name
Description
0x01
Absolute time
0x02
Set-base for
relative time
0x03
Relative time
0x00, 0x04-0xFF
Keep the device power supplies alive (both VCC and VCCQ) and in their active mode,
Not power off the device intentionally before changing POWER_OFF_NOTIFICATION to either
POWER_OFF_LONG or POWER_OFF_SHORT, and
Not power off VCC intentionally before changing POWER_OFF_NOTIFICATION to
SLEEP_NOTIFICATION and before moving the device to Sleep state.
Before moving to Sleep state hosts may set the POWER_OFF_NOTIFICATION byte to
SLEEP_NOTIFICATION (0x04) if aware that the device is capable of autonomously initiating
background operations for possible performance improvements. Host should wait for the busy line to be
de-asserted. Busy line may be asserted up the period defined in SLEEP_NOTIFICATION_TIME byte in
EXT_CSD [216]. Once the setting has changed to 0x04 host may set the device into Sleep mode
(CMD7+CMD5). After getting out from Sleep the POWER_OFF_NOTIFICATION byte will restore its
value to POWERED_ON. HPI may interrupt the SLEEP_NOTIFICATION operation. In that case
POWER_OFF_NOTIFICATION byte will restore to POWERED_ON.
In order to use the barrier function, the host shall set bit 0 of BARRIER_EN (EXT_CSD byte [31]).
The barrier feature is optional for an eMMC device.
General Purpose partitions may be accessed when command queuing is enabled. The queue must be
empty when CMD6 is sent (to switch partitions or to disable command queuing). Sending CMD6 while
the queue is not empty shall be regarded as illegal command (see 6.6.39.9, Supported Commands).
Prior to enabling command queuing, the block size shall be set to 512 B. Device may respond with an
error to CMD46/CMD47 if block size is not 512 B.
The device does not guarantee the order that queued tasks are processed. In cases where ordering is
important (e.g., commands with overlapping LBAs), the host is responsible to ensure it.
Description
Task ID Required?
0h
Reserved
N/A
1h
no
2h
yes
3h-Fh
Reserved
NOTE 1
NOTE 2
If Task ID does not exist, device shall execute command without an error.
CMD44/CMD45/
CMD46/CMD47/
CMD48
CMD44
CMD44
CMD45
CMD45
CMD45
CMD46/CMD47
CMD48
Error(s) Description
Response
Error Handling
No Response
Illegal Command
No Response
Illegal Command
OK (no error
indication)
No Response
Type X errors
Error in Response
Type X errors
(e.g., WP violation)
Error in parameters: non-existent
Task ID; Task ID is not ready for
execution; Wrong direction
Invalid TM op-code
OK (no error
indication)
No Response
Error returned in
Response
Type X errors
OK (no error
indication)
Illegal Command
Illegal Command
Type X error
(ERROR)
CMDQ_MODE_EN is set
to 1.
Empty
Non-empty
Commands
Status
Class 11 commands
Illegal
Illegal
Class 11 commands
Legal
Class 11 commands
Legal
CMD0
CMD12
Legal
CMD13
Legal
Illegal
Field
Reserved
Secure Write Protect Configuration
Secure Write Protect Enable
Reserved
SECURE_WP_MODE_CONFIG
SECURE_WP_MODE_ENABLE
Size
(Bytes)
253
1
1
1
Cell
Type
TBD
R/W/E_P
R/W/E
TBD
Address
[255~3]
[2]
[1]
[0]
Clock control
The eMMC bus clock signal can be used by the host to put the Device into energy saving mode, or to
control the data flow (to avoid under-run or over-run conditions) on the bus. The host is allowed to lower
the clock frequency or shut it down.
There are a few restrictions the host must follow:
The bus frequency can be changed at any time (under the restrictions of maximum data transfer frequency, defined by the Device, and the identification frequency defined by the standard document).
It is an obvious requirement that the clock must be running for the Device to output data or response
tokens. After the last eMMC bus transaction, the host is required, to provide 8 (eight) clock cycles for the
Device to complete the operation before shutting down the clock. The various bus transactions are as
follows:
A command with no response. 8 clocks after the host command end bit.
A command with response. 8 clocks after the Device response end bit.
A read data transaction. 8 clocks after the end bit of the last data block.
A write data transaction. 8 clocks after the CRC status token.
The host is allowed to shut down the clock of a busy Device. The Device will complete the
programming operation regardless of the host clock. However, the host must provide a clock edge for the
Device to turn off its busy signal. Without a clock edge the Device (unless previously disconnected by a
deselect command (CMD7)) will force the DAT0 line down, forever.
6.8
Error conditions
Commands that belong to classes not supported by the Device (e.g., write commands in read only
Devices).
Commands not allowed in the current state (e.g., CMD2 in Transfer State).
Commands that are not defined (e.g., CMD50).
NOTE The COM_CRC_ERROR and ILLEGAL_COMMAND errors are detected during the command
interpretation and validation phase (Response Mode). However, since the Device does not respond to commands
with COM_CRC_ERROR or ILLEGAL_COMMAND error, the errors are reported in the response of the following
valid command.
Read
The read access time is defined as the sum of the two times given by the CSD parameters TAAC and
NSAC (see 6.15). These Device parameters define the typical delay between the end bit of the read
command and the start bit of the data block. This number is Device dependent.
Write
The R2W_FACTOR field in the CSD is used to calculate the typical block program time obtained by
multiplying the read access time by this factor. It applies to all write/erase commands (e.g.,
SET(CLR)_WRITE_PROT, PROGRAM_CSD(CID) and the block write commands).
The duration of an erase command will be (order of magnitude) the number of Erase blocks to be erased
multiplied by the block write delay. If ERASE_GROUP_DEF (EXT_CSD byte [175]) is enabled,
ERASE_TIMEOUT_MULT should be used to calculate the duration.
Secure Erase timeout is calculated based on the Erase Timeout and additional SEC_ERASE_MULT
factor (EXT_CSD byte [230]).
TRIM/DISCARD/Secure TRIM
The TRIM/DISCARD function timeout is calculated based on the TRIM_MULT factor (EXT_CSD byte
[232]). Secure TRIM timeout is calculated based on the Erase Timeout and additional
SEC_TRIM_MULT factor (EXT_CSD byte [229])
Force erase
The duration of the Force Erase command using CMD42 is specified to be a fixed time-out of 3 minutes.
OUT_OF_INTERRUPT_TIME (EXD_CSD byte[198]) defines the maximum time between the end bit of
CMD12/13, arg[0]=1 to the DAT0 release by the device.
Partition Switch
PARTITION_SWITCH_TIME (EXD_CSD byte[199]) defines the maximum time between the end bit of
the SWITCH command (CMD6) to the DAT0 release by the device, when switching partitions by
changing PARTITION_ACCESS bits in PARTITION_CONFIG field (EXT_CSD byte [179]).
Minimum performance
An eMMC Device has to fulfill the requirements set for the read and write access performance.
6.9.1 Speed class definition
The speed class definition is for indication of the minimum performance of a Device. The classes are
defined based on respectively the 150kB/s base value for single data rate operation (normal mode) and
300kB/s base value for dual data rate operation. The minimum performance of the Device can then be
marked by defined multiples of the base value e.g., 2.4MB/s (SDR) or 4.8MB/s (DDR). Only following
speed classes are defined. Speed class is not defined and is not applicable for eMMC operating in HS200
mode and HS400 mode.
NOTE eMMC Devices always including 8 bit data bus and the categories below states the configuration that the
Device is operated.
Low bus category classes (26MHz clock with 4bit data bus operation)
Mid bus category classes (26MHz clock with 8bit data bus or 52MHz clock with 4bit data bus operation):
12.0 MB/s (sdr) or 24.0 MB/s (ddr) Class F
15.0 MB/s (sdr) or 30.0 MB/s (ddr) Class G
18.0 MB/s (sdr) or 36.0 MB/s (ddr) Class H
21.0MB/s (sdr) or 42.0 MB/s (ddr) Class J
High bus category classes (52MHz clock with 8bit data bus operation):
24.0 MB/s (sdr) or 48.0 MB/s (ddr) Class K
30.0 MB/s (sdr) or 60.0 MB/s (ddr) Class M
36.0 MB/s (sdr) or 72.0 MB/s (ddr) Class O
42.0 MB/s (sdr) or 84.0 MB/s (ddr) Class R
48.0 MB/s (sdr) or 96.0 MB/s (ddr) Class T
The performance values for both write and read accesses are stored into the EXT_CSD register for
electrical reading (see 7.4). Only the defined values and classes are allowed to be used.
52 MHz, 8bit bus in the dual data mode (if 52 MHz clock frequency and dual data mode is supported
by the Device)
52 MHz, 8bit bus (if 52 MHz clock frequency is supported by the Device)
52 MHz, 4bit bus (if 52 MHz clock frequency is supported by the Device)
26 MHz, 8bit bus
26 MHz, 4bit bus
In case the minimum performance of the Device exceeds the physical limit of one of the above mentioned
options the Device has to also fulfill accordingly the performance criteria as defined in
MIN_PERF_a_b_ff.
6.10
Commands
All commands and responses are sent over the CMD line of the eMMC bus. The command transmission
always starts with the left bit of the bit string corresponding to the command codeword.
6.10.2 Command format
All commands have a fixed code length of 48 bits, needing a transmission time of 0.92 micro second at
52 MHz.
Table 47 Command Format
Description
Start Bit
Bit position
Width (bits)
Value
47
1
0
Transmission
Bit
46
1
1
Command
Index
[45:40]
6
x
Argument
CRC7
End Bit
[39:8]
32
x
[7:1]
7
x
0
1
1
A command always starts with a start bit (always 0), followed by the bit indicating the direction of
transmission (host = 1). The next 6 bits indicate the index of the command, this value being interpreted
as a binary coded number (between 0 and 63). Some commands need an argument (e.g., an address), that
is coded by 32 bits. A value denoted by x in Table 47 indicates this variable is dependent on the
command. All commands are protected by a CRC (see 0 for the definition of CRC7). Every command
codeword is terminated by the end bit (always 1). All commands and their arguments are listed in Table
48 through Table 58.
Class Description
basic
Obsolete
block read
Obsolete
block write
erase
write protection
lock Device
Application-specific
I/O mode
Security Protocols
Command Queuing
Reserved
Supported Commands
11
20 21
0 1 2 3 4 5 6 7 8 9 10
12 13 14 15 16 17 18 19
23 24
(2)
(2) (1)
+ + + + + + + + + + +
+ + + +
+
+ + +
+ +
Supported Commands
Class Description
basic
Obsolete
block read
Obsolete
block write
Erase
write protection
lock Device
Application-specific
I/O mode
Security Protocols
Command Queuing
Reserved
25 26 27 28 29 30 31 35 36 38 39 40 42 44 45 46 47 48 49 53 54 55 56
+ + +
+
+ + +
+ + + +
NOTE 1
NOTE 2
Obsolete.
+
+ +
+ +
+ +
+ + + + +
Type Argument
Resp Abbreviation
Command Description
CMD1
bc
bc
bcr
[31:0] 00000000
[31:0] F0F0F0F0
[31:0]FFFFFFFA
[31:0] OCR without busy
R3
GO_IDLE_STATE
GO_PRE_IDLE_STATE
BOOT_INITIATION
SEND_OP_COND
CMD2
bcr
R2
ALL_SEND_CID
CMD3
ac
R1
SET_RELATIVE_ADDR
CMD4
bc
SET_DSR
CMD5
ac
R1b
SLEEP_AWAKE
CMD6
ac
R1b
SWITCH
CMD7
ac
[31:16] RCA
[15:0] stuff bits
[31:16] DSR
[15:0] stuff bits
[31:16] RCA
[15]Sleep/Awake
[14:0] stuff bits
[31:26] Set to 0
[25:24] Access
[23:16] Index
[15:8] Value
[7:3] Set to 0
[2:0] Cmd Set
[31:16] RCA
[15:0] stuff bits
CMD8
CMD9
adtc
ac
CMD10
ac
CMD11
CMD12
ac
CMD13
ac
[31:16] RCA2
[15:1] stuff bits
[0] HPI
[31:16] RCA
[15] SQS
[14:1] stuff bits
[0] HPI
CMD14
adtc
CMD15
ac
CMD19
NOTE 1
NOTE 2
NOTE 3
adtc
R1
R2
SEND_EXT_CSD
SEND_CSD
R2
SEND_CID
obsolete
R1/ STOP_TRANSMISSION
R1b3
R1
SEND_STATUS
R1
BUSTEST_R
[31:16] RCA
[15:0] stuff bits
[31:0] stuff bits
R1
GO_INACTIVE_STATE
BUSTEST_W
R1 while selecting from Stand-By State to Transfer State; R1b while selecting from Disconnected State to Programming State.
RCA in CMD12 is used only if HPI bit is set. The argument does not imply any RCA check on the device side.
R1 for read cases and R1b for write cases.
Resp Abbreviation
R1
SET_BLOCKLEN
CMD17
R1
READ_SINGLE_
BLOCK
CMD18
R1
READ_MULTIPLE_
BLOCK
CMD21
R1
SEND_TUNING_
BLOCK
NOTE 1
address.
NOTE 2
register.
Command Description
Sets the block length (in bytes) for all
following block commands (read and
write). Default block length is specified in
the CSD.
Reads a block of the size selected by the
SET_BLOCKLEN command.2
Continuously transfers data blocks from
Device to host until interrupted by a stop
command, or the requested number of data
blocks is transmitted If sent as part of a
packed read command, the argument shall
contain the first read data address in the
pack (address of first individual read
command inside the pack). (See 6.6.27.1)
128 clocks of tuning pattern (64 byte in 4
bit mode or 128 byte in 8 bit mode) is sent
for HS200 optimal sampling point
detection.
Data address for media =<2 GB is a 32 bit byte address and data address for media > 2 GB is a 32 bit sector (512 B)
The transferred data must not cross a physical block boundary, unless READ_BLK_MISALIGN is set in the CSD
Resp Abbreviation
Obsolete
Command Description
The response to CMD20 will be undefined.
Type Argument
ac
Resp
R1
Abbreviation
Command Description
SET_BLOCK_COUNT
CMD23
(packed)
ac
[31] set to 0
[30] 1 packed
[29:16] set to 0
[15:0] number of
blocks
R1
SET_BLOCK_COUNT
CMD24
adtc
R1
WRITE_BLOCK
CMD25
adtc
R1
WRITE_MULTIPLE_
BLOCK
CMD26
adtc
R1
PROGRAM_CID
CMD27
adtc
R1
PROGRAM_CSD
CMD49
adtc
R1
SET_TIME
NOTE 1
NOTE 2
Data address for media =<2 GB is a 32 bit byte address and data address for media > 2 GB is a 32 bit sector (512 B) address.
The transferred data must not cross a physical block boundary unless WRITE_BLK_MISALIGN is set in the CSD.
CMD29
CMD30
CMD31
NOTE 1
ac
[31:0] data
address1
Resp Abbreviation
Command Description
R1b
If CLASS_6_CTRL=0x00:
If the Device has write protection features,
this command sets the write protection bit of
the addressed group. The properties of write
protection are coded in the Device specific
data (WP_GRP_SIZE or
HC_WP_GRP_SIZE).
R1b
R1
R1
SET_WRITE_PROT
CLR_WRITE_PROT
SEND_WRITE_PROT
SEND_WRITE_PROT
_TYPE
If CLASS_6_CTRL=0x01:
This command releases the specified
addressed group.
If CLASS_6_CTRL=0x00:
If the Device provides write protection
features, this command clears the write
protection bit of the addressed group.
If CLASS_6_CTRL=0x01:
This command is ignored.
If CLASS_6_CTRL=0x00:
If the Device provides write protection
features, this command asks the Device to
send the status of the write protection bits.2
If CLASS_6_CTRL=0x01:
This command asks the device to send the
status of released groups. A bit 0 means the
specific group is valid and accessible, a bit
1 means the specific group was released
and it cannot be used.3
If CLASS_6_CTRL=0x00:
This command sends the type of write
protection that is set for the different write
protection groups4.
If CLASS_6_CTRL=0x01:
This command returns a fixed pattern of 64bit zeros in its payload.
Data address for media =<2 GB is a 32 bit byte address and data address for media > 2 GB is a 32 bit sector (512 B) address.
NOTE 2 32 write protection bits (representing 32 write protect groups starting at the specified address) followed by 16 CRC bits are transferred
in a payload format via the data lines. The last (least significant) bit of the protection bits corresponds to the first addressed group. If the
addresses of the last groups are outside the valid range, then the corresponding write protection bits shall be set to zero.
NOTE 3 32 released status bits (representing 32 write protect groups starting at the specified address) followed by 16 CRC bits are transferred
in a payload format via the data lines. The last (least significant) bit of the released bits corresponds to the first addressed group. If the addresses
of the last groups are outside the valid range, then the corresponding released bits shall be set to zero.
NOTE 4 64 write protection bits (representing 32 write protect groups starting at the specified address) followed by 16 CRC bits are transferred
in a payload format via the data lines. Each set of two protection bits shows the type of protection set for each of the write protection groups. The
definition of the different bit settings are shown below. The last (least significant) two bits of the protection bits correspond to the first addressed
group. If the addresses of the last groups are outside the valid range, then the corresponding write protection bits shall be set to zero.
00 Write protection group not protected
01 Write protection group is protected by temporary write protection
10 Write protection group is protected by power-on write protection
11 Write protection group is protected by permanent write protection
ac
[31:0] data
address1,2
R1
ERASE_GROUP_END
ac
[31] Secure
request4
[30:16] set to 0
[15] Force
Garbage Collect
request4
[14:2] set to 0
[1] Discard Enable
[0] Identify Write
Blocks for Erase
(or TRIM Enable)
R1b
ERASE
NOTE 1 Data address for media =<2 GB is a 32 bit byte address and data address for media > 2 GB is a 32 bit sector (512B)
address.
NOTE 2 The Device will ignore all LSBs below the Erase Group size, effectively rounding the address down to the Erase
Group boundary.
NOTE 3 Table 11 and Table 12 give a description of the argument bits and a list of supported argument combinations.
NOTE 4 Argument bit 15 is an optional feature that is only supported if SEC_GB_CL_EN (EXT_CSD[231] bit 4) is set.
Argument bit 31 is an optional feature that is only supported if SEC_ER_EN (EXT_CSD[231] bit 0) is set
CMD40
bcr
Resp Abbreviation
R4
FAST_IO
R5
GO_IRQ_STATE
Command Description
Used to write and read 8 bit (register) data
fields. The command addresses a Device
and a register and provides the data for
writing if the write flag is set. The R4
response contains data read from the
addressed register if the write flag is
cleared to 0. This command accesses
application dependent registers that are not
defined in the eMMC standard.
Sets the system into interrupt mode
CMD41 Reserved
Resp Abbreviation
R1
LOCK_UNLOCK
Command Description
Used to set/reset the password or
lock/unlock the Device. The size of the data
block is set by the SET_BLOCK_LEN
command.
CMD43 Reserved
Resp Abbreviation
R1
APP_CMD
R1
GEN_CMD
Command Description
Indicates to the Device that the next
command is an application specific
command rather than a standard command
Used either to transfer a data block to the
Device or to get a data block from the
Device for general purpose / application
specific commands. The size of the data
block shall be set by the
SET_BLOCK_LEN command.
CMD57 Reserved
CMD59
CMD60 Reserved for manufacturer
CMD63
NOTE
RD/WR: 1 the host gets a block of data from the Device. 0 the host sends block of data to the Device.
Resp Abbreviation
CMD53
R1
PROTOCOL_RD
CMD54
R1
PROTOCOL_WR
Command Description
All future reserved commands, and their responses (if there are any), shall have a codeword length of 48
bits.
CMD47
CMD48
Command Description
Defines Data Direction (DD) of operation
(read/write), Priority (high/simple), Task
ID, and block count of queued task.
CMD44 settings shall be compliant with the
indications given in Table 34, Features
Cross Reference Table.
R1
EXECUTE_READ
_TASK
R1
EXECUTE_WRITE
_TASK
R1b CMDQ_TASK
_MGMT
Table 60 defines the Device state transitions in dependency of the received command.
Table 60 Device state transitions
idle ready
Command
Class Independent
CRC error
command not supported
Class 0
CMD0
idle idle
(arg=0x00000000)
CMD0
Pre- Pre(arg=0xF0F0F0F0)
idle idle
CMD1, Device VCCQ
ready
range6 compatible
CMD1, Device is busy
idle
CMD1, Device VCCQ
ina
range6 not compatible
CMD2, Device wins bus
ident
CMD2, Device loses bus
ready
CMD3
CMD4
CMD5
CMD6
CMD7, Device is
addressed
CMD7, Device is not
addressed
CMD8
CMD9
CMD10
CMD12, arg[0] = 0
CMD12, arg[0] = 1
CMD13, arg[0] = 0 or 1
CMD14
CMD15
CMD19
Class 1
CMD11 (obsolete)
Class 2
CMD16
CMD17
CMD18
CMD21
CMD23
Class 3
CMD20 (obsolete)
-
ident stby
Current State
tran data btst rcv
Changes to
prg
dis
ina
slp
irq
stby
stby
idle
idle
idle
idle
idle
idle
idle
idle
idle
stby
Preidle
-
Preidle
-
Preidle
-
Preidle
-
Preidle
-
Preidle
-
Preidle
-
Preidle
-
stby
Preidle
-
stby
stby
stby
-
stby
slp
tran
prg
-
prg
stby
-
stby
stby
stby
stby
stby
stby
stby
stby
stby
dis
stby
stby
stby
stby
ina
-
data
tran
ina
btst
tran
data
ina
-
btst
tran
ina
-
prg
rcv
ina
-
prg
prg
ina
-
dis
ina
-
stby
stby
stby
stby
stby
stby
stby
stby
stby
tran
data
data
data
tran
stby
stby
stby
stby
stby
stby
Command
Class 4
CMD16
CMD23
CMD24
CMD25
CMD26
CMD27
CMD49
Class 6
CMD28
CMD29
CMD30
CMD31
Class 5
CMD35
CMD36
CMD38
Class 7
CMD16
CMD42
Class 8
CMD55
CMD56; RD/WR = 0
CMD56; RD/WR = 1
Class 9
CMD39
CMD40
Class 10
CMD53
CMD54
Class 11
CMD44
CMD45
CMD46
CMD47
CMD48
Class 12
CMD41;
CMD43;
CMD50CMD52,
CMD57CMD59
CMD60CMD63
Current State
tran data btst rcv
Changes to
prg
dis
ina
slp
Irq
rcv
rcv
rcv
rcv
rcv
see class 2
see class 2
-
prg
prg
data
data
stby
stby
stby
stby
tran
tran
prg
stby
stby
stby
rcv
see class 2
-
stby
stby
-
tran
rcv
data
data
-
btst
-
rcv
-
prg
-
dis
-
irq
stby
stby
stby
irq
stby
stby
data
rcv
Stby
Stby
tran
tran
data
rcv
prg
data
data
-
rcv
rcv
-
prg
prg
-
Reserved
Reserved for Manufacturer
rcv1
rcv2
-
stby
stby
stby
stby
stby
Command
Current State
tran data btst rcv
Changes to
prg
dis
ina
slp
irq
NOTE 1 Due to legacy considerations, a Device may treat CMD24/25 during a prg statewhile busy is activeas a legal or
an illegal command. A Device that treats CMD24/25 during a prg-statewhile busy is activeas an illegal command will not
change its state to the rcv state. A host should not send CMD24/25 while the Device is in prg state and busy is active.
NOTE 2 Due to legacy considerations, a Device may treat CMD24/25 during a prg statewhile busy is activeas a legal or
an illegal command. A Device that treats CMD24/25 during a prg statewhile busy is activeas an illegal command will not
change its state to the rcv state. A host should not send CMD24/25 while the Device is in prg state and busy is active.
NOTE 3 As there is no way to obtain state information in boot mode, boot-mode states are not shown in this table.
NOTE 4 For details on Pre-Idle, Pre-Boot and Boot state and CMD0 (0xFFFFFFFA) transitions, refer to 6.3.
CMD44-CMD48 state transitions described in this table relate to scenario that Command Queue feature is
enabled (CMDQ_MODE_EN=xxxxxxx1b).
NOTE 6 VDD range in case of High Voltage MultimediaCard.
NOTE 5
6.12
Responses
All responses are sent via the command line CMD. The response transmission always starts with the left
bit of the bit string corresponding to the response codeword. The code length depends on the response
type. A response always starts with a start bit (always 0), followed by the bit indicating the direction of
transmission (Device = 0). A value denoted by x in Table 63 Table 67 indicates a variable entry. All
responses, except for the type R3, are protected by a CRC (see 0 for the definition of CRC7). Every
command codeword is terminated by the end bit (always 1).
There are five types of responses. Their formats are defined as follows:
R1 (normal response command): code length 48 bit. The bits 45:40 indicate the index of the
command to be responded to, this value being interpreted as a binary coded number (between 0 and
63). The status of the Device is coded in 32 bits. The Device status is described in 6.13.
Table 63 R1 response
Description
Start bit
Transmission
bit
Bit position
47
46
[45:40]
[39:8]
Width (bits)
32
Value
CRC7
Command
index
Device status
CRC7
End bit
R1b is identical to R1 with an optional busy signal transmitted on the data line DAT0. The Device
may become busy after receiving these commands based on its state prior to the command reception.
Refer to 6.15 for detailed description and timing diagrams.
Responses (contd)
R2 (CID, CSD register): code length 136 bits. The contents of the CID register are sent as a response
to the commands CMD2 and CMD10. The contents of the CSD register are sent as a response to
CMD9. Only the bits [127...1] of the CID and CSD are transferred, the reserved bit [0] of these
registers is replaced by the end bit of the response.
Table 64 R2 response
Description
Start bit
Bit position
Width (bits)
Value
135
1
0
Transmission
bit
134
1
0
Check bits
[133:128]
6
111111
End bit
0
1
1
R3 (OCR register): code length 48 bits. The contents of the OCR register is sent as a response to
CMD1. The level coding is as follows: restricted voltage windows=LOW, Device busy=LOW.
Table 65 R3 Response
Description
Start bit
Bit position
47
Transmission
bit
46
[45:40]
OCR
register
[39:8]
Width (bits)
32
Value
111111
1111111
Check bits
Check bits
End bit
[7:1]
R4 (Fast I/O): code length 48 bits. The argument field contains the RCA of the addressed Device, the
register address to be read out or written to, and its contents. The status bit in the argument is set if the
operation was successful.
Table 66 R4 response
Description
Start
bit
Transmission
bit
CMD39
Bit position
47
46
[45:40]
Width (bits)
Value
1
0
1
0
6
100111
RCA
[31:16]
Status
[15]
16
x
1
x
Register
address
[14:8]
Read
register
contents
[7:0]
8
x
CRC
7
End
bit
[7:1]
7
x
1
1
R5 (Interrupt request): code length 48 bits. If the response is generated by the host, the RCA field in
the argument shall be 0x0.
Table 67 R5 response
Description
Start
bit
Transmission
bit
CMD40
Bit position
Width (bits)
Value
47
1
0
46
1
0
[45:40]
6
101000
CRC
7
End
bit
[7:1]
7
x
0
1
1
Device status
The response format R1 contains a 32-bit field named Device status. This field is intended to transmit the
Devices status information. Two different attributes are associated with each one of the Device status
bits:
Bits Identifier
31
ADDRESS_
OUT_OF_RANGE
30
ADDRESS_
MISALIGN
Det
Type
Value
Mode
E
R
0 = no error
1 = error
X
29
BLOCK_LEN_
ERROR
28
27
ERASE_SEQ_
ERROR
ERASE_PARAM
26
WP_VIOLATION
25
DEVICE_IS_LOCK
ED
24
LOCK_UNLOCK_
FAILED
23
COM_CRC_ERROR
22
20
ILLEGAL_
COMMAND
DEVICE_ECC_
FAILED
CC_ERROR
19
ERROR
18
obsolete
21
Description
Clear
Cond
B
B
B
B
A
B
B
B
B
Type
Det
Value
Mode
17
16
obsolete
CID/CSD_
OVERWRITE
15
WP_ERASE_SKIP
14
13
ERASE_RESET
12:9 CURRENT_STATE
Description
Clear
Cond
B
8
7
READY_FOR_
DATA
SWITCH_ERROR
S
E
EXCEPTION_EVE
NT
APP_CMD
4
3:2
1:0
0 = not ready
1 = ready
0 = no error 1
= switch error
A
B
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
X
X
R
R
S
S
S
S
S
S
S
S
R
R
R
R
R
R
R
R
R
R
R
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
X
X
R
R
R
R
R
R
R
R
X
X
X
X
X
X
X
X
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
X
X
X
R
R
R
R
R
R
R
6
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
CMD#
31 30 29 28 27 26 25 24 23* 22* 21 20 19 18 17 16 15 13 12:9 8
1, 2,
Bit is 2, 4,
valid 3, 10
4,
for
classes 5,
6,
10
2,
4,
7,
10
3, A
4, L
10 W
A
Y
S
A
L
W
A
Y
S
A
L
W
A
Y
S
1, A A
2, L L
10 W W
A A
Y Y
S S
A
L
W
A
Y
S
A
L
W
A
Y
S
A
L
W
A
Y
S
A
L
W
A
Y
S
A
L
W
A
Y
S
A
L
W
A
Y
S
A
L
W
A
Y
S
* The COM_CRC_ERROR and ILLEGAL_COMMAND errors are detected during the command interpretation and validation
phase (Response Mode). However, since the Device does not respond to commands with COM_CRC_ERROR or
ILLEGAL_COMMAND error, the errors are reported in the response of the following valid command.
Not all Device status bits are meaningful all the time. Depending on the classes supported by the Device,
the relevant bits can be identified. If all the classes that affect a status bit, or an error bit, are not supported
by the Device, the bit is not relevant and can be ignored by the host.
Block: is the unit that is related to the block oriented read and write commands. Its size is the number
of bytes that will be transferred when one block command is sent by the host. The size of a block is
either programmable or fixed. The information about allowed block sizes and the programmability is
stored in the CSD.
The granularity of the erasable units is the Erase Group: The smallest number of consecutive write
blocks that can be addressed for erase. The size of the Erase Group is Device specific and stored in
the CSD when ERASE_GROUP_DEF is disabled, and in the EXT_CSD when
ERASE_GROUP_DEF is enabled.
The granularity of the Write Protected units is the WP-Group: The minimal unit that may be
individually write protected. Its size is defined in units of erase groups. The size of a WP-group is
Device specific and stored in the CSD when ERASE_GROUP_DEF is disabled, and in the
EXT_CSD when ERASE_GROUP_DEF is enabled.
Timings
Start bit (= 0)
Transmitter bit (Host = 1, Device = 0)
One-cycle pull-up (= 1)
End bit (= 1)
One-cycle pull-down (= 0)
High impedance state (-> = 1)
Driven value, 1 or 0
Data bits
Repetition
Cyclic redundancy check bits (7 bits)
Device active
Host active
The difference between the P-bit and Z-bit is that a P-bit is actively driven to HIGH by the Device
respectively host output driver, while Z-bit is driven to (respectively kept) HIGH by the pull-up resistors
RCMD respectively RDAT. Actively-driven P-bits are less sensitive to noise.
All timing values are defined in Table 71.
6.15.1 Command and response
Both host command and Device response are clocked out with the rising edge of the host clock in either
the single data rate or dual data rate modes.
R1b responses
Some commands, like CMD6, may assert the BUSY signal and respond with R1. If the busy signal is
asserted, it is done two clock cycles after the end bit of the command. The DAT0 line is driven low,
DAT1-DAT7 lines are driven by the Device though their values are not relevant.
Figure 40 Timing response end to next command start (data transfer mode)
Due to ambiguity of previous versions of standard, start and end bits may either be valid for both the rising and falling edge or only for the
rising edge. To ensure backward compatibility, the standard allows for both interpretations and does not mandate the value on the falling edge.
Due to ambiguity of previous versions of standard, start and end bits may either be valid for both the rising and falling edge or only for the
rising edge. To ensure backward compatibility, the standard allows for both interpretations and does not mandate the value on the falling edge
CMD
E Z Z P * * P S T Content CRC E Z Z P * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * P
<-NWR->
DAT0
<--- Write data ---> <-NCRC-> <-CRC status-> <- Busy ->
CLK
CRC Status Response
S
DAT0
tPH_DATASTROBE
tRQ
tRQH
tPH_DATASTROBE
tPERIOD
Busy
tRQ
DS
In multiple block write mode, the Device expects continuous flow of data blocks following the initial host
write command. The data flow is terminated by a stop transmission command (CMD12). Figure 48
describes the timing of the data blocks with and without Device busy signal.
Device
Host Command
CMD
NCR Cycles
Device response
S T Content CRC E Z Z P P P * * * * * * P S T
Content
Host Cmnd
CRC E Z Z P P S T Content
NSB-B
< NST >
DATO
D D D D D D D D D D E Z Z S L ********************* L E Z Z Z Z Z Z Z Z
DAT 1-7 D D D D D D D D D D E Z Z X X
XX Z Z Z Z Z Z Z Z
Host Command
CMD
NCR Cycles
S T Content CRC E Z Z P
Device response
P*****P
S T Content
Host Cmnd
CRC E Z Z
S T Content
NSB-A
Data block
satatS CRC
****************************
********************************
E Z Z Z Z Z Z Z Z
X Z Z Z Z Z Z Z Z
Figure 50 Stop transmission during CRC status transfer from the Device
All previous examples dealt with the scenario of the host stopping the data transmission during an active
data transfer. The following two diagrams describe a scenario of receiving the stop transmission between
data blocks. In the first example the Device is busy programming the last block while in the second the
Device is idle. However, there are still unprogrammed data blocks in the input buffers. These blocks are
being programmed as soon as the stop transmission command is received and the Device activates the
busy signal.
Device
Figure 51 Stop transmission after last data block; Device is busy programming
Host Command
CMD
S T Content CRC E Z Z P * * * * P S T
<NSB-C>
DATO
Device response
NCR Cycles
Content
Host Cmnd
CRC E Z Z P P P P S T Content
Device is programming
Z Z Z Z Z Z Z ZZ Z Z S L
****************************
L E Z Z Z Z Z Z Z Z
DAT1-7 Z Z Z Z Z Z Z Z Z Z Z X X
****************************
X X Z Z Z Z Z Z Z Z
Figure 52 Stop transmission after last data block; Device becomes busy
In an open-ended multiple block write case the busy signal between the data blocks should be considered
as buffer busy signal. As long as there is no free data buffer available the Device should indicate this by
pulling down the DAT0 line. The Device stops pulling down DAT0 as soon as at least one receive buffer
for the defined data transfer block length becomes free. After the Device receives the stop command
(CMD12), the following busy indication should be considered as programming busy and being directly
related to the Programming state. As soon as the Device completes the programming, it stops pulling
down the DAT0 line.
Boot request
complete
NCP
CMD
ZZZZS
***
DAT0
Z Z Z Z Z *** Z S 0 1 0 E P *** P S
L E Z Z Z Z S T CMD1
Data + CRC
E P *** P S
Data + CRC
E P P P Z Z Z Z ****
Data + CRC
E P *** P S
Data + CRC
E P P P Z Z Z Z ****
Optional
NST
NAC
tBD
NCD1
Boot request
complete
NCP
CMD
ZZZZS
***
L E Z Z Z ** Z S T
CMD1
DAT0
Z Z Z Z Z *** Z S 0 1 0 E P *** P S
Data + CRC
E P *** P S
Data
E Z ** Z Z Z Z Z ****
Data + CRC
E P *** P S
Data
E Z ** Z Z Z Z Z ****
Optional
NAC
tBD
NOTE 1
NST
NCD1
Boot request
complete
CMD
Z CMD01 Z
DAT0
****
***
Z *** Z S 0 1 0 E P *** P S
CMD0 Z Z Z Z S T CMD1
Data + CRC
E P *** P S
Data + CRC
E P P P Z Z Z Z ****
Data + CRC
E P *** P S
Data + CRC
E P P P Z Z Z Z ****
Optional
DAT1-7 Z
****
NST
NAC
Note 2
tBD
NOTE 1
NOTE 2
Z CMD01 Z
DAT0
****
***
Z *** Z S 0 1 0 E P *** P S
CMD0 Z Z Z ** Z S T
CMD1
Data + CRC
E P *** P S
Data
E Z ** Z Z Z Z Z ****
Data + CRC
E P *** P S
Data
E Z ** Z Z Z Z Z ****
Optional
DAT1-7 Z
****
NAC
NST Note 2
tBD
NOTE 1
NOTE 2
Symbol
NAC
NCC
NCD
NCP
NCR
NID
NRC
NSC
NST
NWR
NSB-A(2)
NSB-B(2)
NSB-C(2)
tBA
tBD
Unit
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
Clock cycles
ms
s
NOTE 1
FOP is the MMC clock frequency the host is using for the read operation.
Following is a calculation example:
CSD value for TAAC is 0x26; this is equal to 1.5mSec;
CSD value for NSAC is 0;
The host frequency FOP is 10MHz
NAC = 10 (1.510-3 10106 + 0) = 150,000 clock cycles
NOTE 2
NSB-A: Device is driving DAT0 (e.g., CRC response) no need in direction change (see Figure 50)
NSB-B: Host is transmitting DAT0 (e.g., during write data transfer) need to allow direction change (see
Figure 49)
NSB-C: DAT0 in Tri State no need in direction change (see Figure 51)
Min.
Max.
Unit
clock cycles
(See note.1)
NCRC
NST
NSB-A
NSB-B
NSB-C
clock cycles
clock cycles
CLK
tPH
Clock
Stopped
10
tPH
End Bit
11
Start Bit
DAT [7:0]
CMD
DAT[0]
S
Write Data
STOP_TRANSMISSION (CMD12)
CRC E
NCRC
CMD12
3 Clks
CMD12
11
E
2 Clks
DAT
10
CRC
S Next Block
CMD
S T
HOST CMD
Content CRC E Z Z
DAT0-7
******
P****P
Device Response
Content CRC E Z Z
Z Z
P***************P
Read Data
S D D D D *** D D CRC
P****P
******
DS
S T
L or Z
******
EX Z
******
L or Z
tRPRE
tRPST
L or Z
tRPST
tRPRE
******
Figure 62 Enhanced Strobe signals for CMD Response and Data Out (Read operation)
CMD
S T
HOST CMD
Content CRC E Z Z
DAT0
P****P
S T
Device Response
Content CRC E Z Z
******
******
DAT1-7
******
DS
Z Z
Z Z
L or Z
P****P
P****P
Z
******
P***************P
Write Data
CRC Status
BUSY
S X D D D D *** D D CRC E X Z Z P**P S Status E X S
L ** L
E Z
S X D D D D *** D D CRC E X Z Z P**P
X ** X
Z
L or Z
tRPST
tRPRE
L or Z
tRPST
tRPRE
***
***
******
Figure 63 Enhanced Strobe signals for CMD Response and CRC Response (Write operation)
CMD
DAT0
DAT1-7
DS
CMD6 (DDRx8+EnhSt)
Z S T Content CRC E Z Z
******
******
P****P
Z Z S
Z Z
******
Device Response
CMD6 (HS400)
S T Content CRC E Z *** Z S T Content CRC E Z Z
BUSY
L ** L
X ** X
E Z
Z
Z
******
******
P****P
CMD13
Device Response
S T Content CRC E Z *** Z S T Content CRC E Z Z
Z Z S
Z Z
******
BUSY
L ** L
X ** X
Device Response
S T Content CRC E Z Z
******
L or Z
tRPRE
******
******
******
E Z
Z
Z L or Z
P****P
L or Z
tRPST
NOTE 1
Device will detect the rising edge of RST_n signal to trigger internal reset sequence.
Symbol
tRSTW
tRSCA
tRSTH
NOTE 1
Max
Unit
[us]
2001
[us]
[us]
74 cycles of clock signal required before issuing CMD1 or CMD0 with argument 0xFFFFFFFA.
CLK
Data
Strobe
DAT[7:0]
D0
(odd)
D0
(even)
D255
(odd)
D255
(even)
C15
(odd)
C15
(even)
C0
(odd)
C0
(even)
Figure 67 HS400 Write Timing with data block size of 512 bytes
6.15.12.2 Read Timing
The Data Strobe is toggled only during data valid period (Start bit, Data, CRC16, End bit, CRC status
token). In HS400 mode, Start Bit position is valid at both rising and falling edge. In addition, the host
may stop CLK between data blocks and not within a data block.
Data Strobe shall be driven tRPRE prior to the first Data Strobe rising edge and tRPST after the last falling
edge.
8bit HS400 Read
tPERIOD
CLK
Data
Strobe
DAT[7:0]
tRPST
tRPRE
Pulled down Driven low
D0
(odd)
D0
(even)
D255
(odd)
D255
(even)
C15
(odd)
C15
(even)
C0
(odd)
C0
(even)
Figure 68 HS400 Read Timing with data block size of 512 bytes
Device Registers
Within the Device interface seven registers are defined: OCR, CID, CSD, EXT_CSD, RCA, DSR and
QSR. These can be accessed only by corresponding commands (see 6.10). The OCR, CID, CSD and QSR
registers carry the Device/content specific information, while the RCA and DSR registers are
configuration registers storing actual configuration parameters. The EXT_CSD register carries both,
Device specific information and actual configuration parameters.
7.1
OCR register
The 32-bit operation conditions register (OCR) stores the VDD voltage profile of the Device and the access
mode indication. In addition, this register includes a status information bit. This status bit is set if the
Device power up procedure has been finished. The OCR register shall be implemented by all Devices.
Table 74 OCR register definitions
OCR bit
Dual voltage
MultimediaCard
and eMMC
High Voltage
MultimediaCard
[6:0]
Reserved
000 0000b
000 0000b
[7]
1.70 1.95V
0b
1b
[14:8]
2.0 2.6V
000 0000b
000 0000b
[23:15]
2.7 3.6V
1 1111 1111b
1 1111 1111b
[28:24]
Reserved
0 0000b
0 0000b
[30:29]
Access Mode
[31]
NOTE 1 This bit is set to LOW if the Device has not finished the power up routine.
NOTE 2
The supported voltage range is coded as shown in Table 74 for eMMC devices. As long as the Device is
busy, the corresponding bit (31) is set to LOW, the wired-and operation, described in 6.4.4 yields LOW,
if at least one Device is still busy.
CID register
The Device IDentification (CID) register is 128 bits wide. It contains the Device identification
information used during the Device identification phase (eMMC protocol). Every individual flash or I/O
Device shall have an unique identification number. Every type of eMMC Device shall have a unique
identification number. Table 75 lists these identifiers. The structure of the CID register is defined in this
section.
Table 75 CID Fields
Name
Manufacturer ID
Reserved
Device/BGA
OEM/Application ID
Product name
Product revision
Product serial number
Manufacturing date
CRC7 checksum
not used, always 1
Field
MID
CBX
OID
PNM
PRV
PSN
MDT
CRC
-
Width
8
6
2
8
48
8
32
8
7
1
CID-Slice
[127:120]
[119:114]
[113:112]
[111:104]
[103:56]
[55:48]
[47:16]
[15:8]
[7:1]
[0:0]
Type
Device (removable)
BGA (Discrete embedded)
10
POP
11
Reserved
Year
1997, or 2013 if EXT_CSD_REV [192] > 4
1998, or 2014 if EXT_CSD_REV [192] > 4
1999, or 2015if EXT_CSD_REV [192] > 4
2000, or 2016 if EXT_CSD_REV [192] > 4
2001, or 2017 if EXT_CSD_REV [192] > 4
2002, or 2018 if EXT_CSD_REV [192] > 4
2003, or 2019 if EXT_CSD_REV [192] > 4
2004, or 2020 if EXT_CSD_REV [192] > 4
2005, or 2021 if EXT_CSD_REV [192] > 4
2006, or 2022 if EXT_CSD_REV [192] > 4
2007, or 2023 if EXT_CSD_REV [192] > 4
2008, or 2024 if EXT_CSD_REV [192] > 4
2009, or 2025 if EXT_CSD_REV [192] > 4
2010 only
2011 only
2012 only
CSD register
The Device-Specific Data (CSD) register provides information on how to access the Device contents. The
CSD defines the data format, error correction type, maximum data access time, data transfer speed,
whether the DSR register can be used etc. The programmable part of the register (entries marked by W or
E below) can be changed by CMD27. The type of the CSD Registry entries below is coded as follows:
R:
W:
R/W:
W/E:
Read only.
One time programmable and not readable.
One time programmable and readable.
Multiple writable with value kept after power failure, H/W reset assertion and any CMD0 reset
and not readable.
R/W/E:
Multiple writable with value kept after power failure, H/W reset assertion and any CMD0 reset
and readable.
R/W/C_P: Writable after value cleared by power failure and HW/rest assertion (the value not cleared by
CMD0 reset) and readable.
R/W/E_P: Multiple writable with value reset after power failure, H/W reset assertion and any CMD0 reset
and readable.
W/E_P:
Multiple writable with value reset after power failure, H/W reset assertion and any CMD0
reset and not readable.
CSD structure
System specification version
Reserved
Data read access-time 1
Data read access-time 2 in CLK
cycles (NSAC*100)
Max. bus clock frequency
Device command classes
Max. read data block length
Partial blocks for read allowed
Write block misalignment
Read block misalignment
DSR implemented
Reserved
Device size
Max. read current @ VDD min
Max. read current @ VDD max
Max. write current @ VDD min
Max. write current @ VDD max
Device size multiplier
Erase group size
Erase group size multiplier
Write protect group size
Write protect group enable
Manufacturer default ECC
Write speed factor
Max. write data block length
Partial blocks for write allowed
Reserved
Content protection application
File format group
Copy flag (OTP)
Permanent write protection
Temporary write protection
File format
ECC code
CRC
Not used, always1
Field
Width
Cell Type
CSD-slice
CSD_STRUCTURE
SPEC_VERS
TAAC
NSAC
2
4
2
8
8
R
R
R
R
R
[127:126]
[125:122]
[121:120]
[119:112]
[111:104]
TRAN_SPEED
CCC
READ_BL_LEN
READ_BL_PARTIAL
WRITE_BLK_MISALIGN
READ_BLK_MISALIGN
DSR_IMP
C_SIZE
VDD_R_CURR_MIN
VDD_R_CURR_MAX
VDD_W_CURR_MIN
VDD_W_CURR_MAX
C_SIZE_MULT
ERASE_GRP_SIZE
ERASE_GRP_MULT
WP_GRP_SIZE
WP_GRP_ENABLE
DEFAULT_ECC
R2W_FACTOR
WRITE_BL_LEN
WRITE_BL_PARTIAL
CONTENT_PROT_APP
FILE_FORMAT_GRP
COPY
PERM_WRITE_PROTECT
TMP_WRITE_PROTECT
FILE_FORMAT
ECC
CRC
-
8
12
4
1
1
1
1
2
12
3
3
3
3
3
5
5
5
1
2
3
4
1
4
1
1
1
1
1
2
2
7
1
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R/W
R/W
R/W
R/W/E
R/W
R/W/E
R/W/E
[103:96]
[95:84]
[83:80]
[79:79]
[78:78]
[77:77]
[76:76]
[75:74]
[73:62]
[61:59]
[58:56]
[55:53]
[52:50]
[49:47]
[46:42]
[41:37]
[36:32]
[31:31]
[30:29]
[28:26]
[25:22]
[21:21]
[20:17]
[16:16]
[15:15]
[14:14]
[13:13]
[12:12]
[11:10]
[9:8]
[7:1]
[0:0]
The following sections describe the CSD fields and the relevant data types. If not explicitly defined
otherwise, all bit strings are interpreted as binary coded numbers starting with the left bit first.
0
1
2
3
Code
2:0
6:3
Time unit 0 = 1ns, 1 = 10ns, 2 = 100ns, 3 = 1s, 4 = 10s, 5 = 100s, 6 = 1ms, 7 = 10ms
Multiplier factor 0 = reserved, 1 = 1.0, 2 = 1.2, 3 = 1.3, 4 = 1.5, 5 = 2.0, 6 = 2.5, 7 = 3.0,
8 = 3.5, 9 = 4.0, A = 4.5, B = 5.0, C = 5.5, D = 6.0, E = 7.0, F = 8.0
Reserved
Code
2:0
Frequency unit
0 = 100KHz, 1 = 1MHz, 2 = 10MHz, 3 = 100MHz,
47 = reserved
Multiplier factor
0 = reserved, 1 = 1.0, 2 = 1.2, 3 = 1.3, 4 = 1.5, 5 = 2.0, 6 = 2.6, 7 = 3.0, 8 = 3.5, 9 = 4.0,
A = 4.5, B = 5.2, C = 5.5, D = 6.0, E = 7.0, F = 8.0
Reserved
6:3
0
1
11
class 0
class 1
7.3.7
class 11
READ_BL_LEN [83:80]
READ_BL_LEN
NOTE The support for 512B read access is mandatory for all Devices. And that the Devices has to be in 512B
block length mode by default after power-on, or software reset.
The purpose of this register is to indicate the supported maximum read data block length:
Table 84 Data block length
READ_BL_LEN
0
1
11
12
13
14
15
Block length
Remark
2 = 1 Byte
21= 2 Bytes
211= 2048 Bytes
212= 4096 Bytes
213= 8192 Bytes
214= 16 kBytes
215= Extension
0
1
C_SIZE_MULT+2
(C_SIZE_MULT < 8)
The values in these fields are valid when the Device is not in high speed modes. When the Device is in
one of the high speed modes, the current consumption is chosen by the host, from the power classes
defined in the PWR_ff_vvv registers, in the EXT_CSD register.
The values in these fields are valid when the Device is not in high speed mode. When the Device is in
high speed mode, the current consumption is chosen by the host, from the power classes defined in the
PWR_ff_vvv registers, in the EXT_CSD register.
MULT
Remarks
2 =4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
0
1
2
3
4
5
6
7
1
2 (write half as fast as read)
4
8
16
32
64
128
FILE_FORMAT
Remarks
0
0
0
1
0
0
1
2
3
0, 1, 2, 3
type
0
1
23
None (default)
BCH (542, 512)
Reserved
none
3
10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The Extended CSD register defines the Device properties and selected modes. It is 512 bytes long. The
most significant 320 bytes are the Properties segment, that defines the Device capabilities and cannot be
modified by the host. The lower 192 bytes are the Modes segment, that defines the configuration the
Device is working in. These modes can be changed by the host by means of the SWITCH command.
Multi bytes field is interpreted in little endian byte order.
R:
Read only.
W:
R/W:
W/E:
Multiple writable with value kept after power failure, H/W reset assertion and any
CMD0 reset and not readable.
R/W/E:
Multiple writable with value kept after power failure, H/W reset assertion and any
CMD0 reset and readable.
R/W/C_P: Writable after value cleared by power failure and HW/rest assertion (the value not
cleared by CMD0 reset) and readable.
R/W/E_P:
Multiple writable with value reset after power failure, H/W reset assertion and any
CMD0 reset and readable.
W/E_P:
Multiple writable with value reset after power failure, H/W reset assertion and any
CMD0 reset and not readable.
Table 93 Extended CSD
Name
Properties Segment
Reserved1
Extended Security Commands Error
Supported Command Sets
HPI features
Background operations support
Max packed read commands
Max packed write commands
Data Tag Support
Tag Unit Size
Tag Resources Size
Context management capabilities
Large Unit size
Extended partitions attribute support
Supported modes
FFU features
Operation codes timeout
FFU Argument
Barrier support
Reserved1
CMD Queuing Support
CMD Queuing Depth
Field
EXT_SECURITY_ERR
S_CMD_SET
HPI_FEATURES
BKOPS_SUPPORT
MAX_PACKED_READS
MAX_PACKED_WRITES
DATA_TAG_SUPPORT
TAG_UNIT_SIZE
TAG_RES_SIZE
CONTEXT_CAPABILITIES
LARGE_UNIT_SIZE_M1
EXT_SUPPORT
SUPPORTED_MODES
FFU_FEATURES
OPERATION_CODE_TIMEOUT
FFU_ARG
BARRIER_SUPPORT
CMDQ_SUPPORT
CMDQ_DEPTH
Size
(Bytes)
6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
4
1
177
1
1
Cell
Type
TBD
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
TBD
R
R
CSD-slice
[511:506]
[505]
[504]
[503]
[502]
[501]
[500]
[499]
[498]
[497]
[496]
[495]
[494]
[493]
[492]
[491]
[490:487]
[486]
[485:309]
[308]
[307]
Size
(Bytes)
1
4
Cell
Type
TBD
R
[306]
[305:302]
32
[301:270]
[269]
[268]
1
1
1
1
2
8
R
R
R
R
R
R
[267]
[266]
[265]
[264]
[263:262]
[261:254]
PWR_CL_DDR_200_360
[253]
CACHE_SIZE
GENERIC_CMD6_TIME
POWER_OFF_LONG_TIME
BKOPS_STATUS
CORRECTLY_PRG_SECTORS_
NUM
INI_TIMEOUT_AP
CACHE_FLUSH_POLICY
PWR_CL_DDR_52_360
4
1
1
1
4
R
R
R
R
R
[252:249]
[248]
[247]
[246]
[245:242]
1
1
1
R
R
R
[241]
[240]
[239]
PWR_CL_DDR_52_195
[238]
PWR_CL_200_195
[237]
PWR_CL_200_130
[236]
MIN_PERF_DDR_W_8_52
[235]
MIN_PERF_DDR_R_8_52
[234]
1
1
1
1
1
1
1
1
1
1
1
1
1
TBD
R
R
R
R
R
TBD
R
R
R
R
R
R
[233]
[232]
[231]
[230]
[229]
[228]
[227]
[226]
[225]
[224]
[223]
[222]
[221]
Field
Reserved
Number of FW sectors correctly
programmed
Vendor proprietary health report
Device life time estimation type B
Device life time estimation type A
Pre EOL information
Optimal read size
Optimal write size
Optimal trim unit size
Device version
Firmware version
Power class for 200MHz, DDR at
VCC= 3.6V
Cache size
Generic CMD6 timeout
Power off notification(long) timeout
Background operations status
Number of correctly programmed
sectors
1st initialization time after partitioning
Cache Flushing Policy
Power class for 52MHz, DDR at VCC =
3.6V
Power class for 52MHz, DDR at VCC =
1.95V
Power class for 200MHz at VCCQ
=1.95V, VCC = 3.6V
Power class for 200MHz, at VCCQ
=1.3V, VCC = 3.6V
Minimum Write Performance for 8bit at
52MHz in DDR mode
Minimum Read Performance for 8bit at
52MHz in DDR mode
Reserved1
TRIM Multiplier
Secure Feature support
Secure Erase Multiplier
Secure TRIM Multiplier
Boot information
Reserved1
Boot partition size
Access size
High-capacity erase unit size
High-capacity erase timeout
Reliable write sector count
High-capacity write protect group size
NUMBER_OF_FW_SECTORS_C
ORRECTLY_PROGRAMMED
VENDOR_PROPRIETARY_HEA
LTH_REPORT
DEVICE_LIFE_TIME_EST_TYP
_B
DEVICE_LIFE_TIME_EST_TYP
_A
PRE_EOL_INFO
OPTIMAL_READ_SIZE
OPTIMAL_WRITE_SIZE
OPTIMAL_TRIM_UNIT_SIZE
DEVICE_VERSION
FIRMWARE_VERSION
TRIM_MULT
SEC_FEATURE_SUPPORT
SEC_ERASE_MULT
SEC_TRIM_MULT
BOOT_INFO
BOOT_SIZE_MULT
ACC_SIZE
HC_ERASE_GRP_SIZE
ERASE_TIMEOUT_MULT
REL_WR_SEC_C
HC_WP_GRP_SIZE
CSD-slice
Cell
Type
R
R
R
[220]
[219]
[218]
1
1
R
R
[217]
[216]
4
1
1
R
R
R
[215:212]
[211]
[210]
MIN_PERF_R_8_52
[209]
MIN_PERF_W_8_26_4_52
[208]
MIN_PERF_R_8_26_4_52
[207]
MIN_PERF_W_4_26
[206]
MIN_PERF_R_4_26
[205]
PWR_CL_26_360
PWR_CL_52_360
PWR_CL_26_195
PWR_CL_52_195
PARTITION_SWITCH_TIME
1
1
1
1
1
1
TBD
R
R
R
R
R
[204]
[203]
[202]
[201]
[200]
[199]
EXT_CSD_REV
1
1
1
1
1
1
1
R
R
R
TBD
R
TBD
R
[198]
[197]
[196]
[195]
[194]
[193]
[192]
CMD_SET
R/W/E
_P
TBD
R
TBD
R/W/E
_P
TBD
R/W/E
_P
R
W/E_P
TBD
R
[191]
Name
Sleep current (VCC)
Sleep current (VCCQ)
Production state awareness timeout
Sleep/awake timeout
Sleep Notification Timout1
Sector Count
Secure Write Protect Information
Minimum Write Performance for 8bit
at52 MHz
Minimum Read Performance for 8bit at
52 MHz
Minimum Write Performance for 8bit at
26 MHz, for 4bit at 52MHz
Minimum Read Performance for 8bit at
26 MHz, for 4bit at 52MHz
Minimum Write Performance for 4bit at
26 MHz
Minimum Read Performance for 4bit at
26 MHz
Reserved1
Power class for 26 MHz at 3.6 V 1 R
Power class for 52 MHz at 3.6 V 1 R
Power class for 26 MHz at 1.95 V 1 R
Power class for 52 MHz at 1.95 V 1 R
Partition switching timing
Out-of-interrupt busy timing
I/O Driver Strength
Device type
Reserved1
CSD STRUCTURE
Reserved1
Extended CSD revision
Modes Segment
Command set
Reserved1
Command set revision
Reserved1
Power class
Reserved1
High-speed interface timing
Strobe Support
Bus width mode
Reserved1
Erased memory content
Field
S_C_VCC
S_C_VCCQ
PRODUCTION_STATE_AWAR
ENESS_TIMEOUT
S_A_TIMEOUT
SLEEP_NOTIFICATION_TI
ME
SEC_COUNT
SECURE_WP_INFO
MIN_PERF_W_8_52
OUT_OF_INTERRUPT_TIME
DRIVER_STRENGTH
DEVICE_TYPE
CSD_STRUCTURE
POWER_CLASS
1
1
1
1
HS_TIMING
1
1
CMD_SET_REV
STROBE_SUPPORT
BUS_WIDTH
ERASED_MEM_CONT
1
1
1
1
CSD-slice
[190]
[189]
[188]
[187]
[186]
[185]
[184]
[183]
[182]
[181]
Reserved
Partition configuration
PARTITION_CONFIG
Size
(Bytes)
1
1
BOOT_CONFIG_PROT
BOOT_BUS_CONDITIONS
ERASE_GROUP_DEF
1
1
1
BOOT_WP_STATUS
BOOT_WP
1
1
Reserved1
User area write protection register
USER_WP
1
1
FW_CONFIG
RPMB_SIZE_MULT
WR_REL_SET
WR_REL_PARAM
SANITIZE_START
BKOPS_START
BKOPS_EN
1
1
1
1
1
1
1
1
RST_n_FUNCTION
HPI_MGMT
1
1
PARTITIONING_SUPPORT
MAX_ENH_SIZE_MULT
PARTITIONS_ATTRIBUTE
PARTITION_SETTING_
COMPLETED
GP_SIZE_MULT
ENH_SIZE_MULT
ENH_START_ADDR
1
3
1
1
Cell
Type
TBD
R/W/E
&
R/W/E
_P
R/W &
R/W/C
_P
R/W/E
TBD
R/W/E
_P
R
R/W &
R/W/C
_P
TBD
R/W,
R/W/C
_P &
R/W/E
_P
TBD
R/W
R
R/W
R
W/E_P
W/E_P
R/W &
R/W/E
R/W
R/W/E
_P
R
R
R/W
R/W
12
3
4
1
1
1
R/W
R/W
R/W
TBD
R/W
R/W/E
[154:143]
[142:140]
[139:136]
[135]
[134]
[133]
1
1
1
W/E_P
R/W/E
R
[132]
[131]
[130]
Name
Field
Reserved1
FW configuration
RPMB Size
Write reliability setting register
Write reliability parameter register
Start Sanitize operation
Manually start background operations
Enable background operations
handshake
H/W reset function
HPI management
Partitioning Support
Max Enhanced Area Size
Partitions attribute
Partitioning Setting
General Purpose Partition Size
Enhanced User Data Area Size
Enhanced User Data Start Address
Reserved1
Bad Block Management mode
Production state awareness
Package Case Temperature is controlled
Periodic Wake-up
Program CID/CSD in DDR mode
support
SEC_BAD_BLK_MGMNT
PRODUCTION_STATE_AWAR
ENESS
TCASE_SUPPORT
PERIODIC_WAKEUP
PROGRAM_CID_CSD_DDR_SU
PPORT
CSD-slice
[180]
[179]
[178]
[177]
[176]
[175]
[174]
[173]
[172]
[171]
[170]
[169]
[168]
[167]
[166]
[165]
[164]
[163]
[162]
[161]
[160]
[159:157]
[156]
[155]
VENDOR_SPECIFIC_FIELD
Size
(Bytes)
2
64
NATIVE_SECTOR_SIZE
USE_NATIVE_SECTOR
DATA_SECTOR_SIZE
INI_TIMEOUT_EMU
1
1
1
1
CLASS_6_CTRL
DYNCAP_NEEDED
EXCEPTION_EVENTS_CTRL
2
2
Context configuration
EXCEPTION_EVENTS_STATUS
EXT_PARTITIONS_ATTRIBUT
E
CONTEXT_CONF
PACKED_COMMAND_STATUS
PACKED_FAILURE_INDEX
POWER_OFF_NOTIFICATION
1
1
1
CACHE_CTRL
FLUSH_CACHE
BARRIER_CTRL
MODE_CONFIG
1
1
1
MODE_OPERATION_CODES
1
2
1
4
MAX_PRE_LOADING_DATA_S
IZE
PRODUCT_STATE_AWARENE
SS_ENABLEMENT
SECURE_REMOVAL_TYPE
CMDQ_MODE_EN
Name
Field
Reserved
Vendor Specific Fields
FFU_STATUS
PRE_LOADING_DATA_SIZE
Reserved1
NOTE 1
NOTE 2
15
1
1
15
Cell
Type
TBD
<vend
or
specifi
c>
R
R/W
R
R
CSD-slice
[129:128]
[127:64]
[63]
[62]
[61]
[60]
R/W/E
_P
R
[59]
R/W/E
_P
R
R/W
[57:56]
R/W/E
_P
R
R
R/W/E
_P
R/W/E
_P
W/E_P
R/W
R/W/E
_P
W/E_P
TBD
R
R/W/E
_P
R
[51:37]
R/W/E
&R
R/W &
R
R/W/E
_P
TBD
[17]
[58]
[55:54]
[53:52]
[36]
[35]
[34]
[33]
[32]
[31]
[30]
[29]
[28:27]
[26]
[25:22]
[21:18]
[16]
[15]
[14:0]
7.4
Bit 7
Bit 6
Bit 5
Name
Bit 4
Bit 3
Reserved
Bit 2
Bit 1
ACCESS
_DENIED
(3)
Clear
Cond.
Bit 0
SEC_INVALID_COMMAND_
PARAMETERS
(2)
(1)
Command Set
75
4
3
2
1
0
Reserved
Allocated by MMCA
Allocated by MMCA
Allocated by MMCA
Allocated by MMCA
Standard MMC
Bit 6
Bit 5 Bit 4
Reserved
Bit 3
Bit 2
Bit 1
HPI_IMPLEMENTATION
Bit[7:2]: Reserved
Bit[1]: HPI_IMPLEMENTATION
0x0 : HPI mechanism implementation based on CMD13
0x1 : HPI mechanism implementation based on CMD12
Bit[0]: HPI_SUPPORT
0x0 : Obsolete
0x1 : HPI mechanism supported (default)
Bit 0
HPI_SUPPORT
7.4
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bit 0
SUPPORTED
Bit[7:1]: Reserved
Bit[0]: SUPPORTED
0x0 :
0x1 :
Obsolete
Background operations are supported. The fields BKOPS_STATUS, BKOPS_EN,
BKOPS_START and URGENT_BKOPS are supported. (default)
From 512 Bytes to 128 Kbytes in case of Sector Size = 512 Bytes
From 4Kbytes to 1 Mbytes in case of Sector Size = 4 Kbytes
7.4
Bit 6
Bit 5
Bit 4
LARGE_UNIT_MAX_MULTIPLIER_M1
Bit 3
Bit 2
Bit 1
MAX_CONTEXT_ID
Bit 0
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
Nonpersistent
System
code
Bit 1
Bit 0
Reserved
VSM
FFU
Bit 0
Reserved
SUPPORTED_MODE_OPERATION_CODES
SUPPORTED_MODE_OPERATION_CODES:
7.4
Not defined
100us x 21 = 200us
100us x 22 = 400us
..
23
100us x 2 = 838.86s
Reserved
Bit 6
Bit 5
Bit 4
Reserved
Bit encoding:
[7:1]: Reserved
[0]: Command queuing support:
o 0: Command queuing is not supported
o 1: Command queuing is supported
Bit 3
Bit 2
Bit 1
Bit 0
CMDQ
Support
7.4
Bit 6
Reserved
Bit 5
Bit 4
Bit 3
Bit 2
N
Bit 1
Bit 0
Bit encoding:
[7:5]: Reserved
[4:0]: N, a parameter used to calculate the Queue Depth of task queue in the device.
Queue Depth = N+1.
Description
0x00
Not defined
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
Others
Reserved
Description
0x00
Not defined
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
Others
Reserved
Pre-EOL Info.
Description
0x00
Not Defined
0x01
Normal
Normal
0x02
Warning
0x03
Urgent
0x04 ~ 0xFF
Reserved
0x00
Not defined
0x01
4KB x 1 = 4KB
0x02
4KB x 2 = 8KB
0xFF
0x00
Not defined
0x01
4KB x 1 = 4KB
0x02
4KB x 2 = 8KB
0xFF
0x00
Not defined
0x01
4KB x 1 = 4KB
0x02
4KB x 2 = 8KB
0x03
4KB x 4 = 16KB
0x15
Reserved
7.4.28 DEVICE_VERSION [263-262]
This field provides the device version.
0x00
Not defined
0x01
10ms x 1 = 10 ms
0x02
10ms x 2 = 20 ms
0xFF
10 ms x 255 = 2550 ms
0x00
Not defined
0x01
10ms x 1 = 10 ms
0x02
10ms x 2 = 20 ms
0xFF
10 ms x 255 = 2550 ms
7.4
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
OUTSTANDING
Bit[7:2]: Reserved
Bit[1:0]: OUTSTANDING
0x0 : No operations required
0x1 : Operations outstanding (non critical)
0x2 : Operations outstanding (performance being impacted)
0x3 : Operations outstanding (critical)
7.4.34 CORRECTLY_PRG_SECTORS_NUM [245:242]
This field indicates how many sectors were successfully programmed by the last
WRITE_MULTIPLE_BLOCK command (CMD25). The value is in terms of 512 Bytes or in multiple of
eight 512Bytes sectors (4KBytes) depending on the value of the DATA_SECTOR_SIZE field
Table 112 Correctly programmed sectors number
CORRECTLY_PRG_SECTORS_NUM
EXT_CSD[245]
EXT_CSD[244]
EXT_CSD[243]
EXT_CSD[242]
CORRECTLY_PRG_SECTORS_NUM_3
CORRECTLY_PRG_SECTORS_NUM_2
CORRECTLY_PRG_SECTORS_NUM_1
CORRECTLY_PRG_SECTORS_NUM_0
16
[CORRECTLY_PRG_SECTORS_NUM_3 * 2 + CORRECTLY_PRG_SECTORS_NUM_2 * 2 +
8
0
CORRECTLY_PRG_SECTORS_NUM_1 * 2 + CORRECTLY_PRG_SECTORS_NUM_0 * 2 ]
NOTE It is recommended for hosts to refer to this field for avoiding re-writing again the successfully programmed
sectors when repeating an interrupted write command.
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
FIFO
Bit 6
SEC_
SANITIZE
Bit 5
Reserved
Bit 4
SEC_GB_
CL_EN
Bit 3
Reserved
Bit 2
SEC_BD_BLK_EN
Bit 1
Reserved
Bit 0
SECURE_
ER_EN(1)
Bit 7: Reserved
Bit 6: SEC_SANITIZE
0x1: Device supports the sanitize operation.
0x0: Device does not support the sanitize operation.
Bit 5: Reserved
Bit 4: SEC_GB_CL_EN (R)
0x0:
0x1:
Device does not support the secure and insecure trim operations
Device supports the secure and insecure trim operations. This bit being set means that
argument bits 15 and 0 are supported with CMD38
Bit 3: Reserved
Bit 2: SEC_BD_BLK_EN (R)
0x0 : Device does not support the automatic erase operation on retired defective portions of the
array.
0x1 : Device supports the automatic erase operation on retired defective portions of the array.
This bit being set enables the host to set SEC_BAD_BLK_MGMNT (EXT_CSD[134]).
Bit 1: Reserved
Bit 0: SECURE_ER_EN (R)
0x0: Secure purge operations are not supported on the device
0x1: Secure purge operations are supported. This bit being set allows the host to set bit 31 of
the argument for the ERASE (CMD38) Command
Bit 6
Bit 5 Bit 4
Reserved
Bit 3
Bit 2
HS_BOOT_MODE
Bit 1
DDR_BOOT_MODE
Bit 0
ALT_BOOT_MODE
Bit[7:3]: Reserved
Bit[2]: HS_BOOT_MODE
0: Device does not support high speed timing during boot.
1: Device supports high speed timing during boot.
Bit[1]: DDR_BOOT_MODE
0: Device does not support dual data rate during boot.
1: Device supports dual data rate during boot.
Bit[0]: ALT_BOOT_MODE
0x0 : Device does not support alternative boot method (obsolete)
0x1 : Device supports alternative boot method. Device must show 1 since this is mandatory
in v4.4 standard
The only currently valid values for this register are 0x0, 0x1, 0x05, and 0x07. A device supporting dual
data rate mode during boot shall also have bit 2 set.
7.4.42 BOOT_SIZE_MULT [226]
The boot partition size is calculated from the register by using the following equation: Boot Partition
size = 128Kbytes BOOT_SIZE_MULT
Value
0x00
0x01
0x02
:
0xFE
0xFF
7.4
Bit 6
Bit 5
Bit 4
Bit 3
Reserved
Bit 2
Bit 1
SUPER_PAGE_SIZE
Bit[7:4]: Reserved
Bit[3:0]: SUPER_PAGE_SIZE
This register defines one or multiple of programmable boundary unit that is programmed at the same
time. This value can be used by the master for the following cases:
(SUPER_PAGE_SIZE - 1)
:0<X<9
Value
0x0
0x1
0x2
:
0x8
0x90xF
Not defined
512 1 = 512 bytes
512 2 = 1K bytes
:
512 128 = 64K bytes
Reserved
0x00
No support for high-capacity erase-unit size
0x01
512Kbyte 1 = 524,288 bytes
0x02
512Kbyte 2 = 1,048,576 bytes
:
:
0xFF
512Kbyte 255 = 133,693,440 bytes
If the ENABLE bit in ERASE_GROUP_DEF is cleared to LOW or HC_WP_GRP_SIZE is set to 0x00,
the write protect group size definition would be the original case.
7.4
Value
0x00
0x01
0x02
:
0xFF
Name
Reliable Write Sector Count
REL_WR_SEC_C
Cell Type
R
Value
0x00
0x01
0x02
0x03
:
0xFF
Value
0x00
0x01
0x02
:
0x0D
0x0E0xFF
Not defined
1A 21 = 2A
1A 22 = 4A
:
1A 213 = 8.192mA
Reserved
Not defined
100us x 21 = 200us
100us x 22 = 400us
..
23
100us x 2 = 838.86s
Reserved
Value
0x00
0x01
0x02
:
0x17
0x180xFF
Not defined
100ns 21 = 200ns
100ns 22 = 400ns
:
100ns 223 = 838.86ms
Reserved
0x00
0x01
0x02
:
0x17
0x180xFF
Not defined
10us 21 = 20us
10us 22 = 40us
:
10us 223 = 83.88s
Reserved
7.4.53 SECURE_WP_INFO[211]
The SECURE_WP_SUPPORT field indicates whether the device is supporting secure write protection
mode. The SECURE_WP_EN_STATUS is showing the value of SECURE_WP_EN defined in
Authenticated Device Configuration Area.
Table 131 SECURE_WP_INFO
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Reserved
Bit1
Bit0
SECURE_WP_EN_STATUS
SECURE_WP_SUPPORT
Bit[7:2] : Reserved
Bit[1] : SECURE_WP_EN_STATUS (R)
0x0: Legacy Write Protection mode.
0x1: Secure Write Protection mode.
Bit[0] : SECURE_WP_SUPPORT (R)
0x0: Secure Write Protection is NOT supported by this device
0x1: Secure Write Protection is supported by this device
Performance
0
1
Max RMS
Current
100 mA
120 mA
Max Peak
Current
200 mA
220 mA
150 mA
250 mA
180 mA
280 mA
200 mA
300 mA
220 mA
320 mA
250 mA
350 mA
300 mA
400 mA
350 mA
450 mA
400 mA
500 mA
10
450 mA
550 mA
11
12
13
14
15
0
1
500mA
600mA
700mA
800mA
>800mA
65 mA
70 mA
600mA
700mA
800mA
900mA
>900mA
130 mA
140 mA
80 mA
160 mA
90 mA
180 mA
100 mA
200 mA
120 mA
220 mA
140 mA
240 mA
160 mA
260 mA
180 mA
280 mA
200 mA
300 mA
10
250 mA
350 mA
11
300mA
400mA
12
350mA
450mA
13
400mA
500mA
14
500mA
600mA
15
>500mA
>600mA
Voltage
Value
3.6V
1.95V
Remarks
Default current consumption for high voltage Devices
These registers define the maximum power consumption for any protocol operation in data transfer mode,
Ready state and Identification state.
Device may specify in their datasheet the performance per Power Class and whether the package case
(Tc) temperature conditions shall be met as given in Annex A.10
7.4.56 PARTITION_SWITCH_TIME [199]
This field indicates the maximum timeout for the SWITCH command (CMD6) when switching partitions
by changing PARTITION_ACCESS bits in PARTITION_CONFIG field (EXT_CSD byte [179]). Time is
expressed in units of 10-milliseconds.
Table 134 Partition switch timeout definition
Value
Timeout value definition
0x00
0x01
0x02
0xFF
Not defined
10ms x 1 = 10ms
10ms x 2 = 20ms
Not defined
10ms x 1 = 10ms
10ms x 2 = 20ms
:
10ms x 255 = 2550ms
Bit 6
Reserved
Bit 5
Reserved
Bit 4
Type 4
Bit 3
Type 3
Bit 2
Type 2
Bit 1
Type 1
Bit 0
Type 0
Device Type
7
6
5
3
2
1
0
The - currently valid values for this field are including followings; 0x01, 0x03, 0x07, 0x0B, 0x0F, 0x13,
0x17, 0x1B,0x1F, 0x23, 0x27, 0x2B,0x2F, 0x33, 0x37, 0x3B,0x3F, 0x41, 0x43, 0x47, 0x4B, 0x4F, 0x51,
0x53, 0x57, 0x5B, 0x5F, 0x61, 0x63, 0x67, 0x6B, 0x6F, 0x71, 0x73, 0x77, 0x7B, 0x7F, 0x81, 0x83, 0x87,
0x8B, 0x8F,0x91, 0x93, 0x97, 0x9B, 0x9F, 0xA1, 0xA3, 0xA7, 0xAB, 0xAF, 0xB1, 0xB3, 0xB7, 0xBB,
0xBF, 0xC1, 0xC3, 0xC7, 0xCB, 0xCF, 0xD1, 0xD3, 0xD7, 0xDB, 0xDF, 0xE1, 0xE3, 0xE7, 0xEB, 0xEF,
0xF1, 0xF3, 0xF7, 0xFB, 0xFF . Ex) A dual voltage 1.2 V/1.8 V device that supports 52 MHz DDR mode
at 1.8 V and not at 1.2 V will be coded 0x7.
A dual voltage 1.2 V/1.8 V device that supports 52 MHz Double-Data-Rate mode at 1.8 V and
26 Mhz/52 MHz Single-Data-Rate mode at 1.2 V will be also coded 0x7. For all the device types that
cover several voltage ranges, the data sheet of the device shall specify the specific supported voltage
range for VCC and VCCQ.
Dual Data Rate mode support is optional
7.4.60 CSD_STRUCTURE [194]
This field is a continuation of the CSD_STRUCTURE field in the CSD register
CSD_STRUCTURE
0
1
2
3255
Allocated by MMCA
Allocated by MMCA
Version 4.14.24.3-4.41-4.5-4.51-5.0-5.01-5.1
2559
8
7
Reserved
Revision 1.8 (for MMC v5.1)
Revision 1.7 (for MMC v5.0, v5.01)
Revision 1.6 (for MMC v4.5, v4.51)
Revision 1.5 (for MMC v4.41)
Revision 1.4 (Obsolete)
Revision 1.3 (for MMC v4.3)
Revision 1.2 (for MMC v4.2)
Revision 1.1 (for MMC v4.1)
Revision 1.0 (for MMC v4.0)
6
5
4
3
2
1
0
MMC Revision
2551
0
Reserved
v4.0
This field, though in the Modes segment of the EXT_CSD, is read only.
7.4.64 POWER_CLASS [187]
This field contains the 4-bit value of the selected power class for the Device. The power classes are
defined in Table 141. The host should be responsible of properly writing this field with the maximum
power class it allows the Device to use. The Device uses this information to, internally, manage the power
budget and deliver an optimized performance.
Table 141 Power class codes
Bits
[7:4]
[3:0]
Description
Reserved
Device power class code (See Table 133)
Bit 6
Bit 5
Selected Driver Strength
Bit 4
Bit 3
Bit 2
Timing Interface
Bit 1
Bit 0
This field is used by the host to select both Timing Interface and Driver Strength. This byte is
composed from two fields, each represented by a nibble.
Timing Interface [0:3]: This field is 0 after power-on, H/W reset or software reset, thus selecting the
backwards compatibility interface timing for the device. If the host sets 1 to this field, the device
changes its timing to high speed interface timing (see 10.6.1). If the host sets value 2 the device
changes its timing to HS200 interface timing (see 10.8.1). If the host sets HS_TIMING[3:0] to 0x3,
the device changes its timing to HS400 interface timing (see 10.10)
Table 143 HS_TIMING Interface values
Value
Timing Interface
0x0
0x1
0x2
0x3
Remarks
Selected Driver Strength [4:7]: Using this field the host sets the required Driver Strength from device.
The default and mandatory value is (0x0). Refer to 10.5.4.1 for the Driver Types Definition.
7.4
Bit 6
Reserved
Bit 5
Reserved
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bus Mode Selection
Bit 0
Bit 7:
0x0: Strobe is provided only during Data Out and CRC response [Default]
0x1: Strobe is provided during Data Out, CRC response and CMD Response
The support of Enhanced Strobe mode is optional for devices. STROBE_SUPPORT[184] register of
EXT_CSD indicates whether a device supports that mode.
Bit[3-0]: define the Bus Mode Selection as defined in Table 145
Value
157
Reserved
6
8 bit data bus (dual data rate)
5
4 bit data bus (dual data rate)
43
Reserved
2
8 bit data bus
1
4 bit data bus
0
1 bit data bus
HS_TIMING must be set to 0x1 before setting BUS_WIDTH for dual data rate operation
(values 5 or 6)
Bit 6
BOOT_ACK
Bit 5
Bit 4
Bit 3
BOOT_PARTITION_ENABLE
Bit 2
Bit 1
Bit 0
PARTITION_ACCESS
R/W/E
R/W/E
R/W/E_P
Bit 7: Reserved
Bit 6: BOOT_ACK (R/W/E)
0x0 : No boot acknowledge sent (default)
0x1 : Boot acknowledge sent during boot operation Bit
Bit[5:3] : BOOT_PARTITION_ENABLE (R/W/E)
User selects boot data that will be sent to master
0x0 : Device not boot enabled (default)
0x1 : Boot partition 1 enabled for boot
0x2 : Boot partition 2 enabled for boot
0x30x6 : Reserved
0x7 : User area enabled for boot
Bit[2:0] : PARTITION_ACCESS (before BOOT_PARTITION_ACCESS, R/W/E_P)
User selects partitions to access
0x0 : No access to boot partition (default)
0x1 : R/W boot partition 1
0x2 : R/W boot partition 2
0x3 : R/W Replay Protected Memory Block (RPMB)
0x4 : Access to General Purpose partition 1
0x5 : Access to General Purpose partition 2
0x6 : Access to General Purpose partition 3
0x7 : Access to General Purpose partition 4
7.4.70 BOOT_CONFIG_PROT[178]
This register defines boot configuration protection
Table 148 Boot configuration protection
Bit 7
Bit 6
Reserved
Bit 5
Bit 4
PERM_BOOT_
CONFIG_PROT
R/W
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
PWR_BOOT_
CONFIG_PROT
R/W/C_P
0x1 :
Permanently disable the change of boot configuration register bits relating boot mode
operation (BOOT_PARTITION_ENABLE, BOOT_ACK,
RESET_BOOT_BUS_CONDITIONS, BOOT_MODE and BOOT_BUS_WIDTH).
Bit[3:1] : Reserved
Bit[0] : PWR_BOOT_CONFIG_PROT (R/W/C_P)
0x0 :
0x1 :
Disable the change of boot configuration register bits relating to boot mode operation
(BOOT_PARTITION_ENABLE, BOOT_ACK, RESET_BOOT_BUS_CONDITIONS,
BOOT_MODE and BOOT_BUS_WIDTH) from at this point until next power cycle or
next H/W reset operation (but not CMD0 Reset operation).
Bit 5
Bit 4
Bit 3
BOOT_MODE
Bit 2
RESET_BOOT_BUS_CONDI
TIONS
Bit 1
Bit 0
BOOT_BUS_WIDTH
Bit[7:5] : Reserved
Bit [4:3] : BOOT_MODE (nonvolatile)
0x0 : Use single data rate + backward compatible timings in boot operation (default)
0x1 : Use single data rate + High Speed timings in boot operation mode
0x2 : Use dual data rate in boot operation
0x3 : Reserved
NOTE
Reset bus width to x1, single data rate and backward compatible timings after boot operation
(default)
Retain BOOT_BUS_WIDTH and BOOT_MODE values after boot operation. This is relevant to
Push-pull mode operation only.
Event
BUS_WIDTH, HS_TIMING
BOOT_BUS_WIDTH,
BOOT_MODE
x1, SDR (backward compatibility)
1
1
1
0
BOOT_BUS_WIDTH,
BOOT_MODE
x1, SDR (backward compatibility)
x1, SDR (backward compatibility)
7.4
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bit 0
ENABLE
Bit[7:1]: Reserved
Bit0: ENABLE
0x0 :
Use old erase group size and write protect group size definition (default)
0x1 :
Use high-capacity erase unit size, high capacity erase timeout, and high-capacity write protect
group size definition.
Bit [3:2]
B_AREA_2_WP
R
Bit[7:3]: Reserved
Bit[3:2]: B_AREA_2_WP (R)
0x00: Boot Area 2 is not protected
0x01: Boot Area 2 is Power on protected
0x10: Boot Area 2 is Permanently Protected
0x11: Reserved
Bit[1:0]: B_AREA_1_WP (R)
0x00: Boot Area 1 is not protected
0x01: Boot Area 1 is Power on protected
0x10: Boot Area 1 is Permanently Protected
0x11: Reserved
Bit [1:0]
B_AREA_1_WP
R
Bit 6
B_PWR_WP_
DIS
R/W/C_P
R/W/C_P
Bit 5
Reserved
Bit 4
B_PERM_WP_
DIS
R/W
Bit 3
B_PER
M_WP_
SEC_SE
L
R/W/C_
P
Bit 2
B_PERM_WP_E
N
Bit 1
B_PWR_
WP_SEC
_SEL
Bit 0
B_PWR_WP_
EN
R/W
R/W/C_
P
R/W/C_P
0x1:
NOTE Once a device has been set to enable protection on the boot partitions separately this cannot be reverted for
a power cycle. This bit enables a mix of Permanent protect, power on protected boot partitions.
0x1:
Permanently disable the use of B_PERM_WP_EN(bit 2). This bit must be zero if
B_PERM_WP_EN is set. This bit has no impact on the setting of CSD[13].
Bit[3]: B_PERM_WP_SEC_SEL(R/W/C_P)
0x0:
0x1:
0x1:
Boot region is permanently write protected. This bit must be zero if B_PERM_WP_DIS
is set. When read, this bit only indicates if permanent protection has been set specifically
for a boot region. How permanent protection has been applied depends on the setting of
bits 7 and 3. To verify boot region protection read BOOT_WP_STATUS[174]. This bit
may be zero if the whole device is permanently protected using CSD[13].
0x1:
Enable Power-On Period write protection to the boot area. This bit must be zero if
B_PWR_WP_DIS (bit 6) is set. When read, this bit only indicates if power on protection
has been set specifically for a boot region. How power on protection has been applied
depends on the setting of bits 7 and 1. To verify boot region protection read
BOOT_WP_STATUS[174].
An attempt to set both the disable and enable bit for a given protection mode (permanent or power-on) in
a single switch command will have no impact. If both permanent and power on protection are applied to
the same partition(s), permanent protection will take precedence and the partition(s) will be permanently
protected.
If the host enables Power-On write protection to a boot partition after enabling Permanent write
protection to the other boot area, the host shall set Bit 3 as same value as set for Permanent write
protection to the other boot partition (see A.11 for details).
Bit 6
CD_PERM
_ WP_DIS
R/W
Bit 5
Reserved
Bit 4
US_PERM_
WP_DIS
R/W
Bit 3
US_PWR_WP_DIS
R/W/C_P
Bit 2
US_PERM
_ WP_EN
R/W/E_P
Bit 1
Reserved
Bit 0
US_PWR_
WP_EN
R/W/E_P
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
Update_Disable
Bit[7:1]: Reserved
Bit[0]: Update_Disable
0x0: FW updates enabled.
0x1: FW update disabled permanently
NOTE 1 RPMB data frame format definition supports a maximum of 16 MB. This limits the size
of the RPMB area.
Field
Bit
Type
WR_DATA_REL_USR
WR_DATA_REL_1
WR_DATA_REL_2
WR_DATA_REL_3
WR_DATA_REL_4
Reserved
7:5
In general purpose partition 4, the write operation has been optimized for performance and
existing data in the partition could be at risk if a power failure occurs.
In general purpose partition 4, the device protects previously written data if power failure
occurs.
Bit[3]: WR_DATA_REL_3
0x0:
0x1:
In general purpose partition 3, the write operation has been optimized for performance and
existing data in the partition could be at risk if a power failure occurs.
In general purpose partition 3, the device protects previously written data if power failure
occurs.
Bit[2]: WR_DATA_REL_2
0x0:
0x1:
In general purpose partition 2, the write operation has been optimized for performance and
existing data in the partition could be at risk if a power failure occurs.
In general purpose partition 2, the device protects previously written data if power failure
occurs.
Bit[1]: WR_DATA_REL_1
0x0:
In general purpose partition 1, the write operation has been optimized for performance and
existing data in the partition could be at risk if a power failure occurs.
0x1:
In general purpose partition 1, the device protects previously written data if power failure
occurs.
Bit[0]: WR_DATA_REL_USR
0x0:
0x1:
In the main user area, write operations have been optimized for performance and existing
data could be at risk if a power failure occurs.
In the main user area, the device protects previously written data if power failure occurs.
Name
HS_CTRL_REL
EN_REL_WR
EN_RPMB_REL_WR
Bit
Type
0
1
2
3
4
7:5
R
R
R
Bit[7:5]: Reserved
Bit[4]: EN_RPMB_REL_WR (R)
0x0: RPMB transfer size is either 256B (single 512B frame) or 512B (two 512B frame).
0x1: RPMB transfer size is either 256B (single 512B frame), 512B (two 512B frame), or 8KB
(Thirty two 512B frames).
Bit[3]: Reserved
Bit[2]: EN_REL_WR (R)
0x0: obsolete
0x1: The device supports the enhanced definition of reliable write
Bit[1]: Reserved
Bit[0]: HS_CTRL_REL (R)
0x0: obsolete
0x1: All the WR_DATA_REL parameters in the WR_REL_SET registers are R/W.
7.4.80 SANITIZE_START[165]
Writing any value to this field shall manually start a sanitize operation. Device shall stay busy until
sanitize is complete.
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
AUTO_EN
MANUAL
_EN
Bit[7:2]: Reserved
Bit[1]: AUTO_EN (R/W/E) default value is vendor specific.
0b: Device shall not perform background operations while not servicing the host.
1b: Device may perform background operations while not servicing the host.
Bit[0]: MANUAL_EN (R/W)
0x0:
Host does not support background operations handling and is not expected to write to
BKOPS_START field.
0x1:
Host is indicating that it shall periodically write to BKOPS_START field to manually start
background operations.
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
RST_n_ENABLE
Bit[7:2]: Reserved
Bit[1:0]: RST_n_ENABLE (Readable and Writable once)
0x0: RST_n signal is temporarily disabled (default)
0x1: RST_n signal is permanently enabled
0x2: RST_n signal is permanently disabled
0x3: Reserved
By default, RST_n_ENABLE is set to 0x0, meaning RST_n is temporarily disabled. Host can change the
value to either 0x1 (permanently enabled) or 0x2 (permanently disabled). Once host sets the value to
either one, the value cannot be changed again.
Once host sets RST_n_ENABLE bits to 0x2 (permanently disabled), the Device will not accept the input
of RST_n signal permanently. During the disable period, the Device has to take care that any state of
RST_n (high, low and floating) will not cause any issue (i.e., mal function and high leakage current in the
input buffer) in the device.
When RST_n_ENABLE is set to 0x1 (permanently enabled), the Device accepts the input of RST_n
permanently. Host cannot change the bits back to the disabled values. Also, when host set
RST_n_ENABLE to 0x1, the Device must not start resetting internal circuits by triggering the register bit
change. Internal reset sequence must be triggered by RST_n rising edge but not by the register change.
Since Device does not have any internal pull up or pull down resistor on RST_n terminal, host has to pull
up or down RST_n to prevent the input circuits from flowing unnecessary leakage current when RST_n is
enabled.
7.4.84 HPI_MGMT [161]
This field allows the host to activate the HPI mechanism.
Table 161 HPI management
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Reserved
Bit[7:1]: Reserved
Bit[0]: HPI_EN
0x0 : HPI mechanism not activated by the host (default)
0x1 : HPI mechanism activated by the host
Bit 2
Bit 1
Bit 0
HPI_EN
Bit 6
Bit 5
Bit 4
Bit 3
Reserved
Bit 2
EXT_ATTRIBUTE
_EN
Bit 1
Bit 0
ENH_ATTRIBUTE_EN
PARTITIONING_EN
Bit[7:3]: Reserved
Bit[2]: EXT_ATTRIBUTE_EN
0x0: n/a.
0x1: Device can have extended partitions attribute
Bit[1]: ENH_ATTRIBUTE_EN
0x0: obsolete
0x1: Device can have enhanced technological features in partitions and user data area
Bit[0]: PARTITIONING_EN
0x0: obsolete.
0x1: Device supports partitioning features
7.4.86 MAX_ENH_SIZE_MULT [159:157]
This register defines maximum amount of memory area that can have the enhanced attribute. The Write
Protect Group size refers to the high capacity definition.
Table 163 Max. Enhanced Area Size
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
MAX_ENH_SIZE_MULT_2
MAX_ENH_SIZE_MULT_1
MAX_ENH_SIZE_MULT_0
Bit 6
Bit 5
Reserved
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
ENH_4
ENH_3
ENH_2
ENH_1
ENH_USR
Bit[7:5]: Reserved
Bit[4]: ENH_4
0x0: Default
0x1: Set Enhanced attribute in General Purpose partition 4
Bit[3]: ENH_3
0x0: Default
0x1: Set Enhanced attribute in General Purpose partition 3
Bit[2]: ENH_2
0x0: Default
0x1: Set Enhanced attribute in General Purpose partition 2
Bit[1]: ENH_1
0x0: Default
0x1: Set Enhanced attribute in General Purpose partition 1
Bit[0]: ENH_USR
0x0: Default
0x1: Set Enhanced attribute in User Data Area
7.4.88 PARTITION_SETTING_COMPLETED [155]
Default value states that any partitions configuration procedure has been issued by the host. The bit is set
to notify the device that the definition of parameters has been completed and the device can start its
internal configuration activity. If a sudden power loss occurs and this bit has not been set yet, the
configuration of partitions shall be invalidated and must be repeated.
Table 165 Partition Setting
Bit 7
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bit 0
PARTITION_SETTING_COMPLETED
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
GP_SIZE_MULT_X_2
GP_SIZE_MULT_X_1
GP_SIZE_MULT_X_0
GP_SIZE_MULT_X_Y
Where X refers to the General Purpose Partition (from 1 to 4) and Y refers to the factors in the formula
(from 0 to 2), so;
General_Purpose_Partition_X Size =
16
GP_SIZE_MULT_1_0 = EXT_CSD[143]
GP_SIZE_MULT_1_1 = EXT_CSD[144]
GP_SIZE_MULT_1_2 = EXT_CSD[145]
GPP2:
GP_SIZE_MULT_2_0 = EXT_CSD[146]
GP_SIZE_MULT_2_1 = EXT_CSD[147]
GP_SIZE_MULT_2_2 = EXT_CSD[148]
GPP3:
GP_SIZE_MULT_3_0 = EXT_CSD[149]
GP_SIZE_MULT_3_1 = EXT_CSD[150]
GP_SIZE_MULT_3_2 = EXT_CSD[151]
GPP4:
GP_SIZE_MULT_4_0 = EXT_CSD[152]
GP_SIZE_MULT_4_1 = EXT_CSD[153]
GP_SIZE_MULT_4_2 = EXT_CSD[154]
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
ENH_SIZE_MULT_2
ENH_SIZE_MULT_1
ENH_SIZE_MULT_0
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
ENH_START_ADDR_3
ENH_START_ADDR_2
ENH_START_ADDR_1
ENH_START_ADDR_0
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bit 0
SEC_BAD_BLK
Bit[7:1]: Reserved
Bit[0]: SEC_BAD_BLK (R/W)
0x0: (Default) Feature disabled
0x1: All data must be erased from defective memory array regions before they are retired from
use. SEC_BD_BLK_EN (EXT_CSD[231] bit 2) must be set in order to use this bit.
NORMAL (Field) This value represents a state in which the device is the field and the device uses
regular operations.
PRE_SOLDERING_ WRITES This value represents a state in which the device is in production
prior soldering and before the host loaded content to the device. The host sets the device to this state
for loading the content to the device.
PRE_SOLDERING_POST_WRITES - This value represents a state in which the device is in
production and the host completed to load the content to the device. The host sets the device to this
state after content was loaded and just before soldering. Once transferred to this state the host should
not write content to the device.
AUTO_PRE_SOLDERING This value should be set by the host if auto pre-soldering data is desired.
If the data is transferred as much as PRE_LOADING_DATA_SIZE, then the device state is changed
back to normal state by changing the value of PRODUCTION_STATA_AWARENESS to
0x0(Normal) automatically. i.e., no separate command to change to normal state is needed.
Table 170 PRODUCTION_STATE_AWARENESS states
Value
Value definition
0x00
0x01
0x02
0x03
0x04 0x0F
0x10 0x1F
0x20 0xFF
NORMAL(Field)
PRE_SOLDERING_WRITES
PRE_SOLDERING_POST_WRITES
AUTO_PRE_SOLDERING
Reserved
Reserved for Vendor Proprietary Usage
Reserved
TCASE_SUPPORT = 0x01: Table A.227 in Annex A.10 is supported. Heat relief through Case only
is assumed.
TCASE_SUPPORT = 0x10: Table A.227 in Annex A.10 is supported. Heat relief through Case and
PCB/Balls is assumed.
If TCASE_SUPPORT bit is =0x00 the above mentioned device may limit the maximum available
performance. Host should set the TCASE_SUPPORT value as 0x01 or 0x10 as soon as possible for the
device to run its maximum available performance.
Bit 6
Bit 5
WAKEUP_UNIT
Bit 4
Bit 3
Bit 2
Bit 1
WAKEUP_PERIOD
Bit 0
Where the period between wakeups is WAKEUP_PERIOD in units of WAKEUP_UNIT. For example, a
value of 01000110b means: WAKEUP_UNIT=010b=weeks, WAKEUP_PERIOD=00110b=6 => 6
weeks.
If WAKEUP_UNIT is 0, WAKEUP_PERIOD is ignored and the period between wake ups is infinity (no
wake ups).
7.4.96 PROGRAM_CID_CSD_DDR_SUPPORT [130]
This field indicates if the CMD26 and CMD27 are supported in dual data rate mode by the device.
Table 172 CMD26 and CMD27 in DDR mode Support
Bit 7
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bit 0
PROGRAM_CID_CSD_DDR_
SUPPORT
Bit[7:1]: Reserved
Bit[0]: PROGRAM_CID_CSD_DDR_SUPPORT (R)
0x0: (Default) CMD26 and CMD27 must be used in single data rate mode.
0x1: CMD26 and CMD27 are considered legal in both single data rate and dual data rate mode.
7.4.102 CLASS_6_CTRL[59]
This field controls the usage of class 6 command set (CMD28, CMD29, CMD30 and CMD31). By setting
this field to 0x00, class 6 command set is used for WP. By setting this field to 0x1, class 6 command set is
used to manipulate the dynamic capacity functionality. Setting any other value (0x02-0xFF) is forbidden.
Value
0x00
0x01
0x02-0xFF
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reserved
Reserved
Reserved
EXTENDED
_SECURITY
_EN
PACKED_E
VENT_EN
SYSPOOL
_EVENT_
EN
DYNCAP_
EVENT_E
N
Reserved
Bit 9
Bit 8
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
Reserved
NOTE For backward compatibility reasons, if BKOPS_SUPPORT bit [0] is set, then the urgent background
operations event (URGENT_BKOPS) is always enabled and cannot be disabled. All other enable bits start disabled
after power up until set by host.
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reserved
Reserved
Reserved
EXTENDED
_SECURITY
_FAILURE
PACKED_
FAILURE
SYSPOOL
_EXHAUS
TED
DYNCAP_
NEEDED
URGENT_
BKOPS
Bit 9
Bit 8
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
Reserved
URGENT_BKOPS Urgent background operations needed: if set, the device needs to perform
background operations urgently. Host can check EXT_CSD field BKOPS_STATUS for the detailed
level.
DYNCAP_NEEDED Dynamic capacity needed: If set, device needs some capacity to be released.
SYSPOOL_EXHAUSTED System resources pool exhausted: If set, system resources pool has no
more available resources and some data needs to be untagged before other data can be tagged
PACKED_FAILURE Packed command failure: If set, the last packed command has failed. Host
may check EXT_CSD field PACKED_COMMAND_STATUS for the detailed cause.
EXTENDED_SECURITY_FAILURE An error caused while using the PROTOCOL_WR
(CMD54) or PROTOCOL_RD (CMD53) commands or in relation to the Extended Protocols usage. If
set the host may check the EXT_CSD field EXT_SECURITY_ERR [505] for the detailed cause.
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
EXT_2
Bit 1
Bit 0
EXT_1
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
EXT_4
Bit 9
Bit 8
EXT_3
Each four-bits nibble describes the extended attribute of a specific general purpose partition. The specific
meaning of each type follows:
0x0: Default (no extended attribute)
0x1: System code
0x2: Non-persistent
0x3-0xF: Reserved
Bit[15:12]: Extended partition attribute for general purpose partition 4
Bit[11:8]:Extended partition attribute for general purpose partition 3
Bit[7:4]:Extended partition attribute for general purpose partition 2
Bit[3:0]: Extended partition attribute for general purpose partition 1
Bit 6
Bit 5
Reliability Mode
Bit 4
Bit 3
Bit 2
Large Unit
Context
Bit 1
Bit 0
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Indexed
Error
Error
In case any error occurs during a packed command, the Error bit (bit 0) shall be set.
If the error is a result of one of the individual commands inside the packed command, its index is reported
in PACKED_FAILURE_INDEX [35] and Indexed Error bit (bit 1) is set as well.
Name
Description
0x00
NO_POWER_NOTIFICATION
0x01
POWERED_ON
0x02
POWER_OFF_SHORT
0x03
POWER_OFF_LONG
0x04
SLEEP_NOTIFICATION
Bit 6
Bit 5
Bit 4
Bit 3
Reserved
Bit 2
Bit 1
Bit 0
CACHE_EN
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
BARRIER
Bit 0
FLUSH
Bit 6
Bit 5
Bit 4
Bit 3
Reserved
Bit 2
Bit 1
Bit 0
BARRIER_EN
Name
Description
0x00
Normal Mode
0x01
FFU Mode
0x10
Others
Reserved
Name
0x00
Reserved
0x01
FFU_INSTALL
0x02
FFU_ABORT
Others
Reserved
Description
0x00
Success
0x01 0xF
Reserved
0x10
General error
0x11
0x12
Others
Reserved
NOTE Host should set the value of PRE_LOADING_DATA_SIZE not to exceed the value of MAX_
PRE_LOADING_DATA_SIZE. In case the value of the PRE_LOADING_DATA_SIZE exceeds the value of the
MAX PRE_LOADING_DATA_SIZE, device shall generate switch error and the value will not be set.
If Sector size is 512 bytes Max Pre_Loading_Data_Size= (2^32 -1) * 512B = 2TB
If Sector size is 4K bytes Max Pre_Loading_Data_Size= (2^32 -1) * 4KB = 16TB
NOTE For RPMB partition each data frame which contains 256 bytes of data is counted in
PRE_LOADING_DATA_SIZE as one sector.
Capabilities [0:3] used to indicate the capabilities of product state awareness. Host should refer this
value to decide which mode can be used by the host vendor. This sub-field is read only. In case the
host enables a mode which is not supported by the device a switch error shall be returned by the
device.
o Bit 0 1 indicates that Manual mode is supported by the device
o Bit 1 - 1 indicates that Auto mode is supported by the device
Enablement [4:7] Host will enable the product state awareness feature by setting this register
o Bit 4
0 - Production State Awareness is disabled.
1 - Production State Awareness is enabled.
o Bit 5
0 Manual mode is enabled.
1 Auto mode is enabled.
NOTE
Bit 7
Function
Clear
Condition
NOTE 1
Bit 6
Bit 5
Reserved
Mode
(1)
Bit 4
Production
State
Awareness
enable (2)
Bit 3
Bit 2
Reserved
Bit 1
Bit 0
Auto mode
Supported
Manual
mode
Supported
Never
PRODUCTION_STATE_AWARENESS to Normal)
NOTE 2
Capabilities (R)
Bit 6
Reserved
Bit 5
Bit 4
Configure Secure
Removal Type
R/W
Bit 3
Bit 2
Bit 1
Bit 0
Bit 6
Bit 5
Bit 4
Reserved
Bit 3
Bit 2
Bit 1
Bit 0
CMDQ
Mode En
Bit encoding:
[7:1]: Reserved
[0]: Command queuing enable:
o 0: Command queuing is disabled. Host should clear the queue empty using CMD48 prior
disabling the queue.
o 1: Command queuing is enabled
To maintain backward compatibility with hosts, which do not support command queuing, when the
command queuing is disabled other functionality of the device is as if the device does not support
command queuing.
RCA register
The writable 16-bit relative Device address (RCA) register carries the Device address assigned by the
host during the Device identification. This address is used for the addressed host-Device communication
after the Device identification procedure. The default value of the RCA register is 0x0001. The value
0x0000 is reserved to set all Devices into the Stand-by State with CMD7.
7.6
DSR register
The 16-bit driver stage register (DSR) is described in detail in 10.2. It can be optionally used to improve
the bus performance for extended operating conditions (depending on parameters like bus length, transfer
rate or number of Devices). The CSD register carries the information about the DSR register usage. The
default value of the DSR register is 0x404.
7.7
QSR
The 32-bit Queue Status Register (QSR) carries the state of tasks in the queue at a specific point in time.
The host may read this register through device response to SEND_QUEUE_STATUS command (CMD13
with bit [15]=1), R1s argument will be the 32-bit Queue Status Register (QSR). Each bit in the QSR
represents the task whos ID corresponds to the bit index. If bit QSR[i] = 0, then the queued task with a
Task ID i is not ready for execution. It is the hosts responsibility to track the state of tasks so it can
determine if the task is queued and pending, or the Task ID is unused. If bit QSR[i] = 1, then the
queued task with Task ID i is ready for execution.
7.8
Bit6
Bit5
Bit4
Reserved
Bit3
Bit2
Bit1
Bit0
SECURE_WP_EN
If host want a device to enter the secure Write Protection mode, host set the SECURE_WP_EN bit as
0x1 in this register using Authenticated Device Configuration Write request. This register can be read
using Authenticated Device Configuration Read request. If there are already write protected groups or
write protected boot partitions, those will be preserved when entering or exiting secure Write protected
mode.
Bit[7:1] : Reserved
Bit[0] : SECURE_WP_EN (R/W/E)
The default value of this field is 0x0.
0x0 : Legacy Write Protection mode, i.e., TMP_WRITE_PROTECT[12] ,
PERM_WRITE_PROTECT[13] is updated by CMD27. USER_WP[171], BOOT_WP[173] and
BOOT_WP_STATUS[174] are updated by CMD6.
0x1 : Secure Write Protection mode. The access to the write protection related EXT_CSD and
CSD fields depends on the value of SECURE_WP_MASK bit in
SECURE_WP_MODE_CONFIG field.
Bit6
Bit5
Bit4
Reserved
Bit3
Bit2
Bit1
Bit0
SECURE_WP_MASK
Bit[7:1] : Reserved
Bit[0] : SECURE_WP_MASK (R/W/E_P)
The default value of this field is 0x0.
0x0: Disabling updating WP related EXT_CSD and CSD fields. CMD27 (Program CSD) will
generate generic error for setting TMP_WRITE_PROTECT[12] , PERM_WRITE_PROTECT[13].
CMD6 for updating USER_WP[171], BOOT_WP[173] and BOOT_WP_STATUS[174] generates
SWITCH_ERROR. If a force erase command is issued, the command will fail (Device stays locked)
and the LOCK_UNLOCK_FAILED error bit will be set in the status register. If CMD28 or CMD29
is issued, then generic error will be occurred. Power-on Write Protected boot partitions will keep
protected mode after power failure, H/W reset assertion and any CMD0 reset. The device keeps the
current value of BOOT_WP_STATUS in the EXT_CSD register to be same after power cycle, H/W
reset assertion, and any CMD0 reset.
0x1: Enabling updating WP related EXT_CSD and CSD fields. I.e TMP_WRITE_PROTECT[12] ,
PERM_WRITE_PROTECT[13] , USER_WP[171], BOOT_WP[173] and BOOT_WP_STATUS[174]
are accessed using CMD6, CMD8 and CMD27. If a force erase command is issued and accepted, then
ALL THE DEVICE CONTENT WILL BE ERASED including the PWD and PWD_LEN register
content and the locked Device will get unlocked. If a force erase command is issued and power-on
protected or a permanently-write-protected write protect groups exist on the device, the command
will fail (Device stays locked) and the LOCK_UNLOCK_FAILED error bit will be set in the status
register. An attempt to force erase on an unlocked Device will fail and LOCK_UNLOCK_FAILED
error bit will be set in the status register. Write Protection is applied to the WPG indicated by CMD28
with the WP type indicated by the bit[2] and bit[0] of USER_WP[171]. All temporary WP Groups
and power-on Write Protected boot partitions become writable/erasable temporarily which means
write protect type is not changed. All power-on and permanent WP Groups in user area will not
become writable/erasable temporarily. Those temporarily writable/erasable area will become write
protected when this bit is cleared to 0x0 by the host or when there is power failure, H/W reset
assertion and any CMD0 reset. The device keeps the current value of BOOT_WP_STATUS in the
EXT_CSD register to be same after power cycle, H/W reset assertion, and any CMD0 reset.
Error protection
The CRC is intended for protecting eMMC commands, responses and data transfer against transmission
errors on eMMC bus. One CRC is generated for every command and checked for every response on the
CMD line. For data blocks one CRC per transferred block is generated.
8.1
In order to detect data defects on the Devices the host may include error correction codes in the payload
data. For error free devices this feature is not required. With the error correction implemented off Device,
an optimal hardware sharing can be achieved. On the other hand the variety of codes in a system must be
restricted or one will need a programmable ECC controller, which is beyond the intention of a eMMC
adapter.
If an eMMC requires external error correction (external means outside of the Device), then an ECC
algorithm has to be implemented in the eMMC host. The DEFAULT_ECC field in the CSD register
defines the recommended ECC algorithm for the Device.
The shortened BCH (542,512) code was chosen for matching the requirement of having high efficiency at
lowest costs. Table 195 gives a brief overview of this code.
Table 195 Error correction codes
Parameter
Value
Code type
Shortened BCH (542,512) code
Payload block length
512 bit
Redundancy
5.5%
Number of correctable errors in a block
3
Codec complexity (error correction in HW)
Encoding + decoding: 5k gates
Decoding latency (HW @ 20MHz)
< 30 microSec
Codec gate count (error detection in HW, error
Encoding + error detection: ~ 1k gates Error
correction in SW-only if block erroneous)
correction: ~ 20 SW instructions/each bit of the
erroneous block
Codec complexity (SW only)
Encoding: ~ 6 instructions/bit
Error detection: ~ 8 instructions/bit
Error correction: ~ 20 instructions/each bit of
erroneous block
As the ECC blocks are not necessarily byte-aligned, bit stuffing is used to align the ECC blocks to byte
boundaries. For the BCH (542,512) code, there are two stuff bits added at the end of the 542-bits block,
leading to a redundancy of 5.9%.
The CRC is intended for protecting eMMC commands, responses and data transfer against transmission
errors on the eMMC bus. One CRC is generated for every command and checked for every response on
the CMD line. For data blocks one CRC per transferred block, per data line, is generated. The CRC is
generated and checked as described in the following.
8.2.1 CRC7
The CRC7 check is used for all commands, for all responses except type R3, and for the CSD and CID
registers. The CRC7 is a 7-bit value and is computed as follows:
7
eMMC and e2MMC discrete and eMMC multichip ballouts are defined in JESD21C within the MCP or
PoP section.
CMD: Command is a bidirectional signal. The host and Device drivers are operating in two modes,
open drain and push/pull.
DAT0-7: Data lines are bidirectional signals. Host and Device drivers are operating in push-pull
mode
CLK: Clock is a host to Device signal. CLK operates in push-pull mode
Data Strobe: Data Strobe is a Device to host signal. Data Strobe operates in push-pull mode.
Power-up
The power up of the eMMC bus is handled locally in the Device and in the bus master.
After power up (including hot insertion, i.e., inserting a Device when the bus is operating), the Device
enters the pre-idle state. The power up time of the supply voltage should be less than the specified
tPRU for the Bus master supply voltage.
If the Device does not support boot mode, or its BOOT_PARTITION_ENABLE bit is cleared, the
Device moves immediately to the idle state. While in the idle state, the Device ignores all bus
transactions until CMD1 is received. If the Device supports only standard v4.2 or earlier versions, it
enters the idle state immediately following power-up.
If the Device BOOT_PARTITION_ENABLE bit is set, the Device moves to the pre-boot state. The
Device then waits for boot initiation sequence. Following the boot operation period, the Device enters
the idle state. During the pre-boot state, if the Device receives any CMD line transaction other than
CMD1 or the boot initiation sequence (keeping the CMD line low for at least 74 clock cycles, or
issuing CMD0 with the argument of 0xFFFFFFFA), the Device moves to the idle state. If the Device
receives the boot initiation sequence (keeping the CMD line low for at least 74 clock cycles, or
issuing CMD0 with the argument of 0xFFFFFFFA), the Device begins boot operation. If boot
acknowledge is enabled, the Device shall send acknowledge pattern 010 to the host within the
specified time. After boot operation is terminated, the Device enters the idle state and shall be ready
for CMD1 operation. If the Device receives CMD1 in the pre-boot state, it begins responding to the
command and moves to Device identification mode.
While in the idle state, the Device ignores all bus transactions until CMD1 is received.
Power-up (contd)
The maximum initial load (after power up or hot insertion) that the eMMC can present on the VCC
and VCCQ line shall be a maximum of 10 uF in parallel with a minimum of 330 . At no time during
operation shall the Device capacitance on the VCCQ line exceed 10 uF
CMD1 is a special synchronization command used to negotiate the operation voltage range and to
poll the Device until it is out of its power-up sequence. Besides the operation voltage profile of the
Device, the response to CMD1 contains a busy flag, indicating that the Device is still working on its
power-up procedure and is not ready for identification. This bit informs the host that the Device is not
ready. The host has to wait until this bit is cleared.
o The Device shall complete its initialization within 1 second from the first CMD1 with a valid
OCR range if boot operation is not executed.
o Getting the Device out of idle state is up to the responsibility of the bus master. Since the power
up time and the supply ramp up time depend on application parameters as the bus length and the
power supply unit, the host must ensure that the power is built up to the operating level (the same
level which will be specified in CMD1) before CMD1 is transmitted.
o After power up the host starts the clock and sends the initializing sequence on the CMD line. The
sequence length is the longest of: 1msec, 74 clocks, the supply-ramp-up-time, or the boot
operation period. The additional 10 clocks (over the 64 clocks after what the Device should be
ready for communication) is provided to eliminate power-up synchronization problems.
o Every bus master has to implement CMD1. The CMD1 implementation is mandatory for all
eMMCs.
When power-up is initiated, either VCC or VCCQ can be ramped up first, or both can be ramped up
simultaneously.
After power up, the eMMC enters the pre-idle state. The power up time of each supply voltage
should be less than the specified tPRU (tPRUH, tPRUL or tPRUV) for the appropriate voltage range.
If the eMMC does not support boot mode or its BOOT_PARTITION_ENABLE bit is cleared, the
eMMC moves immediately to the idle state. While in the idle state, the eMMC ignores all bus transactions until CMD1 is received. If the eMMC supports only standard v4.2 or earlier versions, the
device enters the idle state immediately following power-up.
If the BOOT_PARTITION_ENABLE bit is set, the eMMC moves to the pre-boot state, and the
eMMC waits for the boot-initiation sequence. Following the boot operation period, the eMMC
enters the idle state. During the pre-boot state, if the eMMC receives any CMD-line transaction other
than the boot initiation sequence (keeping CMD line low for at least 74 clock cycles, or issuing
CMD0 with the argument of 0xFFFFFFFA) and CMD1, the eMMC moves to the Idle state. If
eMMC receives the boot initiation sequence (keeping the CMD line low for at least 74 clock cycles,
or issuing CMD0 with the argument of 0xFFFFFFFA), the eMMC begins boot operation. If boot
acknowledge is enabled, the eMMC shall send acknowledge pattern 010 to the host within the
specified time. After boot operation is terminated, the eMMC enters the idle state and shall be ready
for CMD1 operation. If the eMMC receives CMD1 in the pre-boot state, it begins responding to the
command and moves to the Device identification mode.
While in the idle state, the eMMC ignores all bus transactions until CMD1 is received.
CMD1 is a special synchronization command used to negotiate the operation voltage range and to
poll the device until it is out of its power-up sequence. In addition to the operation voltage profile of
the device, the response to CMD1 contains a busy flag indicating that the device is still working on its
power-up procedure and is not ready for identification. This bit informs the host that the device is not
ready, and the host must wait until this bit is cleared. The device must complete its initialization
within 1 second of the first CMD1 issued with a valid OCR range.
o If the eMMC device was successfully partitioned during the previous power up session (bit 0 of
EXT_CSD byte [155] PARTITION_SETTING_COMPLETED successfully set) then the initialization delay is (instead of 1s) calculated from INI_TIMEOUT_PA (EXT_CSD byte [241]). This
timeout applies only for the very first initialization after successful partitioning. For all the
consecutive initialization 1sec timeout will apply.
The bus master moves the device out of the idle state. Because the power-up time and the supply
ramp-up time depend on application parameters such as the bus length and the power supply unit, the
host must ensure that power is built up to the operating level (the same level that will be specified in
CMD1) before CMD1 is transmitted.
After power-up, the host starts the clock and sends the initializing sequence on the CMD line. The
sequence length is the longest of: 1ms, 74 clocks, the supply ramp-up time, or the boot operation
period. An additional 10 clocks (beyond the 64 clocks of the power-up sequence) are provided to
eliminate power-up synchronization problems.
Every bus master must implement CMD1.
All above rules apply also for e2MMC (VCC and VCCQ). In addition the e2MMC D-VDD must ramp up
before D-VDDQ. There is no restriction for order of ramping up VCC/VCCQ versus D-VDD/D-VDDQ.
The bus capacitance of each line of the eMMC bus is the sum of the bus master capacitance, the bus
capacitance itself and the capacitance of each inserted Device. The sum of host and bus capacitance are
fixed for one application, but may vary between different applications. The Device load may vary in one
application with each of the inserted Devices.
The CMD and DAT bus drivers consist of a pre-driver stage and a complementary driver transistor
(Figure 75). The DSR register is used to configure the pre-driver stage output rise and fall time, and the
complementary driver transistor size. The proper combination of both allows optimum bus performance.
Table 196 defines the DSR register contents:
tswitch-on max
tswitch-on min
ipeak min
Ipeak max
7
Reserved
7
Reserved
switch-on-max
0.4 * (FOD)-1
Parameter
Peak voltage on all lines
All Inputs
Input Leakage Current (before initialization
sequence and/or the internal pull up resistors
connected)
Input Leakage Current (after initialization
sequence and the internal pull up resistors
disconnected)
All Outputs
Output Leakage Current (before initialization
sequence)
Output Leakage Current (after initialization
sequence)
NOTE 1
Unit
V
-100
100
-2
-100
100
-2
Remarks
VCC
D-VDD
2.7
1.7
2.7
1.70
1.1
1.7
VCCQ
3.6
1.95
3.6
1.95
1.3
1,9
V
V
V
V
V
V
D-VDDQ
1.7
1.9
1.14
tPRUH
tPRUL
tPRUV
1.3
35
25
20
V
ms
ms
ms
Remarks
VCC
The eMMC must support at least one of the valid voltage configurations, and can optionally support all
valid voltage configurations, see Table 199.
NOTE 1
2.7 V3.6 V
1.7 V1.95 V
VCCQ (I/O) 3.3 V range is not supported in either HS200 or HS400 devices
2.7 V3.6 V
Valid (1)
NOT VALID
Parameter
Pull-up resistance for CMD
Pull-up resistance for
DAT07
Internal pull up resistance
DAT1DAT7
Bus signal line capacitance
Single Device capacitance
Maximum signal line
inductance
VDDi capacitor value
10
CL
CDEVICE
CREG
(2)
150
30
6
16
pF
pF
nH
0.1
uF
uF
CREG2
uF
CREG3
uF
CH1
uF
NOTE 1 Recommended maximum pull-up is 30 k for 1.2 V and 50 k for 1.8 V interface supply voltages. A
3 V part, may use the whole range up to 100 k.
NOTE 2 Recommended value for CREG, CREG2 and CREG3 might be different between eMMC device vendors.
NOTE Confirm the maximum value and the accuracy of the capacitance with eMMC vendor
because the electrical characteristics of the regulator inside eMMC is affected by the fluctuation of
the capacitance.
NOTE 3 CH1 is VCCQ-VSSQ decoupling capacitor required for HS200&HS400 eMMC device.
NOTE 4 CH1 should be placed adjacent to VCCQ-VSSQ balls (around DAT[7..0] balls), It should be located as
close as possible to the balls defined in order to minimize connection parasitics.
NOTE 5 eMMC device vendor may have more specific requirements for CH1 placement. Please confirm such
requirements with specific eMMC device vendor.
Overshoot/Undershoot Specification
Unit
V
V
V-ns
V-ns
Maximum Amplitude
Overshoot Area
Volts
(V)
VCCQ
V SSQ
Undershoot Area
Maximum Amplitude
Time (ns)
As the bus can be supplied with a variable supply voltage, all signal levels are related to the supply
voltage.
V
VCCQ
input
high level
output
high level
VOH
VIH
undefined
VIL
input
low level
output
low level
VOL
VSS
Figure 80 Bus signal levels
Symbol
Min
Max
VOH
VOL
VCCQ - 0.2
0.3
Unit
V
V
Conditions
NOTE 1
IOL = 2 mA
NOTE 1 Because Voh depends on external resistance value (including outside the package), this value does not apply as
device specification. Host is responsible to choose the external pull-up and open drain resistance value to meet Voh Min
value.
The input levels are identical with the push-pull mode bus signal levels.
10.5.2 Push-pull mode bus signal level eMMC
The device input and output voltages shall be within the following specified ranges for any VCCQ of the
allowed voltage range
For 2.7 V - 3.6 V VCCQ range (compatible with JESD8C.01)
Table 203 Push-pull signal levelhigh-voltage eMMC
Parameter
Output HIGH voltage
Output LOW voltage
Input HIGH voltage
Input LOW voltage
Symbol
Min
VOH
VOL
VIH
VIL
0.75 * VCCQ
Max
0.125 * VCCQ
VCCQ + 0.3
0.25 * VCCQ
0.625 * VCCQ
VSS - 0.3
Unit
V
V
V
V
Conditions
IOH = -100 A @ VCCQ min
IOL = 100 A @ VCCQ min
Max
0.45V
VCCQ + 0.3
0.35 * VCCQ(2)
Unit
V
V
V
V
Conditions
IOH = -2mA
IOL = 2mA
Symbol
Min
VOH
VOL
VIH
VIL
0.75*VCCQ
0.65 * VCCQ
VSS - 0.3
Max
0.25*VCCQ
VCCQ + 0.3
0.35 * VCCQ
Unit
V
V
V
V
Conditions
IOH = -2 mA
IOL = 2 mA
NOTE Both the 1.95 V - 2.7 V range and the 1.3 V 1.70 V are undefined. The eMMC device does not operate at this
voltage range.
Drive strength definitions are same for 1.8 V signaling level and for 1.2 V signaling level.
Driver Type-0 is targeted for transmission line, based distributed system with 50 nominal line
impedance. Therefore, it is defined as 50 nominal driver.
For HS200, when tested with CL = 15pF Driver Type-0 shall meet all AC characteristics (see 10.5.4.2)
and HS200 Device output timing requirements (see 10.8.3). The test circuit defined in 10.5.4.3 is used for
testing of Driver Type-0.
For HS400, when tested with the reference load defined in 10.3.5, Driver Type-0 or Driver Type-1 or
Driver Type-4 shall meet all AC characteristics (see 10.5.4.2) and HS400 Device output timing
requirements (see 10.10.2).
The Optional Driver Types are defined with reference to Driver Type-0.
Table 206 summarizes the nominal impedance characteristics for the five Driver Types.
Table 206 I/O driver strength types
Approximated
Nominal
driving capability
Impedance
compared to
Type-0
Driver
Type
Values
Support
0x0
Mandatory
50
x1
0x1
Optional
33
x1.5
0x2
Optional
66
x0.75
0x3
Optional
100
x0.5
0x4
Optional
40
x1.2
NOTE 1
NOTE 2
NOTE 3
Remark
If Device supports the optional Driver Types, the Host may use them to optimize the signal integrity in its
system. To do so, the Host designer may simulate its specific system, using a Device driver models. Host
can select the optimal Driver Type that may drive the Host system load at the desired operating frequency
with minimal noise generated.
Symbol
Min.
Typ.
Max.
Units
Remark
Rise/Fall Time
TR0, TF0
0.40
0.88
1.32
ns
CL =15pF, Note 1
Ratio of fall
time to rise time
RFR
0.7
1.0
1.4
NOTE 1 TR0 is measured between VOL to VOH, TF0 is measured between VOH to VOL.
NOTE 2 Worst case RFR is expected when the P and N CMOS processes are unbalanced. RFR is
defined for all possible specific operating condition points. (RFR shall be verified individually for each
valid operating point with fixed temperature, voltage and process condition)
Driver
Stimulus
~0.5MHz
CL
NOTE 1
NOTE 2
CL incorporates device die load, device package load and equivalent lumped load external to the device.
NOTE 3
In distributed transmission lines only part of the line capacitance considered as load for the Driver.
min (VIH)
tWL
tTHL
tISU
50% VccQ
max (VIL)
tTLH
min (VIH)
Input
Data
Data
Invalid
max (VIL)
tODLY
tOSU
tOH
min (VOH)
Output
Data
Invalid
Data
max (VOL)
Symbol
Min
Max
Unit
Remark
fPP
52(3)
MHz
fOD
tWH
tWL
tTLH
tTHL
0
6.5
6.5
400
kHz
ns
ns
ns
ns
CL 30 pF
Tolerance: +100 KHz
Tolerance: +20 KHz
CL 30 pF
CL 30 pF
CL 30 pF
CL 30 pF
tISU
tIH
3
3
tODLY
tOH
tRISE
tFALL
3
3
13.7
2.5
3
3
ns
ns
CL 30 pF
CL 30 pF
ns
ns
ns
ns
CL
CL
CL
CL
30 pF
30 pF
30 pF
30 pF
NOTE 2
NOTE 3
NOTE 4
NOTE 5
Symbol
Remark(1)
Min
Max
Unit
fPP
26
MHz
fOD
tWH
tWL
tTLH
tTHL
0
10
10
400
kHz
10
10
ns
ns
ns
CL 30 pF
CL 30 pF
CL 30 pF
CL 30 pF
tISU
tIH
3
3
ns
ns
CL 30 pF
CL 30 pF
tOSU
tOH
11.7
8.3
ns
ns
CL 30 pF
CL 30 pF
CL 30 pF
The Device must always start with the backward-compatible interface timing. The timing mode can be switched
to high-speed interface timing by the host sending the SWITCH command (CMD6) with the argument for highspeed interface select.
CLK timing is measured at 50% of VCCQ.
For compatibility with Devices that support the v4.2 standard or earlier, host should not use > 26 MHz before
switching to high-speed interface timing.
CLK rise and fall times are measured by min (VIH) and max (VIL).
tOSU and tOH are defined as values from clock rising edge. However, there may be Devices or devices which
utilize clock falling edge to output data in backward compatibility mode. Therefore, it is recommended for hosts
either to set tWL value as long as possible within the range which will not go over t CK-tOH(min) in the system or to
use slow clock frequency, so that host could have data set up margin for those devices. In this case, each device
which utilizes clock falling edge might show the correlation either between t WL and tOSU or between tCK and tOSU
for the device in its own datasheet as a note or its application notes.
These timings applies to the DAT[7:0] signals only when the device is configured for dual data mode
operation. In this dual data mode, the DAT signals operates synchronously of both the rising and the
falling edges of CLK. the CMD signal still operates synchronously of the rising edge of CLK and
therefore complies with the bus timing specified in 10.6, therefore there is no timing change for the CMD
signal.
tPP
CLK
50% VccQ
50% VccQ
tIHddr
tISUddr
tIHddr
min (VIH)
max (VIL)
tISUddr
min (VIH)
Input
DATA
DATA
DATA
Invalid
max (VIL)
tODLYddr(max) tODLYddr(max)
tODLYddr(min)
Output
tODLYddr(min)
min (VOH)
DATA
DATA
DATA
max (VOL)
In DDR mode data on DAT[7:0] lines are sampled on both edges of the clock
(not applicable for CMD line)
Figure 83 Timing diagram: data input/output in dual data rate mode
Symbol
tTLH
tTHL
Min
Max
Unit
Remark
45
55
3
3
ns
ns
ns
CL 20 pF
ns
CL 20 pF
ns
CL 20 pF
ns
CL 20 pF
tIHddr
13.7
tOH
tRISE
ns
CL 20 pF
tFALL
ns
CL 20 pF
ns
ns
CL 20 pF
CL 20 pF
ns
ns
ns
CL 20 pF
CL 20 pF
CL 20 pF
2.5
2.5
2.5
1.5
7
2
2
tPERIOD
VCCQ
VIH
CLOCK
INPUT
VT
VIL
VSS
NOTE 1
NOTE 2
tTLH
tTHL
Duty Cycle
Min
5
Max
-
Unit
ns
0.2 tPERIOD
ns
30
70
Remark
200 MHz (max), between rising edges
tTLH, tTHL < 1ns (max) at 200 MHz,
CDEVICE = 6 pF, The absolute maximum value
of tTLH, tTHL is 10ns regardless of clock
frequency.
VCCQ
CLOCK
INPUT
VT
VSS
VCCQ
tISU
tIH
VIH
CMD.DAT[7-0]
INPUT
VIH
VALID
WINDOW
VIL
VIL
VSS
NOTE 1
NOTE 2
Min
Max
Unit
Remark
tISU
1.40
ns
CDEVICE 6 pF
tIH
0.8
ns
CDEVICE 6 pF
VCCQ
CLOCK
INPUT
VT
VSS
tVW
tPH
VOH
CMD.DAT[7-0]
OUTPUT
VCCQ
VOH
VALID
WINDOW
VOL
VOL
VSS
NOTE
Min
Max
Unit
Remark
UI
TPH
-350
(T= -20 C)
+1550
(T= 90 C)
ps
tVW
0.575
UI
tPH
NOTE
Unit Interval (UI) is one bit nominal time. For example, UI=5ns at 200 MHz.
TPH =1550ps
Sampling point
VALID
WINDOW
VALID
WINDOW
VALID
WINDOW
Operating
-25 oC to +85 oC
Storage
-40 oC to +85 oC
NOTE
Symbol
Min
tPERIOD
SR
1.125
Duty cycle
distortion
tCKDCD
0.0
Minimum pulse
width
tCKMPW
2.2
Max
Unit
Remark
Input CLK
V/ns
0.3
ns
ns
tISUddr
0.4
ns
tIHddr
0.4
ns
Slew rate
SR
1.125
V/ns
CDevice 6 pF
With respect to VIH/VIL.
CDevice 6 pF
With respect to VIH/VIL.
With respect to VIH/VIL.
NOTE
Symbol
Min
Max
Unit
tPERIOD
SR
1.125
tDSDCD
0.0
tDSMPW
2.0
Read pre-amble
tRPRE
0.4
tPERIOD
Read post-amble
tRPST
0.4
tPERIOD
Remark
Data Strobe
V/ns
0.2
ns
ns
tRQ
0.4
ns
tRQH
0.4
ns
Slew rate
SR
1.125
V/ns
Parameter
RCMD
RDAT
4.7
10
RDS
10
Rint
10
CDevice
NOTE 1
100
(1)
100
(1)
100
(1)
150
pF
Remark
Recommended maximum value is 30 k for 1.2 V and 50 k for 1.8 V interface supply voltages.
VT
tDSMPW
tDSMPW
tDSDCD
VSS
tRQ_CMD
tRQH_CMD
VCCQ
VOH
CMD
OUTPUT
VALID
WINDOW
VOL
VSS
NOTE
Symbol
Min
Max
Unit
tPERIOD
SR
1.125
tDSDCD
0.0
tDSMPW
2.0
Read pre-amble
tRPRE
0.4
tPERIOD
Read post-amble
tRPST
0.4
tPERIOD
Remark
Data Strobe
V/ns
0.2
ns
ns
tRQ_CMD
0.4
ns
tRQH_CMD
0.4
ns
Slew rate
SR
1.125
V/ns
The eMMC standard provides all the necessary information required for media exchangeability and
compatibility.
However, due to the wide spectrum of targeted eMMC applications, from a full blown PC based
application down to the very-low-cost market segments, it is not always cost effective, nor useful to
implement every eMMC standard feature, in a specific eMMC system. Therefore, many of the
parameters are configurable and can be tailored per implementation.
A device is compliant with the standard as long as all of its configuration parameters are within the valid
range. An eMMC host is compliant as long as it supports at least one eMMC class as defined below.
Every provider of eMMC system components is required to clearly specify (in its product manual) all the
eMMC specific restrictions of the device.
eMMCs (slaves) provide their configuration data in the Device Specific Data (CSD) register (refer to
7.3). The eMMC protocol includes all the necessary commands for querying this information and
verifying the system concept configuration. eMMC hosts (masters) are required (as part of the system
boot-up process) to verify host-to-Device compatibility with each of the Devices connected to the bus.
Table 219 summarizes the requirements from a eMMC host for each Device class (CCC = Device
command class, see 6.10). The meaning of the entries is as follows:
Mandatory: any eMMC host supporting the specified Device class must implement this function.
Optional: this function is an added option. The host is compliant to the specified Device class without
having implemented this function.
Not required: this function has no use for the specified Device class.
Optional
Mandatory
Mandatory
Mandatory
Optional
Optional
Optional
Mandatory
Mandatory
Mandatory
Optional
Optional
Mandatory
Mandatory
Obsolete
Obsolete
Mandatory
Mandatory
Obsolete
Obsolete
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Obsolete
Optional
n/a
The interrupt command is intended for reducing the overhead on the host side required during polling
for some events.
The setting of the DSR allows the host to configure the eMMC bus in a very flexible, application
dependent manner
The external ECC in the host allows the usage of extremely low-cost Devices.
The Device Status bits relevance, according to the supported classes, is defined in Table 69.
Sanitize and bad block management are features that enable the device to be used in secure
applications.
The Trim and discard command allows the host to assist with the optimization of the internal Device
garbage collection operations
Function
Boot
RPMB
Reset Pin
Write Protection
(including Perm & Temp)
1.2 V I/O
Dual Data Rate timing
HS200
Multi Partitioning
Secure Erase/Secure Trim
Trim
High Priority Interrupt
Background Operation
Enhance Reliable Write
Discard Command
Security Features
Partition types
Context ID
Data Tag
Packed commands
Real Time Clock
Dynamic Device Capacity
Power Off Notification
Thermal Spec
Minimum Sector Size = 4 KB (256 GB)
Minimum Sector Size = 4 KB (>256 GB)
Cache
Extended Security Protocols
HS400
Field Firmware Update
Product State Awareness
Secure Removal Type
Device Health Report
Command Queuing
Enhanced Strobe
Cache Flushing Report
BKOPS Control
Cache Barrier
RPMB Throughput Improve
Secure Write Protection
eMMC
e2MMC
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Optional
Optional
Optional
Mandatory
Optional
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Optional
Mandatory
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Mandatory
Mandatory
Optional
Optional
Optional
Optional
Optional
Optional
Mandatory
Optional
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Mandatory
Optional
Mandatory
Mandatory
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Mandatory
Mandatory
Optional
Optional
Optional
There are two entries in the CSD register concerning the payload block length:
The block length entry depends on the Device memory field architecture. There are fixed values in 2exponent steps defined for the block length size in the range 1 Byte - 2 kByte. Alternatively, the device
allows application of any block length in the range between 1 Byte and the maximum block size.
The other CSD entry having an influence on the block length is the selected external ECC type. If there is
an external ECC code option selected, this entry generally does not have to match with the block length
entry in the CSD. If these entries do not match, however, there is an additional caching at the host side
required. To avoid that, using Devices allowing the usage of any block length within the allowed range
for applications with an external ECC is strongly recommended.
In order to improve compatibility and inter-operability of the Device between different applications, it is
required that different host applications use identical algorithms and data formats. Following is a
recommended way of storing passwords in the 128-bit password block on the Device. It is provided as
application note only.
This method is applicable only if the password consists of text, possibly entered by the user. The
application may opt to use another method if inter-operability between devices is not important, or if the
application chooses to use, for example, a random bit pattern as the password.
Get the password (from the user, from a local storage on the device, or something else). The password can
be of any length, and in any character set.
Normalize the password into UTF-8 encoded Unicode character set. This guarantees inter-operability
with all locales, character sets and country-specific versions. In UTF-8, the first 128 characters are
mapped directly to US-ASCII, and therefore a device using only US-ASCII for the password can
easily conform to this standard.
Run the normalized password through SHA-1 secure hash algorithm. This uses the whole key space
available for password storage, and makes it possible to use also longer passwords than 128 bits. As
an additional bonus, it is not possible to reverse-engineer the password from the Device, since it is not
possible to derive the password from its hash.
Use the first 128 bits of this hash as the Device password. (SHA-1 produces a 160-bit hash. The last
32 bits are not used.)
Following is an example (note that the exact values need to be double-checked before using this as
implementation reference):
The password is foobar. First, it is converted to UTF-8. As all of the characters are US-ASCII, the
resulting bit string (in hex) is:
66 6F 6F 62 61 72
After running this string through SHA-1, it becomes:
88 43 d7 f9 24 16 21 1d e9 eb b9 63 ff 4c e2 81 25 93 28 78
Of which the first 128 bits are:
88 43 d7 f9 24 16 21 1d e9 eb b9 63 ff 4c
Which is then used as the password for the device.
UTF-8 is specified in UTF-8, a transformation format of Unicode and ISO 10646, RFC 2044, October
1996. ftp://ftp.nordu.net/rfc/rfc2044.txt
SHA-1 is specified in Secure Hash Standard, Federal Information Processing Standards Publication
(FIPS PUB) 180-1, April 1995. http://www.itl.nist.gov/fipspubs/fip180-1.htm
This section defines the way complex eMMC bus operations (e.g., erase, read, etc.) may be executed
using predefined command sequences. Executing these sequences is the responsibility of the MultiMediaDevice bus master. Nevertheless, it may be used for host compatibility test purposes.
Table A.221 Macro commands
Mnemonic
Description
CIM_SINGLE_DEVICE_ACQ
CIM_SETUP_DEVICE
CIM_READ_BLOCK
CIM_READ_MBLOCK
CIM_WRITE_BLOCK
CIM_WRITE_MBLOCK
CIM_ERASE_GROUP
Mnemonic
CIM_TRIM
CIM_US_PWR_WP
CIM_US_PERM_WP
The eMMC command sequences are described in the following paragraphs. Figure A.91 provides a
legend for the symbols used in the sequence flow charts. The status polling by CMD13 can explicitly be
done any time after a response to the previous command has been received.
The host knows that there is a single Device in the system and, therefore, does not have to implement the
identification loop. In this case only one ALL_SEND_CID is required. Similarly, a single SEND_CSD is
sufficient.
CIM_READ_MBLOCK
CIM_WRITE_BLOCK
This command sequence is similar to multiple block write except that there is no repeat loop for write
data block.
CIM_WRITE_MBLOCK
The sequence of write multiple block starts with an optional SET_BLOCK_LEN command. If there is no
change in block length this command can be omitted. If the Device accepts the two starting commands the
host will begin sending data blocks on the data line. After each data block the host will check the Device
response on the DAT line. If the CRC is OK, the Device is not busy and the host will send the next block
if there are more data blocks.
While sending data blocks, the host may query the Device status register (using the SEND_STATUS
conned) to poll any new status information the Device may have (e.g., WP_VIOLATION,
MISALIGMENT, etc.) The sequence must be terminated with a STOP command.
The erase group procedure starts with ERASE_START (CMD35) and ERASE_END (CMD336 commands. Once the erase groups are selected the host will send an ERASE (CMD38) command. It is recommended that the host terminates the sequence with a SEND_STATUS (CMD13) to poll any additional
status information the Device may have (e.g., WP_ERASE_SKIP, etc.).
The trim procedure starts with ERASE_START (CMD35) and ERASE_END (CMD36) commands, these
commands are used to select write block. Once the write blocks are selected the host will send an ERASE
(CMD38) command with argument bit 0 set to one and the remainder of the bits set to zero. It is
recommended that the host terminates the sequence with a SEND_STATUS (CMD13) to poll any
additional status information the Device may have (e.g., WP_ERASE_SKIP, etc.).
CIM_US_PWR_WP
The minimum required sequence to apply Power-On write protection to a write protection group is to set
US_PWR_WP_EN (EXT_CSD[171] bit 0) and then use the SET_WR_PROT(CMD28) command.
It is recommended to disable permanent write protection, if it is not needed, before issuing the first
power-on write protection sequence since if an area is permanently protected then power-on write
protection cannot be applied.
The host can check if power-on protection has been disabled before following the minimum required
sequence to apply power-on protection by reading US_DIS_PWR_WP (EXT_CSD[171] bit 3). Also, the
host can verify the protection status of the write group after the required sequence has been executed by
using the SEND_WR_PROTECT_TYPE (CMD31) command.
The minimum required sequence to apply permanent write protection to a write protection group is to set
US_PERM_WP_EN (EXT_CSD[171] bit 2) and then use the SET_WR_PROT(CMD28) command.
The host has the option to check that permanent protection is not disabled before setting permanent write
protection by reading US_DIS_PERM_WP (EXT_CSD[171] bit 4). Also, the host can verify the
protection status of the write group after the required sequence has been executed by using the
SEND_WR_PROTECT_TYPE (CMD31) command.
With the introduction of eMMC standard version 4.0, higher clock speeds are used in both hosts and
Devices. In order to maintain backward and forward compatibilities, the Device, and the host, are
required to implement two different sets of timings. One set of timings is the interface timing aimed at
high speed systems, working at clock frequencies higher than 20MHz, up to 52MHz. The other set of
timing is different for the Device and for the host. The Device has to maintain backwards compatibility,
allowing it to be inserted into an older eMMC system. The host has to maintain forward compatibility,
allowing old eMMC to be inserted into new high speed eMMC systems.
Table A.222 defines the forward compatibility interface timing. The high speed interface timing is already
defined in Table 208.
Table A.222 Forward-compatible host interface timing
Parameter
Clock CLK1
Clock frequency Data Transfer Mode (PP)
Clock frequency Identification Mode (OD)
Clock low time
Clock rise time2
Clock fall time
Inputs CMD, DAT (referenced to CLK)
Input set-up time
Input hold time
Outputs CMD, DAT (referenced to CLK)
Output set-up time
Output hold time
NOTE 1
NOTE 2
A.5
Symbol
Min
Max
Unit
Remark
fPP
fOD
tWL
tTLH
tTHL
0
0
10
20
400
MHz
kHz
CL <= 30 pF
10
10
ns
ns
ns
CL <= 30 pF
CL <= 30 pF
CL <= 30 pF
tISU
tIH
4.8
4.4
ns
ns
CL <= 30 pF
CL <= 30 pF
tOSU
tOH
5
5
ns
ns
CL <= 30 pF
CL <= 30 pF
Handling of passwords
There is only one length indicator for the password instead of having separate length bytes reserved for
both new and old passwords. Due to this there is a possibility for conflict during the password change
operation after which the new password does not match to the one which the user set. There has also
proven to be various interpretations related to the removal of the lock function in Device
implementations.
Thus the procedures in the following sections are recommended to be used to enable best possible
compatibility over host-Device systems.
A.5.1
This applies for the host systems. Instead of using the password replacement function implement the password change as follows:
-
A.5.2
This applies to the host systems. Before resetting the password (CLR_PWD) unlock the Device.
A.6.1
Bus initialization
There is more than one way to use the new features, introduced in v4.0 of this document. This application
note describes a way to switch a high speed eMMC from the initial lower frequency to the high
frequency and different bus configuration.
High Speed eMMCs are backwards compatible, therefore after power up, they behave identically to old
Devices, with no visible difference.4 The steps a host can do to identify a High Speed eMMC, and to put
it to high speed mode are described next, from power-up until the Device is ready to work at high data
rates.
a. Power-up
1. Apply power to the bus, communication voltage range (1.70 V 1.95 V or 2.7 V 3.6 V/ 1.1 V
1.3 V opt)
2. Set clock to 400KHz, or less
3. Wait for 1ms, then wait for 74 more clock cycles , voltage supply ramp-up time, boot operation
duration (see Figure 73)
4. Send CMD1with the address mode required by the host (0x80FF8080 - capacity less than or
equal to 2GB or 0xC0FF8080 - capacity greater than 2GB)
5. Receive R3
6. If the OCR busy bit is 0(0x00FF8080 or 0x40FF8080 in R3 response and the host shall ignore
the access bits), repeat steps 5 and 6
7. When the device returns 0x80FF8080 or 0xC0FF8080, it moves to Ready State if compatible to
the host CMD1 argument
8. If R3 returned some other value, the Device is not compliant (since it should have put itself into
inactive state, due to voltage incompatibility, and not respond); in such a case the host must
power down the bus and start its error recovery procedure (the definition of error recovery
procedures is host dependent and out of the scope of this application note)
Low-voltage power-up
Do the following steps if low voltage operations are supported by the host; otherwise skip to step 16.
9. If the host is a low voltage host, and recognized a dual voltage Device, power down the MMC
bus
10. Apply power to the MMC bus, in the low voltage range (1.70 V 1.95 V)
11. Wait for 1ms, then for 74 more clock cycles
12. Send CMD1 with argument 0x00000080
13. Receive R3, it should read 0x00FF8080
14. If the OCR busy bit is 0, repeat steps 13 and 14
b. CID retrieval and RCA assignment
15. Send CMD2
16. Receive R2, and get the Devices CID
17. Send CMD3 with a chosen RCA, with value greater than 1
Some legacy Devices correctly set the ILLEGAL_CMD bit, when the bus testing procedure is executed upon them,
and some other legacy Devices in the market do not show any error.
The following steps are supported by Devices implementing version 4.0 or higher. For switching to
HS200 mode introduced in v4.5 refer to 6.6.2.2. Do these steps after the bus is initialized according to
A.6.1, Bus initialization.
21. Send CMD7 with the Devices RCA to place the Device in tran-state
22. Send CMD8, SEND_EXT_CSD. From the EXT_CSD the host can learn the power class of the
Device, and choose to work with a wider data bus (See steps 26-37)
23. Send CMD6, writing 0x1 to the HS_TIMING byte of the EXT_CSD. The argument
0x03B9_0100 will do it.
23.1-The Device might enter BUSY right after R1, if so, wait until the BUSY signal is deasserted
23.2-After the Device comes out of BUSY it is configured for high speed timing
24. Change the clock frequency to the chosen frequency (any frequency between 0 and 26/52MHz).
A.6.3
The following steps are optionally done if the Devices power class allows the host to work on a wider
bus, within the host power budget. Do these steps after the bus is initialized according to A.6.1 Bus
initialization.
DAT7
DAT6
DAT5
DAT4
DAT3
DAT2
DAT1
DAT0
Start
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
LSB
0x55
Test Pattern
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0xAA
0x00
0x00
0x00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0x00
0x00
0
0
0
0
0
0
0
0
MSB
0x00
Optional
CRC16
CRC16
CRC16
CRC16
CRC16
CRC16
CRC16
CRC16
End
1
1
1
1
1
1
1
1
Optional
CRC16
CRC16
CRC16
CRC16
End
1
1
1
1
Optional
CRC16
End
1
DAT3
DAT2
DAT1
DAT0
Start
0
0
0
0
0
1
0
1
LSB
0x5A
1
0
1
0
0
0
0
0
Test Pattern
0
0
0
0
0
0
0
0
0x00
0
0
0
0
0x00
0
0
0
0
0
0
0
0
MSB 0x00
DAT0
Start
0
1
0x80
Test Pattern
0
0
This represents the host expected values. The Device always responds to CMD19 over all eight DAT lines.
A XNOR B
0
0
1
1
0
1
0
1
1
0
0
1
The flow chart in Figure A.102 shows how the master selects the erase unit size if the master supports the
JEDEC MMC Electrical Interface standard v4.3.
There might be different solutions to resolve the observed issues with the HPI.
One of possible solutions to the observed issues is to resolve a conflict at the host by letting the write
operation come through when a dedicated timer has been expired. With an adjustable timeout value
depending on the context, flexibility is gained making it possible to adopt the method for different needs.
Using the following examples, a possible method is explained for the two most interesting use cases.
Assume that we want to protect the write commands not being delayed by more than 1s after the write
command has been originally sent to the memory device. In such case we need to set the timeout value 1s
for each write command. A timer will be started when the write command has been sent to the memory
device. If HPI is requested while the write command is still ongoing, the driver in the host will check the
timer value. If the timer value has expired compared to the timeout (1s), the HPI will not be able to
interrupt the write command. On the other hand, if the timer value is lower than the timeout (1s), then the
HPI will interrupt the write operation and the requested read operation will be provided. When the write
operation has finally been concluded, the timer will be reset.
Assume another case, protecting high priority write operations in Linux. When a write operation has been
requested, the check will be made of the priority of the process that has requested this operation. If it is a
real time process or a kernel process, the timeout value will be set to zero and a timer will be started in the
same way as in the example above. If HPI is requested while the write command is still ongoing, the
driver in the host will check the timer value. The timer value will be checked towards the timeout (0s),
indicating the expiration of the timer that means that the write command will never be interrupted. When
the write operation has been concluded, the timer will be reset.
Previous versions of the eMMC spec did not describe the timing of the stop command in all different
device states. Also, they did not fully specify whether the received block is valid, after the stop command
is received, for all cases. The following section is intended to clarify this behavior for future designs.
However, since these clarifications did not exist for previous versions of the spec not all devices may
adhere to this clarification. It is for this reason that a host should take the necessary precautions to ensure
that the STOP command functions as expected in its design and should not rely on the following
behavior. Figure A.103 describes busy signal timing of the stop command just before CRC status transfer
from the device. Considering backward compatibility, the end bit of CRC status is followed by two Z
clocks even the device doesn't need two Z bits between CRC status and busy signal. This behavior is
based on Figure 44-Stop transmission during CRC status transfer from the device. However, some
devices may not to adhere to Figure A.103. It is for this reason that a host should ensure behavior of the
device and is recommended to indicate busy signal 4 clock cycles after STOP command.
Figure A.103 Stop transmission just before CRC status transfer from the device
Figure A.104 and Figure A.105 describe data block validity. End bit which is followed 2 clock cycles
after STOP command on Figure A.104 follows CRC status, however, device considers CRC status is
interrupted. For this reason, the received data block on Figure A.104 is considered incomplete and will
not be programmed.
Figure A.104 Stop transmission during CRC status transfer from the device
The received data block on Figure A.105 is considered complete and the device will program it.
NOTE For Stop transmission in HS200 Mode, the time from the End bit of Stop transmission until the Busy starts
(named Nsb-a) may vary. Please refer to 6.15.8, "Timing Changes in HS200 Mode", for further info on HS200
case."
Figure A.105 Stop transmission during CRC status transfer from the device
Table A.227 provides set of Tc temperatures for the various power class current levels.
Package surface to be held at or below the Tc temperature shown for given current consumption.
Having Tc defined provides a reference for Device manufacturers and Host vendors assuming that each
will take its own responsibility on the following:
Memory Device Vendors: Making thermally efficient packages: Assuring the storage device junction
temp never to exceed its maximum Tj as long as Tc is kept per eMMC as shown in Table A.227.
Host Vendors: Efficient cooling system to assure that the package case temp never exceeds the Tc as
defined in Table A.227.
Table A.227 Package Case Temp (Tc) per current consumption
NOTE Packages types are as defined in JEDEC, MO-276D. 14x18 = Package type AC and 12x16 =
Package type AA
The following steps describe how to enable power-on write protection to a boot area when the other boot
area is permanently write protected.
1)
When permanent write protection was applied to BOOT Area 2, BOOT_WP register would be like:
Bit 7
Bit 6
B_
_SEC_WP_
SEL
B_PWR_WP_
DIS
2)
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reserved
B_PERM_WP_DI
S
B_PERM
_WP_SEC
_SEL
B_PERM_WP_EN
B_PWR_
WP_SEC
_SEL
B_PWR_WP_EN
According to 7.4.49, some bits of BOOT_WP register can only be written once per power cycle, the
device power shall be turned off and on again to apply write protection to the other Boot area.
BOOT_WP register value would be like below after power cycle:
Bit 7
Bit 6
B_
_SEC_WP_
SEL
B_PWR_WP_
DIS
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reserved
B_PERM_WP_DI
S
B_PERM
_WP_SEC
_SEL
B_PERM_WP_EN
B_PWR_
WP_SEC
_SEL
B_PWR_WP_EN
The host should take notice that B_SEC_WP_SEL(bit 7) and B_PER_WP_SEC_SEL(bit3) turned to
zero as they are type R/W/C_P.
3)
In order to apply power-on write protection to BOOT Area 1, following values shall be set:
Bit 7
Bit 6
B_
_SEC_WP_
SEL
B_PWR_WP_
DIS
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reserved
B_PERM_WP_DI
S
B_PERM
_WP_SEC
_SEL
B_PERM_WP_EN
B_PWR_
WP_SEC
_SEL
B_PWR_WP_EN
When trying to independently power-on write protect the other boot partition, the configuration of
bit3 in EXT_CSD173 is required to be in agreement with the value read back from
BOOT_WP_STATUS[174].
Especially in this case, Boot Area 2 was previously permanently write protected, two bits
B_SEC_WP_SEL(bit7) and B_PER_WP_SEC_SEL(bit3) must be set. Otherwise, both Boot areas
will be permanent write protected unintentionally.
MODE_OPERATION_CODES
supported
Host sets
MODE_OPERATION_CODES to
FFU_INSTALL which automatically
sets MODE_CONFIG to NORMAL
MODE_OPERATION_CODES
not supported
Introduction
B.1.1. Background
Command Queuing (CQ) feature is introduced to eMMC standard in v5.1. CQ includes new commands
for issuing tasks to the device, for ordering the execution of previously issued tasks, and for additional
task management functions.
In order to optimally exploit CQ, the partition between hardware and software in the host should be
designed such that host hardware executes the bus protocol and provides a task-level interface to software
and host software issues tasks to the hardware and is notified when they are completed.
B.1.2. Overview and Scope
This annex describes the Command Queuing Host Controller Interface (CQHCI): the hardware/ software
interface of a module which is capable of executing the hardware functions related to CQ. These
functions are: processing task information provided by software, communication with the device using the
bus protocol for issuing tasks and ordering task execution, copying data to/from the system memory, and
generation of interrupts.
The objective of CQHCI is to provide a uniform interface method of accessing the Command Queuing
hardware functions in eMMC so that a standard or common software driver can be provided for these
functions. The common driver would work with Command Queuing hardware from any vendor. This
annex includes a description of the hardware/software interface between system software and the CQ
hardware in the host controller.
The specification described in this annex is intended for hardware designers, system builders and software
developers.
B.1.3. Feature Summary
The Command Queuing HCI has the following features:
Command Queuing
CQE
CQHCI
DCMD
Direct Command
QBR
Queue Barrier
QSR
SQS
TDL
B.1.5.2. Conventions
The conventions used for registers in this annex are defined.
Hardware shall return 0 for all bits and registers that are marked as reserved, and host software shall
write all reserved bits and registers with the value of 0.
Inside the register section, the following abbreviations are used:
RO
Read Only
ROC
RW
Read Write
R/W
Read Write. The value read may not be the last value written.
RW1C
RW1S
RWAC
WO
Write Only
HCI
System Bus
Memory
eMMC Host
Controller
DMA
eMMC
Bus
eMMC
Device
CQHCI
Software
Command
Queueing
Engine
Figure B.111 illustrates the structures of the CQHCI. As an example, in Figure , slot #0 stores a Data
Transfer Task with a TRAN descriptor, slot #1 stores a Data Transfer Task with a LINK descriptor,
pointing to a scatter/gather list. Slot #31 stores a DCMD descriptor.
CQE
CQE Register
Register Space
Space
Host
Host Memory
Memory Space
Space
Task Descriptor List
0
Task Descriptor
Transfer Descriptor (TRAN,E)
Data
Buffer
Task Descriptor
Task Descriptor
Transfer Descriptor
Data
Buffer
Data
Buffer
Data
Buffer
Data
Buffer
c) If command transmission is in progress (any other command): CQE will complete the command
transmission, receive and process the response, and then notify software.
After CQE has halted, the device waits for the next command, so it is effectively halted as well. CQE
notifies software that it is halted by setting the Halt bit on CQCTL register and, optionally by an interrupt
(CQIS.HAC). It is guaranteed that neither the device nor the host hardware (i.e., CQE) will initiate any
operation while CQE is in halt state.
When software wants the CQE to resume operation, it writes 0 to the Halt bit in CQCTL. When 0 is
written, CQE continues its normal operation, based on the current state,
In some error conditions, the Halt bit may never actually set, because a response has not been received
from the device. In these cases, software may assume the CQE is halted after waiting for a long enough
time. See more on error recovery in 0.
Description
Response Timeout
Handling in CQE
eMMC controller detects error, generates error interrupt, and
notifies CQE.
CQE stores Task IDs and Command Indices in CQTERRI (see
register description), and does not issue additional commands.
Time-out
Conditions
See 6.8.2
Error Response
(R mode / X
mode)
Software is expected to halt CQE every time it runs an error recovery procedure, even though CQE is
already stopped. When software has completed its procedure, it orders CQE to resume, by writing 0 the
Halt field of CQCTL. When instructed by software, CQE immediately resumes its operation, according to
its updated state.
In some error cases, a response may not be received from the device, so CQE will not set the Halt bit. In
such a case, software should wait a time-out which is long enough, based on the definitions in 6.8.2 and
assume the device is stuck.
Also in these cases, software may write 0 to the Halt field of CQCTL to order CQE to resume its
operation.
Block
Count
63:32
31:16
15
14
13
12
11
10:7
5:3
xxxx_xxxx
h
xxxxh
Reliabl
e Write
QBR
Priority
Data
Direction
Tag
request
Context
Forced
programming
Act=
101
Int
End
=1
Valid
=1
Attribute
127
Reserved
96
Implementation Specific
95
64
00000000h
Field Name
Bit
Loc.
Description
Valid
End
Int
Act
5:3
Forced Programming
Encoded
in CMD
CMD44
Context ID
10:7
As described in 6.6.30
CMD44
Tag Request
11
As described in 6.6.31
CMD44
Data Direction
12
CMD44
Priority
13
1 = high / 0= simple
CMD44
14
As described in B.3.4.
Reliable Write
15
As described in 6.6.11
CMD44
Block Count
31:16
CMD44
Block Address
63:32
CMD45
B.3.2
Length
63:32
31:16
xxxx_xxxxh
xxxxh
Reserved
15
Attribute
6
0000000000
5:3
Act
Int
End
Valid
Address
Length
127:96
95:32
31:16
xxxx_xxxxh
xxxxh
Reserved
15
Attribute
6
0000000000
5:3
Act
Int
End
Valid
Bit
Loc.
Description
Valid
End
Int
Act
5:3
Reserved
15:6
Reserved
Length
31:16
Address (32-bit)
63:32
Address (64-bit)
95:32
Reserved
127:96
When processing a DCMD Task Descriptor, the hardware sends a command to the device, with the index
and argument encoded in bits 21:16 and 63:32 of the Task Descriptor, respectively.
Table B.235 Task Descriptor Structure: Lower 64 bits (for DCMD tasks)
Command
Argument
63:32
Command Parameters
31
xxxx_xxxxh
25
24
Reserved
(0000000)
23
Response
Type
22
CMD
timing
16
CMD
index
15
14
Rsvd
(0)
QBR
13
Attribute
6
Reserved
(0000000)
Act=
101
Int
End
=1
Valid
=1
The Command Timing bit lets software control whether the command is issued during data transfer (e.g.,
CMD13) or only during idle time. Using the R1b bit, software informs hardware whether it should expect
a busy time following the commands response.
The Transfer Descriptor following a DCMD Task Descriptor is expected to be with ACT=NOP and END
bit set.
Task descriptor for direct-command task shall only be queued in task index 31 of the TDL.
Table B.236 Task Descriptor Fields (for DCMD tasks)
Field Name
Valid
End
Int
Bit
Loc.
0
1
2
Act
Reserved
Queue Barrier (QBR)
Reserved
CMD Index
CMD Timing
5:3
13:6
14
15
21:16
22
Response Type
24:23
Reserved
CMD Argument
31:25
63:32
Description
1 = The descriptor is effective and should be processed by hardware
0 = The descriptor line should not be used
Shall always be set to 1. Every Task Descriptor is standalone.
Indicates the interrupt generation policy required for this task.
1 = Hardware shall generate an interrupt upon the tasks completion
0 = Hardware shall not generate an interrupt upon the tasks completion.
Interrupt coalescing is not used with DCMD.
Shall be set to b101, to indicate this is a Task Descriptor
As described in B.2.6
The index of the command to be sent to device
1 = Command may be sent to device during data activity or busy time
0 = Command may not be sent to device during data activity or busy time
NOTE
This field indicates to the host controller the response expected to be received
from the device.
Value
Description
b00
No Response Expected
b01
Reserved
b10
R1, R4, R5
b11
R1b
NOTE
Symbol
Register Name
00h
CQVER
04h
CQCAP
08h
CQCFG
0Ch
CQCTL
10h
CQIS
14h
CQISTE
18h
CQISGE
1Ch
CQIC
20h
CQTDLBA
24h
CQTDLBAU
28h
CQTDBR
2Ch
CQTCN
Management
30h
CQDQS
34h
CQDPT
38h
CQTCLR
SQS and
DCMD
40h
CQSSC1
44h
CQSSC2
48h
CQCRDCT
50h
CQRMEM
54h
CQTERRI
58h
CQCRI
5Ch
CQCRA
Task
Control
Task
Submission
Interrupt
Offset
from
CQBASE
Error handling
Type
Reset
Description
31:12
RO
Reserved
11:08
RO
eMMC Major Version Number (digit left of decimal point), in BCD format
07:04
RO
e MMC Minor Version Number (digit right of decimal point), in BCD format
03:00
RO
e MMC Version Suffix (2nd digit right of decimal point), in BCD format
Type
Reset
31:16
RO
15:12
RO
Imp.
Spec.
Description
Reserved
Internal Timer Clock Frequency Multiplier (ITCFMUL)
ITCFMUL and ITCFVAL indicate the frequency of the clock used for interrupt
coalescing timer and for determining the SQS polling period. See ITCFVAL definition
for details.
Field Value Description:
0h = 0.001 MHz
1h = 0.01 MHz
2h = 0.1 MHz
3h = 1 MHz
4h = 10 MHz
Other values are reserved
11:10
RO
09:00
RO
Imp.
Spec.
Reserved
Internal Timer Clock Frequency Value (ITCFVAL)
ITCFMUL and ITCFVAL indicate the frequency of the clock used for interrupt
coalescing timer and for determining the polling period when using periodic
SEND_QUEUE_ STATUS (CMD13) polling.
The clock frequency is calculated as ITCFVAL* ITCFMUL.
For example, to encode 19.2 MHz, ITCFVAL shall be C0h (= 192 decimal) and
ITCFMUL shall be 2h (0.1 MHz): 192 * 0.1 MHz = 19.2 MHz.
Type
Reset
Description
31:13
RO
0000
Reserved
12
RW
11:09
RO
0000
08
RW
Reserved
Task Descriptor Size
This bit indicates whether the task descriptor size is 128 bits or 64 bits as detailed in Data
Structures section. This bit can only be configured when Command Queuing Enable bit
is 0 (command queuing is disabled)
Bit Value Description
1 = Task descriptor size is 128 bits
0 = Task descriptor size is 64 bits
07:01
RO
Reserved
00
RW
Type
Reset
Description
31:09
RO
0000
Reserved
08
RWAC
07:01
RO
Reserved
00
R/W
Halt
Host software shall write 1 to the bit when it wants to acquire software control over
the eMMC bus and disable CQE from issuing commands on the bus.
For example, issuing a Discard Task command (CMDQ_TASK_MGMT)
When software writes 1, CQE shall complete the ongoing task if such a task is in
progress.
Once the task is completed and CQE is in idle state, CQE shall not issue new
commands and shall indicate so to software by setting this bit to 1.
Software may poll on this bit until it is set to 1, and may only then send commands on
the eMMC bus.
In order to exit halt state (i.e., resume CQE activity), software shall clear this bit (write
0). Writing 0 when the value is already 0 shall have no effect.
Type
Reset
Description
31:04
Rsvd
Reserved
03
RW1C
02
RW1C
01
RW1C
00
RW1C
Type
Reset
Description
31:04
Rsvd
Reserved
03
RW
02
RW
01
RW
00
RW
Type
Reset
Description
31:04
Rsvd
Reserved
03
RW
02
RW
01
RW
00
RW
Type
RW
Reset
0
30:21
20
RO
RO
0
0
19:17
16
RO
WO
0
0
15
WO
14:13
12:08
RO
RW
0
0
Description
Interrupt Coalescing Enable/Disable:
When set to 0 by software, command responses are neither counted nor timed. Interrupts
are still triggered by completion of tasks with INT=1 in the Task Descriptor.
When set to 1, the interrupt coalescing mechanism is enabled and coalesced interrupts are
generated
Reserved
Interrupt Coalescing Status Bit (ICSB):
This bit indicates to software whether any tasks (with INT=0) have completed and counted
towards interrupt coalescing (i.e., ICSB is set if and only if IC counter > 0).
Bit Value Description
1 = At least one task completion has been counted (IC counter >0)
0 = No task completions have occurred since last counter reset (IC counter =0)
Reserved
Counter and Timer Reset(ICCTR):
When host driver writes 1, the interrupt coalescing timer and counter are reset
Interrupt Coalescing Counter Threshold Write Enable (ICCTHWEN):
When software writes 1, the value ICCTH is updated with the contents written at the same
cycle.
When software writes 0, the value in ICCTH is not updated.
NOTE
Write operations to ICCTH are only allowed when the task queue is empty.
Reserved
Interrupt Coalescing Counter Threshold (ICCTH):
Software uses this field to configure the number of task completions (only tasks with INT=0
in the Task Descriptor) which are required in order to generate an interrupt.
Counter Operation: As data transfer tasks with INT=0 complete, they are counted by CQE.
The counter is reset by software during the interrupt service routine.
The counter stops counting when it reaches the value configured in ICCTH.
The maximum allowed value is 31
NOTE When ICCTH is 0, task completions are not counted, and counting-based interrupts are
not generated.
07
WO
06:00
RW
In order to write to this field, the ICCTHWEN bit must be set at the same write operation.
Interrupt Coalescing Timeout Value Write Enable (ICTOVALWEN):
When software writes 1, the value ICTOVAL is updated with the contents written at the
same cycle.
When software writes 0, the value in ICTOVAL is not updated.
NOTE
Write operations to ICTOVAL are only allowed when the task queue is empty.
In order to write to this field, the ICTOVALWEN bit must be set at the same write
operation.
Type
Reset
31:00
RW
Description
Task Descriptor List Base Address (TDLBA)
This register stores the LSB bits (bits 31:0) of the byte address of the head of the Task
Descriptor List in system memory.
The size of the task descriptor list is 32 * (Task Descriptor size + Transfer Descriptor
size) as configured by Host driver.
This address shall be set on 1 KByte boundary: The lower 10 bits of this register shall be
set to 0 by software and shall be ignored by CQE.
B.4.11. CQBASE+24h: CQTDLBAU Command Queuing Task Descriptor List Base Address
Upper 32 Bits
This register is used for configuring the upper 32 bits of the byte address of the head of the Task
Descriptor List in the host memory.
Bit
Type
Reset
31:00
RW
Description
Task Descriptor List Base Address (TDLBA)
This register stores the MSB bits (bits 63:32) of the byte address of the head of the Task
Descriptor List in system memory.
The size of the task descriptor list is 32 * (Task Descriptor size + Transfer Descriptor
size) as configured by Host driver.
This register is reserved when using 32-bit addressing mode.
Type
Reset
31:00
RW1S
Type
Reset
31:00
RW1C
Description
Task Complete Notification
CQE shall set bit n of this register (at the same time it clears bit n of CQTDBR) when a
task execution is completed (with success or error).
When receiving interrupt for task completion, software may read this register to know
which tasks have finished. After reading this register, software may clear the relevant
bit fields by writing 1 to the corresponding bits.
Type
Reset
31:00
RO
Description
Device Queue Status
Every time the Host controller receives a queue status register (QSR) from the device, it
updates this register with the response of status command, i.e., the devices queue
status.
Type
Reset
31:00
RO
Description
Device Pending Tasks
Bit n of this register is set if and only if QUEUED_TASK_PARAMS (CMD44) and
QUEUED_TASK_ADDRESS (CMD45) were sent for this specific task and if this task
hasnt been executed yet.
CQE shall set this bit after receiving a successful response for CMD45. CQE shall clear
this bit after the task has completed execution.
Software needs to read this register in the task-discard procedure, when the controller is
halted, to determine if the task is queued in the device. If the task is queued, the driver
sends a CMDQ_TASK_MGMT (CMD48) to the device ordering it to discard the task.
Then software clears the task in the CQE. Only then the software orders CQE to resume
its operation using CQCTL register.
Type
Reset
31:00
RW
Description
Command Queuing Task Clear
Writing 1 to bit n of this register orders CQE to clear a task which software has
previously issued.
This bit can only be written when CQE is in Halt state as indicated in CQCFG register
Halt bit.
When software writes 1 to a bit in this register, CQE updates the value to 1, and starts
clearing the data structures related to the task. CQE clears the bit fields (sets a value of 0)
in CQTCLR and in CQTDBR once clear operation is complete.
Software should poll on the CQTCLR until it is cleared to verify clear operation was
complete.
Writing to this register only clears the task in the CQE and does not have impact on the
device. In order to discard the task in the device, host software shall send
CMDQ_TASK _MGMT while CQE is still in Halt state.
Host driver is not allowed to use this register to clear multiple tasks at the same time.
Clearing multiple tasks can be done using CQCTL register.
Writing 0 to a register bit shall have no impact.
Type
Reset
Description
31:20
RO
Reserved
19:16
RW
15:00
RW
h1000
Type
Reset
Description
31:16
RO
Reserved
15:00
RW
Type
Reset
31:00
RO
Description
Direct Command Last Response
This register contains the response of the command generated by the last directcommand (DCMD) task which was sent.
CQE shall update this register when it receives the response for a DCMD task.
This register is considered valid only after bit 31 of CQTDBR register is cleared by
CQE.
Type
31:00
RW
Reset
Description
Responses to CMD13 (SQS) encode the QSR, so they are ignored by this logic.
Type
Reset
Description
31
RO
30:29
RO
Reserved
28:24
RO
23:22
RO
Reserved
21:16
RO
15
RO
14:13
RO
Reserved
12:08
RO
07:06
RO
Reserved
05:00
RO
Type
Reset
Description
31:06
RO
Reserved
05:00
RO
Type
Reset
31:00
RO
Description
Last Command Response Argument
This field stores the argument of the last received command. CQE shall update the value
every time a command response is received.
B.5.
Command Queuing Interrupt in eMMC Host Controller
In order to make CQE compatible with existing eMMC host controllers, an interrupt bit is added to the
general interrupt register structure of the eMMC host controller.
Specifically, the added fields are the Command Queuing Interrupt support in bit 14 of the Interrupt,
Interrupt Status Enable, and Interrupt Signal Enable registers.
B.5.1. Normal Interrupt Status Register (Offset 030h)
Bit
Type
Reset
14
RW1C
Description
Command Queuing Interrupt
This interrupt is asserted when at least one of the bits in CQIS register is set. This
interrupt is cleared only by clearing the source interrupt in CQIS register.
Type
Reset
14
RW
Description
Command Queuing Status Enable
Type
Reset
14
RW
Description
Command Queuing Signal Enable
Following the steps below, the host hardware starts processing the task and sends it to the device. The
sequence for queuing a task, between the host software, CQE and the eMMC device, is given in Figure .
Host Memory
Host Software
CQE
eMMC Bus/Device
Host Software
CQE
DMA
eMMC Bus/Device
Data Block
Data Block
DMA
CMD13 (SQS)
Data Block
RESP
DMA
DMA
Interrupt (optional)
Select Next Task
CMD46/CMD47
Read CQTCN
Clear CQTCN
RESP
Data Block
Write 1 CQCTL to
Halt CQE
Poll on CQCTL or
wait for interrupt
CQTDBR[i]==1
CQDPT[i]==1
(task queued in device)
Send
CMDQ_TASK_MGMT
to discard task (use i as
Task ID)
Read
CQTDBRs bit for
task
Read
CQDPT
CQDPT[i]==0
(task not yet queued in device)
CQTDBR[i] == 0
(task has completed)
Write 1 to
CQCTCLR[i] to clear
task in CQE
Poll on CQCTCLR[i],
until it is 0
Write 0 to to
CQCTL to resume
operation
End
Major new items added to this standard are the eMMC definition, boot operation, sleep mode,
voltage configuration for eMMC, and reliable write. The chapter dedicated to SPI mode was
removed. Additional changes include:
Added new eMMC features to the feature list.
Boot operation mode was introduced.
Sector address definition for Erase and Write Protection was defined.
CID register setting was changed to recognize either eMMC or a Device.
The chapter defining SPI mode and all SPI-mode references were removed.
Sleep mode was introduced.
Voltage configuration for eMMC was defined.
Reliable Write was defined.
Input capacitance for eMMC was defined.
New bus timings (setup & Hold) were redefined.
Switch command definition was clarified.
Peak voltage on all signal lines are redefined for Device and defined for eMMC.
Major new items added to this standard are the Dual Data Rate mode, Multiple Partition Supports and
Security Enhancement. Additional changes include:
Introduce of Partition Management features with enhanced storage option.
Add Pre-idle reset arguments at CMD0.
Clarify CMD1 for Voltage Operation Range and Access mode validation.
Introduce of New Secure Features, Replay Protected Memory Block.
Introduce of dual data rate interface with maximum 104MB/s.
Introduce of Secure Erase, Secure TRIM.
Introduce of TRIM
Introduce of New Time value for Secure Erase, Trim.
Enhancement of write protection with H/W reset and non-reversible register setting.
Introduce of Replay Protected Memory Block and access control.
Alternative boot operation was changed as mandatory for device instead of device-optional.
Introduce of H/W reset signal.
Introduce New Extended CSD registers.
Clarify maximum density calculation from SEC_COUNT.
Clarify of tOSU timing for compatibility.
Major new items added to this standard are the Background Operations and High Priority
Interrupt. Additional changes include:
Added clarification for command operation in RPMB partition.
Added clarification of address sequence for user area including enhanced area and error condition for
partition configuration.
Added clarification for error behavior when partition is configured without setting
ERASE_GROUP_DEF and clarification for the device behavior in case the device received a
write/erase command when the condition of ERASE_GROUP_DEF bit has been changed from the
previous power cycle.
Add a clarification for C_SIZE and SEC_COUNT after configuring partitions.
Added Clarification for the configuration of boot and alternative boot operation.
Introduce of Enhanced Reliable Write.
Added clarification for LOCK_UNLOCK feature of the eMMC.
C.6.
Removed references to cards in the spec and made an embedded only spec
Removed stream write and read
Removed secure erase and Secure trim
Added HS200 mode
Added e2MMC which supports 2 additional internal voltage nodes and the optional cache command.
Added the Discard command
Added the Sanitize command
Added enhance host and device communication techniques to improve Performance:
o Extended partition types
o Packed commands
o Context IDs
o Data Tag
Added Enhance host and device communication techniques to improve Reliability: real time clock
and dynamic device capacity
Added Thermal Specification and Package Case Temperature
Allocated a region for vendor specific registers
Provided a path to move from a minimum 512 B access to a minimum 4 KB access
Updated boot protection to allow boot area protection to be set independently
Clarified operation for:
o DDR timing for CRC status, boot acknowledge, start bit and end bit timing
o Boot diagram
o CID and CSD in DDR mode
o Lock/unlock command password replacement
o Stop transmission
o RPMB
o Resistor value in 1.2 V mode
o SDR voltage range
Removed Errata Annex B
Introduced of HS400
o Data Strobe Line
Introduced Production State Awareness
Introduced Field Firmware Update
Added Sleep Notification in Power Off Notification
Introduced Device Health Report
Added Secure Removal Type
Added overshoot and undershoot
Added reference load for HS400
Added pre-amble and post-amble
Clarified RPMB address failure on Read operation.
Clarified I/O timing values
Edit to support Ver.5.0 in EXT_CSD_REV[192]
NOTE A host system should work properly considering future eMMC version. For example, a host system is
expected not to exit only due to the EXT_CSD_REV[192] value greater than 7 which will be used for next
eMMC revision.
JEDEC
The purpose of this form is to provide the Technical Committees of JEDEC with input from the industry
regarding usage of the subject standard. Individuals or companies are invited to submit comments to
JEDEC. All comments will be collected and dispersed to the appropriate committee(s).
If you can provide input, please complete this form and return to:
JEDEC
Attn: Publications Department
th
3103 North 10 Street
Suite 240 South
Arlington, VA 22201-2107
1.
Fax: 703.907.7583
Clause number
Too Rigid
In Error
Other
2.
3.
Submitted by
Name:
Company:
Phone:
E-mail:
Address:
City/State/Zip:
Date: