docs: Add eMMC device model description
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <b9c3ff21e7170fef5d0e7d08698a113d2a64e649.1762261430.git.jan.kiszka@siemens.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
2f00451fbe
commit
45423e2470
2 changed files with 56 additions and 0 deletions
|
|
@ -88,6 +88,7 @@ Emulated Devices
|
|||
devices/canokey.rst
|
||||
devices/ccid.rst
|
||||
devices/cxl.rst
|
||||
devices/emmc.rst
|
||||
devices/igb.rst
|
||||
devices/ivshmem-flat.rst
|
||||
devices/ivshmem.rst
|
||||
|
|
|
|||
55
docs/system/devices/emmc.rst
Normal file
55
docs/system/devices/emmc.rst
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
.. 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue