
* Update to QEMU v9.0.0 --------- Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> Signed-off-by: Ido Plat <ido.plat@ibm.com> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Gregory Price <gregory.price@memverge.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Lorenz Brun <lorenz@brun.one> Signed-off-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Sven Schnelle <svens@stackframe.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Benjamin Gray <bgray@linux.ibm.com> Signed-off-by: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Glenn Miles <milesg@linux.ibm.com> Signed-off-by: Oleg Sviridov <oleg.sviridov@red-soft.ru> Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Signed-off-by: Yajun Wu <yajunw@nvidia.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Pierre-Clément Tosi <ptosi@google.com> Signed-off-by: Lei Wang <lei4.wang@intel.com> Signed-off-by: Wei Wang <wei.w.wang@intel.com> Signed-off-by: Martin Hundebøll <martin@geanix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Wafer <wafer@jaguarmicro.com> Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com> Signed-off-by: Zack Buhman <zack@buhman.org> Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Yuquan Wang wangyuquan1236@phytium.com.cn Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Signed-off-by: Cindy Lu <lulu@redhat.com> Co-authored-by: Peter Maydell <peter.maydell@linaro.org> Co-authored-by: Fabiano Rosas <farosas@suse.de> Co-authored-by: Peter Xu <peterx@redhat.com> Co-authored-by: Thomas Huth <thuth@redhat.com> Co-authored-by: Cédric Le Goater <clg@redhat.com> Co-authored-by: Zheyu Ma <zheyuma97@gmail.com> Co-authored-by: Ido Plat <ido.plat@ibm.com> Co-authored-by: Ilya Leoshkevich <iii@linux.ibm.com> Co-authored-by: Markus Armbruster <armbru@redhat.com> Co-authored-by: Marc-André Lureau <marcandre.lureau@redhat.com> Co-authored-by: Paolo Bonzini <pbonzini@redhat.com> Co-authored-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Co-authored-by: David Hildenbrand <david@redhat.com> Co-authored-by: Kevin Wolf <kwolf@redhat.com> Co-authored-by: Stefan Reiter <s.reiter@proxmox.com> Co-authored-by: Fiona Ebner <f.ebner@proxmox.com> Co-authored-by: Gregory Price <gregory.price@memverge.com> Co-authored-by: Lorenz Brun <lorenz@brun.one> Co-authored-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Co-authored-by: Philippe Mathieu-Daudé <philmd@linaro.org> Co-authored-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Co-authored-by: BALATON Zoltan <balaton@eik.bme.hu> Co-authored-by: Igor Mammedov <imammedo@redhat.com> Co-authored-by: Akihiko Odaki <akihiko.odaki@daynix.com> Co-authored-by: Richard Henderson <richard.henderson@linaro.org> Co-authored-by: Sven Schnelle <svens@stackframe.org> Co-authored-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Co-authored-by: Helge Deller <deller@kernel.org> Co-authored-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Co-authored-by: Benjamin Gray <bgray@linux.ibm.com> Co-authored-by: Nicholas Piggin <npiggin@gmail.com> Co-authored-by: Avihai Horon <avihaih@nvidia.com> Co-authored-by: Michael Tokarev <mjt@tls.msk.ru> Co-authored-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Co-authored-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Dayu Liu <liu.dayu@zte.com.cn> Co-authored-by: Zhao Liu <zhao1.liu@intel.com> Co-authored-by: Glenn Miles <milesg@linux.vnet.ibm.com> Co-authored-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Co-authored-by: Yajun Wu <yajunw@nvidia.com> Co-authored-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Co-authored-by: Pierre-Clément Tosi <ptosi@google.com> Co-authored-by: Wei Wang <wei.w.wang@intel.com> Co-authored-by: Martin Hundebøll <martin@geanix.com> Co-authored-by: Michael S. Tsirkin <mst@redhat.com> Co-authored-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Co-authored-by: Wafer <wafer@jaguarmicro.com> Co-authored-by: lyx634449800 <yuxue.liu@jaguarmicro.com> Co-authored-by: Gerd Hoffmann <kraxel@redhat.com> Co-authored-by: Nguyen Dinh Phi <phind.uet@gmail.com> Co-authored-by: Zack Buhman <zack@buhman.org> Co-authored-by: Keith Packard <keithp@keithp.com> Co-authored-by: Yuquan Wang <wangyuquan1236@phytium.com.cn> Co-authored-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Co-authored-by: Cindy Lu <lulu@redhat.com>
141 lines
4.6 KiB
ReStructuredText
141 lines
4.6 KiB
ReStructuredText
Banana Pi BPI-M2U (``bpim2u``)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Banana Pi BPI-M2 Ultra is a quad-core mini single board computer built with
|
|
Allwinner A40i/R40/V40 SoC. It features 2GB of RAM and 8GB eMMC. It also
|
|
has onboard WiFi and BT. On the ports side, the BPI-M2 Ultra has 2 USB A
|
|
2.0 ports, 1 USB OTG port, 1 HDMI port, 1 audio jack, a DC power port,
|
|
and last but not least, a SATA port.
|
|
|
|
Supported devices
|
|
"""""""""""""""""
|
|
|
|
The Banana Pi M2U machine supports the following devices:
|
|
|
|
* SMP (Quad Core Cortex-A7)
|
|
* Generic Interrupt Controller configuration
|
|
* SRAM mappings
|
|
* SDRAM controller
|
|
* Timer device (re-used from Allwinner A10)
|
|
* UART
|
|
* SD/MMC storage controller
|
|
* EMAC ethernet
|
|
* GMAC ethernet
|
|
* Clock Control Unit
|
|
* SATA
|
|
* TWI (I2C)
|
|
* USB 2.0
|
|
* Hardware Watchdog
|
|
|
|
Limitations
|
|
"""""""""""
|
|
|
|
Currently, Banana Pi M2U does *not* support the following features:
|
|
|
|
- Graphical output via HDMI, GPU and/or the Display Engine
|
|
- Audio output
|
|
- Real Time Clock
|
|
|
|
Also see the 'unimplemented' array in the Allwinner R40 SoC module
|
|
for a complete list of unimplemented I/O devices: ``./hw/arm/allwinner-r40.c``
|
|
|
|
Boot options
|
|
""""""""""""
|
|
|
|
The Banana Pi M2U machine can start using the standard -kernel functionality
|
|
for loading a Linux kernel or ELF executable. Additionally, the Banana Pi M2U
|
|
machine can also emulate the BootROM which is present on an actual Allwinner R40
|
|
based SoC, which loads the bootloader from a SD card, specified via the -sd
|
|
argument to qemu-system-arm.
|
|
|
|
Running mainline Linux
|
|
""""""""""""""""""""""
|
|
|
|
To build a Linux mainline kernel that can be booted by the Banana Pi M2U machine,
|
|
simply configure the kernel using the sunxi_defconfig configuration:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make mrproper
|
|
$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make sunxi_defconfig
|
|
|
|
To boot the newly build linux kernel in QEMU with the Banana Pi M2U machine, use:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ qemu-system-arm -M bpim2u -nographic \
|
|
-kernel /path/to/linux/arch/arm/boot/zImage \
|
|
-append 'console=ttyS0,115200' \
|
|
-dtb /path/to/linux/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dtb
|
|
|
|
Banana Pi M2U images
|
|
""""""""""""""""""""
|
|
|
|
Note that the mainline kernel does not have a root filesystem. You can choose
|
|
to build you own image with buildroot using the bananapi_m2_ultra_defconfig.
|
|
Also see https://buildroot.org for more information.
|
|
|
|
Another possibility is to run an OpenWrt image for Banana Pi M2U which
|
|
can be downloaded from:
|
|
|
|
https://downloads.openwrt.org/releases/22.03.3/targets/sunxi/cortexa7/
|
|
|
|
When using an image as an SD card, it must be resized to a power of two. This can be
|
|
done with the ``qemu-img`` command. It is recommended to only increase the image size
|
|
instead of shrinking it to a power of two, to avoid loss of data. For example,
|
|
to prepare a downloaded Armbian image, first extract it and then increase
|
|
its size to one gigabyte as follows:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ qemu-img resize \
|
|
openwrt-22.03.3-sunxi-cortexa7-sinovoip_bananapi-m2-ultra-ext4-sdcard.img \
|
|
1G
|
|
|
|
Instead of providing a custom Linux kernel via the -kernel command you may also
|
|
choose to let the Banana Pi M2U machine load the bootloader from SD card, just like
|
|
a real board would do using the BootROM. Simply pass the selected image via the -sd
|
|
argument and remove the -kernel, -append, -dbt and -initrd arguments:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ qemu-system-arm -M bpim2u -nic user -nographic \
|
|
-sd openwrt-22.03.3-sunxi-cortexa7-sinovoip_bananapi-m2-ultra-ext4-sdcard.img
|
|
|
|
Running U-Boot
|
|
""""""""""""""
|
|
|
|
U-Boot mainline can be build and configured using the Bananapi_M2_Ultra_defconfig
|
|
using similar commands as describe above for Linux. Note that it is recommended
|
|
for development/testing to select the following configuration setting in U-Boot:
|
|
|
|
Device Tree Control > Provider for DTB for DT Control > Embedded DTB
|
|
|
|
The BootROM of allwinner R40 loading u-boot from the 8KiB offset of sdcard.
|
|
Let's create an bootable disk image:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ dd if=/dev/zero of=sd.img bs=32M count=1
|
|
$ dd if=u-boot-sunxi-with-spl.bin of=sd.img bs=1k seek=8 conv=notrunc
|
|
|
|
And then boot it.
|
|
|
|
.. code-block:: bash
|
|
|
|
$ qemu-system-arm -M bpim2u -nographic -sd sd.img
|
|
|
|
Banana Pi M2U integration tests
|
|
"""""""""""""""""""""""""""""""
|
|
|
|
The Banana Pi M2U machine has several integration tests included.
|
|
To run the whole set of tests, build QEMU from source and simply
|
|
provide the following command:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ cd qemu-build-dir
|
|
$ AVOCADO_ALLOW_LARGE_STORAGE=yes tests/venv/bin/avocado \
|
|
--verbose --show=app,console run -t machine:bpim2u \
|
|
../tests/avocado/boot_linux_console.py
|