a5dbb17507
The wiki and the web are curiously absent of the right runes to boot a vexpress model so I had to work from first principles to work it out. Use the more modern -drive notation so alternative backends can be used (unlike the hardwired -sd mode). Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Anders Roxell <anders.roxell@linaro.org> Message-Id: <20210202134001.25738-15-alex.bennee@linaro.org>
89 lines
3.0 KiB
ReStructuredText
89 lines
3.0 KiB
ReStructuredText
Arm Versatile Express boards (``vexpress-a9``, ``vexpress-a15``)
|
|
================================================================
|
|
|
|
QEMU models two variants of the Arm Versatile Express development
|
|
board family:
|
|
|
|
- ``vexpress-a9`` models the combination of the Versatile Express
|
|
motherboard and the CoreTile Express A9x4 daughterboard
|
|
- ``vexpress-a15`` models the combination of the Versatile Express
|
|
motherboard and the CoreTile Express A15x2 daughterboard
|
|
|
|
Note that as this hardware does not have PCI, IDE or SCSI,
|
|
the only available storage option is emulated SD card.
|
|
|
|
Implemented devices:
|
|
|
|
- PL041 audio
|
|
- PL181 SD controller
|
|
- PL050 keyboard and mouse
|
|
- PL011 UARTs
|
|
- SP804 timers
|
|
- I2C controller
|
|
- PL031 RTC
|
|
- PL111 LCD display controller
|
|
- Flash memory
|
|
- LAN9118 ethernet
|
|
|
|
Unimplemented devices:
|
|
|
|
- SP810 system control block
|
|
- PCI-express
|
|
- USB controller (Philips ISP1761)
|
|
- Local DAP ROM
|
|
- CoreSight interfaces
|
|
- PL301 AXI interconnect
|
|
- SCC
|
|
- System counter
|
|
- HDLCD controller (``vexpress-a15``)
|
|
- SP805 watchdog
|
|
- PL341 dynamic memory controller
|
|
- DMA330 DMA controller
|
|
- PL354 static memory controller
|
|
- BP147 TrustZone Protection Controller
|
|
- TrustZone Address Space Controller
|
|
|
|
Other differences between the hardware and the QEMU model:
|
|
|
|
- QEMU will default to creating one CPU unless you pass a different
|
|
``-smp`` argument
|
|
- QEMU allows the amount of RAM provided to be specified with the
|
|
``-m`` argument
|
|
- QEMU defaults to providing a CPU which does not provide either
|
|
TrustZone or the Virtualization Extensions: if you want these you
|
|
must enable them with ``-machine secure=on`` and ``-machine
|
|
virtualization=on``
|
|
- QEMU provides 4 virtio-mmio virtio transports; these start at
|
|
address ``0x10013000`` for ``vexpress-a9`` and at ``0x1c130000`` for
|
|
``vexpress-a15``, and have IRQs from 40 upwards. If a dtb is
|
|
provided on the command line then QEMU will edit it to include
|
|
suitable entries describing these transports for the guest.
|
|
|
|
Booting a Linux kernel
|
|
----------------------
|
|
|
|
Building a current Linux kernel with ``multi_v7_defconfig`` should be
|
|
enough to get something running. Nowadays an out-of-tree build is
|
|
recommended (and also useful if you build a lot of different targets).
|
|
In the following example $BLD points to the build directory and $SRC
|
|
points to the root of the Linux source tree. You can drop $SRC if you
|
|
are running from there.
|
|
|
|
.. code-block:: bash
|
|
|
|
$ make O=$BLD -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- multi_v7_defconfig
|
|
$ make O=$BLD -C $SRC ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
|
|
|
|
By default you will want to boot your rootfs off the sdcard interface.
|
|
Your rootfs will need to be padded to the right size. With a suitable
|
|
DTB you could also add devices to the virtio-mmio bus.
|
|
|
|
.. code-block:: bash
|
|
|
|
$ qemu-system-arm -cpu cortex-a15 -smp 4 -m 4096 \
|
|
-machine type=vexpress-a15 -serial mon:stdio \
|
|
-drive if=sd,driver=file,filename=armel-rootfs.ext4 \
|
|
-kernel zImage \
|
|
-dtb vexpress-v2p-ca15-tc1.dtb \
|
|
-append "console=ttyAMA0 root=/dev/mmcblk0 ro"
|