mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
target-arm queue:
* Support gdbstub (guest debug) in HVF * xnlx-versal: Support CANFD controller * bpim2u: New board model: Banana Pi BPI-M2 Ultra * Emulate FEAT_LSE2 * allow DC CVA[D]P in user mode emulation * trap DCC access in user mode emulation -----BEGIN PGP SIGNATURE----- iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmR/AKUZHHBldGVyLm1h eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3jzIEACNepQGY44yPhrEG+wD4WAB fH670KI33HcsFd2rGsC369gcssQbRIW/29reOzNhRMuol+kHI6OFaONpuKSdO0Rz TLVIsnT2Uq8KwbYfLtDQt5knj027amPy75d4re8wIK1eZB4dOIHysqAvQrJYeync 9obKku8xXGLwZh/mYHoVgHcZU0cPJO9nri39n1tV3JUBsgmqEURjzbZrMcF+yMX7 bUzOYQvC1Iedmo+aWfx43u82AlNQFz1lsqmnQj7Z5rvv0HT+BRF5WzVMP0qRh5+Z njkqmBH9xb9kkgeHmeMvHpWox+J+obeSmVg/4gDNlJpThmpuU0Vr7EXUN3MBQlV9 lhyy6zrTwC/BToiQqdT2dnpao9FzXy5exfnqi/py5IuqfjAzSO+p61LlPPZ4cJri pCK4yq2gzQXYfrlZkUJipvRMH8Xa4IdQx+w7lXrQoJdduF4/+6aJW/GAWSu0e7eC zgBwaJjI7ENce8ixJnuEFUxUnaBo8dl72a0PGA1UU8PL+cJNOIpyhPk4goWQprdn iFF4ZnjhBRZ2gk/4HGD9u5Vo2lNqP93YS5QhkGkF+HJsBmcOZgidIUpfHhPQvvHO Np196T2cAETCWGV1xG4CaTpxN2ndRReq3C0/mzfhIbwhXEACtvAiSlO4KB8t6pJj MzinCABXHcovJbGbxZ9j6w== =8SdN -----END PGP SIGNATURE----- Merge tag 'pull-target-arm-20230606' of https://git.linaro.org/people/pmaydell/qemu-arm into staging target-arm queue: * Support gdbstub (guest debug) in HVF * xnlx-versal: Support CANFD controller * bpim2u: New board model: Banana Pi BPI-M2 Ultra * Emulate FEAT_LSE2 * allow DC CVA[D]P in user mode emulation * trap DCC access in user mode emulation # -----BEGIN PGP SIGNATURE----- # # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmR/AKUZHHBldGVyLm1h # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3jzIEACNepQGY44yPhrEG+wD4WAB # fH670KI33HcsFd2rGsC369gcssQbRIW/29reOzNhRMuol+kHI6OFaONpuKSdO0Rz # TLVIsnT2Uq8KwbYfLtDQt5knj027amPy75d4re8wIK1eZB4dOIHysqAvQrJYeync # 9obKku8xXGLwZh/mYHoVgHcZU0cPJO9nri39n1tV3JUBsgmqEURjzbZrMcF+yMX7 # bUzOYQvC1Iedmo+aWfx43u82AlNQFz1lsqmnQj7Z5rvv0HT+BRF5WzVMP0qRh5+Z # njkqmBH9xb9kkgeHmeMvHpWox+J+obeSmVg/4gDNlJpThmpuU0Vr7EXUN3MBQlV9 # lhyy6zrTwC/BToiQqdT2dnpao9FzXy5exfnqi/py5IuqfjAzSO+p61LlPPZ4cJri # pCK4yq2gzQXYfrlZkUJipvRMH8Xa4IdQx+w7lXrQoJdduF4/+6aJW/GAWSu0e7eC # zgBwaJjI7ENce8ixJnuEFUxUnaBo8dl72a0PGA1UU8PL+cJNOIpyhPk4goWQprdn # iFF4ZnjhBRZ2gk/4HGD9u5Vo2lNqP93YS5QhkGkF+HJsBmcOZgidIUpfHhPQvvHO # Np196T2cAETCWGV1xG4CaTpxN2ndRReq3C0/mzfhIbwhXEACtvAiSlO4KB8t6pJj # MzinCABXHcovJbGbxZ9j6w== # =8SdN # -----END PGP SIGNATURE----- # gpg: Signature made Tue 06 Jun 2023 02:47:17 AM PDT # gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE # gpg: issuer "peter.maydell@linaro.org" # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full] # gpg: aka "Peter Maydell <pmaydell@gmail.com>" [full] # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [full] # gpg: aka "Peter Maydell <peter@archaic.org.uk>" [unknown] * tag 'pull-target-arm-20230606' of https://git.linaro.org/people/pmaydell/qemu-arm: (42 commits) target/arm: trap DCC access in user mode emulation tests/tcg/aarch64: add DC CVA[D]P tests target/arm: allow DC CVA[D]P in user mode emulation target/arm: Enable FEAT_LSE2 for -cpu max tests/tcg/multiarch: Adjust sigbus.c tests/tcg/aarch64: Use stz2g in mte-7.c target/arm: Move mte check for store-exclusive target/arm: Relax ordered/atomic alignment checks for LSE2 target/arm: Add SCTLR.nAA to TBFLAG_A64 target/arm: Check alignment in helper_mte_check target/arm: Pass single_memop to gen_mte_checkN target/arm: Pass memop to gen_mte_check1* target/arm: Hoist finalize_memop out of do_fp_{ld, st} target/arm: Hoist finalize_memop out of do_gpr_{ld, st} target/arm: Load/store integer pair with one tcg operation target/arm: Sink gen_mte_check1 into load/store_exclusive target/arm: Use tcg_gen_qemu_{ld, st}_i128 in gen_sve_{ld, st}r target/arm: Use tcg_gen_qemu_st_i128 for STZG, STZ2G target/arm: Use tcg_gen_qemu_{st, ld}_i128 for do_fp_{st, ld} target/arm: Use tcg_gen_qemu_ld_i128 for LDXP ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
f5e6786de4
63 changed files with 7386 additions and 733 deletions
139
docs/system/arm/bananapi_m2u.rst
Normal file
139
docs/system/arm/bananapi_m2u.rst
Normal file
|
@ -0,0 +1,139 @@
|
|||
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
|
||||
* TWI (I2C)
|
||||
|
||||
Limitations
|
||||
"""""""""""
|
||||
|
||||
Currently, Banana Pi M2U does *not* support the following features:
|
||||
|
||||
- Graphical output via HDMI, GPU and/or the Display Engine
|
||||
- Audio output
|
||||
- Hardware Watchdog
|
||||
- Real Time Clock
|
||||
- USB 2.0 interfaces
|
||||
|
||||
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
|
|
@ -50,6 +50,7 @@ the following architecture extensions:
|
|||
- FEAT_LRCPC (Load-acquire RCpc instructions)
|
||||
- FEAT_LRCPC2 (Load-acquire RCpc instructions v2)
|
||||
- FEAT_LSE (Large System Extensions)
|
||||
- FEAT_LSE2 (Large System Extensions v2)
|
||||
- FEAT_LVA (Large Virtual Address space)
|
||||
- FEAT_MTE (Memory Tagging Extension)
|
||||
- FEAT_MTE2 (Memory Tagging Extension)
|
||||
|
|
|
@ -34,6 +34,7 @@ Implemented devices:
|
|||
- DDR memory
|
||||
- BBRAM (36 bytes of Battery-backed RAM)
|
||||
- eFUSE (3072 bytes of one-time field-programmable bit array)
|
||||
- 2 CANFDs
|
||||
|
||||
QEMU does not yet model any other devices, including the PL and the AI Engine.
|
||||
|
||||
|
@ -224,3 +225,33 @@ To use a different index value, N, from default of 1, add:
|
|||
|
||||
Better yet, do not use actual product data when running guest image
|
||||
on this Xilinx Versal Virt board.
|
||||
|
||||
Using CANFDs for Versal Virt
|
||||
""""""""""""""""""""""""""""
|
||||
Versal CANFD controller is developed based on SocketCAN and QEMU CAN bus
|
||||
implementation. Bus connection and socketCAN connection for each CAN module
|
||||
can be set through command lines.
|
||||
|
||||
To connect both CANFD0 and CANFD1 on the same bus:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-object can-bus,id=canbus -machine canbus0=canbus -machine canbus1=canbus
|
||||
|
||||
To connect CANFD0 and CANFD1 to separate buses:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-object can-bus,id=canbus0 -object can-bus,id=canbus1 \
|
||||
-machine canbus0=canbus0 -machine canbus1=canbus1
|
||||
|
||||
The SocketCAN interface can connect to a Physical or a Virtual CAN interfaces on
|
||||
the host machine. Please check this document to learn about CAN interface on
|
||||
Linux: docs/system/devices/can.rst
|
||||
|
||||
To connect CANFD0 and CANFD1 to host machine's CAN interface can0:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-object can-bus,id=canbus -machine canbus0=canbus -machine canbus1=canbus
|
||||
-object can-host-socketcan,id=canhost0,if=can0,canbus=canbus
|
||||
|
|
|
@ -83,6 +83,7 @@ undocumented; you can get a complete list by running
|
|||
arm/versatile
|
||||
arm/vexpress
|
||||
arm/aspeed
|
||||
arm/bananapi_m2u.rst
|
||||
arm/sabrelite
|
||||
arm/digic
|
||||
arm/cubieboard
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue