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