From linux-sunxi.org
Jump to navigation Jump to search

eMMC ("embedded MMC") is compact solid-state storage in the form of small on-board devices that adhere to the MulitMediaCard standard. See Wikipedia for more information.

From a practical point of view - and for the sake of simplicity - you may think of eMMC as an "onboard SD card". It follows the same bus protocol and uses a very similar electrical protocol, though at potentially different voltages. Most eMMC devices use 8 data lines (in contrast to the 4 on most SD cards), also eMMC defines new speed modes (DDR50, HS200, HS400). This leads to maximum channel data rates of 104, 200 and 400 MByte/s, respectively. However many inexpensive eMMC chips are restricted by the data rate of the actual flash chip, which typically severely limits especially the write speed (below 10MB/s in chips with smaller capacities like 8 or 16 GB).

Existing MMC drivers (in Linux and U-Boot) will work for both ('removable') SD cards and ('fixed') eMMC storage. The Linux driver for the Allwinner MMC controller supports up to HS200.

Another difference between eMMC and SD lies in the support for hardware partitions in eMMC. Though the four user partitions are rarely used, the two boot partitions are useful, as the eMMC standard defines simple boot protocols (supported by recent Allwinner BROMs). One advantage is to be able to store the firmware separately from the usual block device, and to allow write-protecting it. This prevents the firmware to be accidentally overwritten by partitioning tools, for instance. Instructions for installing and using the boot partitions are given on the Bootable_eMMC page.