mirror of https://gitlab.com/qemu-project/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.2 KiB
ReStructuredText
56 lines
2.2 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
==============
|
|
eMMC Emulation
|
|
==============
|
|
|
|
Besides SD card emulation, QEMU also offers an eMMC model as found on many
|
|
embedded boards. An eMMC, just like an SD card, is connected to the machine
|
|
via an SDHCI controller.
|
|
|
|
Create eMMC Images
|
|
==================
|
|
|
|
A recent eMMC consists of 4 partitions: 2 boot partitions, 1 Replay protected
|
|
Memory Block (RPMB), and the user data area. QEMU expects backing images for
|
|
the eMMC to contain those partitions concatenated in exactly that order.
|
|
However, the boot partitions as well as the RPMB might be absent if their sizes
|
|
are configured to zero.
|
|
|
|
The eMMC specification defines alignment constraints for the partitions. The
|
|
two boot partitions must be of the same size. Furthermore, boot and RPMB
|
|
partitions must be multiples of 128 KB with a maximum of 32640 KB for each
|
|
boot partition and 16384K for the RPMB partition.
|
|
|
|
The alignment constrain of the user data area depends on its size. Up to 2
|
|
GByte, the size must be a power of 2. From 2 GByte onward, the size has to be
|
|
multiples of 512 byte.
|
|
|
|
QEMU is enforcing those alignment rules before instantiating the device.
|
|
Therefore, the provided image has to strictly follow them as well. The helper
|
|
script ``scripts/mkemmc.sh`` can be used to create compliant images, with or
|
|
without pre-filled partitions. E.g., to create an eMMC image from a firmware
|
|
image and an OS image with an empty 2 MByte RPMB, use the following command:
|
|
|
|
.. code-block:: console
|
|
|
|
scripts/mkemmc.sh -b firmware.img -r /dev/zero:2M os.img emmc.img
|
|
|
|
This will take care of rounding up the partition sizes to the next valid value
|
|
and will leave the RPMB and the second boot partition empty (zeroed).
|
|
|
|
Adding eMMC Devices
|
|
===================
|
|
|
|
An eMMC is either automatically created by a machine model (e.g. Aspeed boards)
|
|
or can be user-created when using a PCI-attached SDHCI controller. To
|
|
instantiate the eMMC image from the example above in a machine without other
|
|
SDHCI controllers while assuming that the firmware needs a boot partitions of
|
|
1 MB, use the following options:
|
|
|
|
.. code-block:: console
|
|
|
|
-drive file=emmc.img,if=none,format=raw,id=emmc-img
|
|
-device sdhci-pci
|
|
-device emmc,drive=emmc-img,boot-partition-size=1048576,rpmb-partition-size=2097152
|