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