mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 04:46:01 +01:00
arm: riscv: qemu: Explain how to extract the generated dt
QEMU currently generates a devicetree for use with U-Boot. Explain how to obtain it. Also explain how to merge it to produce a devicetree with the U-Boot features included. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
6d7636c946
commit
c3c1614537
@ -21,6 +21,9 @@ The 'virt' platform provides the following as the basic functionality:
|
|||||||
|
|
||||||
Additionally, a number of optional peripherals can be added to the PCI bus.
|
Additionally, a number of optional peripherals can be added to the PCI bus.
|
||||||
|
|
||||||
|
See :doc:`../../develop/devicetree/dt_qemu` for information on how to see
|
||||||
|
the devicetree actually generated by QEMU.
|
||||||
|
|
||||||
Building U-Boot
|
Building U-Boot
|
||||||
---------------
|
---------------
|
||||||
Set the CROSS_COMPILE environment variable as usual, and run:
|
Set the CROSS_COMPILE environment variable as usual, and run:
|
||||||
|
@ -13,6 +13,9 @@ The QEMU virt machine models a generic RISC-V virtual machine with support for
|
|||||||
the VirtIO standard networking and block storage devices. It has CLINT, PLIC,
|
the VirtIO standard networking and block storage devices. It has CLINT, PLIC,
|
||||||
16550A UART devices in addition to VirtIO and it also uses device-tree to pass
|
16550A UART devices in addition to VirtIO and it also uses device-tree to pass
|
||||||
configuration information to guest software. It implements RISC-V privileged
|
configuration information to guest software. It implements RISC-V privileged
|
||||||
|
|
||||||
|
See :doc:`../../develop/devicetree/dt_qemu` for information on how to see
|
||||||
|
the devicetree actually generated by QEMU.
|
||||||
architecture spec v1.10.
|
architecture spec v1.10.
|
||||||
|
|
||||||
Building U-Boot
|
Building U-Boot
|
||||||
|
48
doc/develop/devicetree/dt_qemu.rst
Normal file
48
doc/develop/devicetree/dt_qemu.rst
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
Devicetree in QEMU
|
||||||
|
==================
|
||||||
|
|
||||||
|
For QEMU on ARM, RISC-V and one PPC target, the devicetree is created on-the-fly
|
||||||
|
by QEMU. It is intended for use in Linux but can be used by U-Boot also, so long
|
||||||
|
as any nodes/properties needed by U-Boot are merged in.
|
||||||
|
|
||||||
|
When `CONFIG_OF_BOARD` is enabled
|
||||||
|
|
||||||
|
|
||||||
|
Obtaining the QEMU devicetree
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
Where QEMU generates its own devicetree to pass to U-Boot tou can use
|
||||||
|
`-dtb u-boot.dtb` to force QEMU to use U-Boot's in-tree version.
|
||||||
|
|
||||||
|
To obtain the devicetree that qemu generates, add `-machine dumpdtb=qemu.dtb`,
|
||||||
|
e.g.::
|
||||||
|
|
||||||
|
qemu-system-arm -machine virt -machine dumpdtb=qemu.dtb
|
||||||
|
|
||||||
|
qemu-system-aarch64 -machine virt -machine dumpdtb=qemu.dtb
|
||||||
|
|
||||||
|
qemu-system-riscv64 -machine virt -machine dumpdtb=qemu.dtb
|
||||||
|
|
||||||
|
|
||||||
|
Merging in U-Boot nodes/properties
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
Various U-Boot features require nodes and properties in the U-Boot devicetree
|
||||||
|
and at present QEMU is unaware of these. To use these you must manually merge
|
||||||
|
in the appropriate pieces.
|
||||||
|
|
||||||
|
One way to do this is with dtc. This command runs dtc on each .dtb file in turn,
|
||||||
|
to produce a text file. It drops the duplicate header on the qemu one. Then it
|
||||||
|
joins them up and runs them through dtc to compile the output::
|
||||||
|
|
||||||
|
qemu-system-arm -machine virt -machine dumpdtb=qemu.dtb
|
||||||
|
cat <(dtc -I dtb qemu.dtb) <(dtc -I dtb u-boot.dtb |grep -v /dts-v1/) |dtc - -o merged.dtb
|
||||||
|
|
||||||
|
You can then run qemu with the merged devicetree, e.g.::
|
||||||
|
|
||||||
|
qemu-system-arm -machine virt -nographic -bios u-boot.bin -dtb merged.dtb
|
||||||
|
|
||||||
|
Note that there seems to be a bug in some versions of qemu where the output of
|
||||||
|
dumpdtb does not quite match what is provided to U-Boot.
|
@ -11,3 +11,4 @@ build-time and runtime configuration.
|
|||||||
|
|
||||||
intro
|
intro
|
||||||
control
|
control
|
||||||
|
dt_qemu
|
||||||
|
Loading…
x
Reference in New Issue
Block a user