xref: /openbmc/qemu/docs/system/arm/imx8mp-evk.rst (revision a81193c3e9a8220862120d8d4114191f3899f4b3)
1NXP i.MX 8M Plus Evaluation Kit (``imx8mp-evk``)
2================================================
3
4The ``imx8mp-evk`` machine models the i.MX 8M Plus Evaluation Kit, based on an
5i.MX 8M Plus SoC.
6
7Supported devices
8-----------------
9
10The ``imx8mp-evk`` machine implements the following devices:
11
12 * Up to 4 Cortex-A53 cores
13 * Generic Interrupt Controller (GICv3)
14 * 4 UARTs
15 * 3 USDHC Storage Controllers
16 * Secure Non-Volatile Storage (SNVS) including an RTC
17 * Clock Tree
18
19Boot options
20------------
21
22The ``imx8mp-evk`` machine can start a Linux kernel directly using the standard
23``-kernel`` functionality.
24
25Direct Linux Kernel Boot
26''''''''''''''''''''''''
27
28Probably the easiest way to get started with a whole Linux system on the machine
29is to generate an image with Buildroot. Version 2024.11.1 is tested at the time
30of writing and involves three steps. First run the following commands in the
31toplevel directory of the Buildroot source tree:
32
33.. code-block:: bash
34
35  $ make freescale_imx8mpevk_defconfig
36  $ make
37
38Once finished successfully there is an ``output/image`` subfolder. Navigate into
39it and resize the SD card image to a power of two:
40
41.. code-block:: bash
42
43  $ qemu-img resize sdcard.img 256M
44
45Finally, the device tree needs to be patched with the following commands which
46will remove the ``cpu-idle-states`` properties from CPU nodes:
47
48.. code-block:: bash
49
50  $ dtc imx8mp-evk.dtb | sed '/cpu-idle-states/d' > imx8mp-evk-patched.dts
51  $ dtc imx8mp-evk-patched.dts -o imx8mp-evk-patched.dtb
52
53Now that everything is prepared the machine can be started as follows:
54
55.. code-block:: bash
56
57  $ qemu-system-aarch64 -M imx8mp-evk -smp 4 -m 3G \
58      -display none -serial null -serial stdio \
59      -kernel Image \
60      -dtb imx8mp-evk-patched.dtb \
61      -append "root=/dev/mmcblk2p2" \
62      -drive file=sdcard.img,if=sd,bus=2,format=raw,id=mmcblk2
63