summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorGuEe-GUI <[email protected]>2026-06-10 23:52:31 +0800
committerRbb666 <[email protected]>2026-06-15 10:00:57 +0800
commitea5a974305739cd0daaca89ba8f2fa3563b47c3f (patch)
treeec125291be3eb26d35314dcf9a771ec23f982e12 /bsp
parentb2b3331fd584576b4424448e59e9a94d4ff7f355 (diff)
[bsp][qemu-virt64-aarch64] add DM config and docs
Signed-off-by: GuEe-GUI <[email protected]>
Diffstat (limited to 'bsp')
-rw-r--r--bsp/qemu-virt64-aarch64/.config101
-rw-r--r--bsp/qemu-virt64-aarch64/README.md409
-rw-r--r--bsp/qemu-virt64-aarch64/README_zh.md404
-rw-r--r--bsp/qemu-virt64-aarch64/applications/SConscript2
-rwxr-xr-xbsp/qemu-virt64-aarch64/applications/camera.c12
-rwxr-xr-xbsp/qemu-virt64-aarch64/qemu-device-camera.c13
-rwxr-xr-xbsp/qemu-virt64-aarch64/qemu.py17
-rw-r--r--bsp/qemu-virt64-aarch64/rtconfig.h48
8 files changed, 864 insertions, 142 deletions
diff --git a/bsp/qemu-virt64-aarch64/.config b/bsp/qemu-virt64-aarch64/.config
index 9aa0a43b0c..a0bd1c6132 100644
--- a/bsp/qemu-virt64-aarch64/.config
+++ b/bsp/qemu-virt64-aarch64/.config
@@ -106,7 +106,7 @@
# end of rt_strnlen options
# end of klibc options
-CONFIG_RT_NAME_MAX=16
+CONFIG_RT_NAME_MAX=24
# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
# CONFIG_RT_USING_NANO is not set
# CONFIG_RT_USING_SMART is not set
@@ -131,7 +131,8 @@ CONFIG_RT_USING_TIMER_SOFT=y
CONFIG_RT_TIMER_THREAD_PRIO=4
CONFIG_RT_TIMER_THREAD_STACK_SIZE=8192
# CONFIG_RT_USING_TIMER_ALL_SOFT is not set
-# CONFIG_RT_USING_CPU_USAGE_TRACER is not set
+CONFIG_RT_USING_CPU_USAGE_TRACER=y
+CONFIG_RT_CPU_USAGE_CALC_INTERVAL_MS=200
#
# kservice options
@@ -165,7 +166,7 @@ CONFIG_RT_USING_MESSAGEQUEUE=y
#
CONFIG_RT_USING_MEMPOOL=y
CONFIG_RT_USING_SMALL_MEM=y
-# CONFIG_RT_USING_SLAB is not set
+CONFIG_RT_USING_SLAB=y
CONFIG_RT_USING_MEMHEAP=y
CONFIG_RT_MEMHEAP_FAST_MODE=y
# CONFIG_RT_MEMHEAP_BEST_MODE is not set
@@ -229,7 +230,7 @@ CONFIG_RT_USING_FINSH=y
CONFIG_FINSH_USING_MSH=y
CONFIG_FINSH_THREAD_NAME="tshell"
CONFIG_FINSH_THREAD_PRIORITY=20
-CONFIG_FINSH_THREAD_STACK_SIZE=4096
+CONFIG_FINSH_THREAD_STACK_SIZE=8192
CONFIG_FINSH_USING_HISTORY=y
CONFIG_FINSH_HISTORY_LINES=10
# CONFIG_FINSH_USING_WORD_OPERATION is not set
@@ -249,12 +250,9 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y
CONFIG_RT_USING_DFS=y
CONFIG_DFS_USING_POSIX=y
CONFIG_DFS_USING_WORKDIR=y
-# CONFIG_RT_USING_DFS_MNTTABLE is not set
CONFIG_DFS_FD_MAX=32
-CONFIG_RT_USING_DFS_V1=y
-# CONFIG_RT_USING_DFS_V2 is not set
-CONFIG_DFS_FILESYSTEMS_MAX=4
-CONFIG_DFS_FILESYSTEM_TYPES_MAX=8
+# CONFIG_RT_USING_DFS_V1 is not set
+CONFIG_RT_USING_DFS_V2=y
CONFIG_RT_USING_DFS_ELMFAT=y
#
@@ -282,12 +280,8 @@ CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000
# end of elm-chan's FatFs, Generic FAT Filesystem Module
CONFIG_RT_USING_DFS_DEVFS=y
-CONFIG_RT_USING_DFS_9PFS=y
-# CONFIG_RT_USING_DFS_ISO9660 is not set
CONFIG_RT_USING_DFS_ROMFS=y
-# CONFIG_RT_USING_DFS_ROMFS_USER_ROOT is not set
# CONFIG_RT_USING_DFS_CROMFS is not set
-# CONFIG_RT_USING_DFS_RAMFS is not set
# CONFIG_RT_USING_DFS_TMPFS is not set
# CONFIG_RT_USING_DFS_MQUEUE is not set
# end of DFS: device virtual file system
@@ -309,7 +303,7 @@ CONFIG_RT_USING_SERIAL_V1=y
# CONFIG_RT_USING_SERIAL_V2 is not set
CONFIG_RT_SERIAL_USING_DMA=y
CONFIG_RT_SERIAL_RB_BUFSZ=256
-# CONFIG_RT_USING_SERIAL_BYPASS is not set
+CONFIG_RT_USING_SERIAL_BYPASS=y
# CONFIG_RT_SERIAL_EARLY_HVC is not set
CONFIG_RT_SERIAL_PL011=y
CONFIG_RT_SERIAL_8250=y
@@ -346,10 +340,16 @@ CONFIG_RT_RTC_PL031=y
# CONFIG_RT_USING_SDIO is not set
# CONFIG_RT_USING_SPI is not set
CONFIG_RT_USING_WDT=y
+# CONFIG_RT_WDT_DW is not set
CONFIG_RT_WDT_I6300ESB=y
-# CONFIG_RT_USING_AUDIO is not set
+CONFIG_RT_USING_AUDIO=y
+CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_SIZE=4096
+CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_COUNT=2
+CONFIG_RT_AUDIO_RECORD_PIPE_SIZE=2048
+CONFIG_RT_AUDIO_INTEL_HDA=y
# CONFIG_RT_USING_SENSOR is not set
-# CONFIG_RT_USING_TOUCH is not set
+CONFIG_RT_USING_TOUCH=y
+# CONFIG_RT_TOUCH_PIN_IRQ is not set
CONFIG_RT_USING_LCD=y
CONFIG_RT_USING_GRAPHIC=y
# CONFIG_RT_GRAPHIC_BACKLIGHT is not set
@@ -392,14 +392,21 @@ CONFIG_RT_INPUT_POWER=y
CONFIG_RT_INPUT_KEYBOARD=y
CONFIG_RT_INPUT_KEYBOARD_GPIO=y
# CONFIG_RT_INPUT_MISC is not set
-# CONFIG_RT_INPUT_TOUCHSCREEN is not set
-# CONFIG_RT_USING_MBOX is not set
+CONFIG_RT_INPUT_TOUCHSCREEN=y
+CONFIG_RT_USING_MBOX=y
+CONFIG_RT_MBOX_PIC=y
# CONFIG_RT_USING_HWSPINLOCK is not set
+CONFIG_RT_USING_RPMSG=y
+CONFIG_RT_RPMSG_CHAR_MSG_MAX=64
+CONFIG_RT_RPMSG_CHAR_MSG_SIZE_MAX=256
+CONFIG_RT_RPMSG_RT_THREAD_VIRTIO=y
# CONFIG_RT_USING_PHYE is not set
CONFIG_RT_USING_ATA=y
CONFIG_RT_ATA_AHCI=y
CONFIG_RT_ATA_AHCI_PCI=y
-# CONFIG_RT_USING_NVME is not set
+CONFIG_RT_USING_NVME=y
+CONFIG_RT_USING_NVME_IO_QUEUE=4
+CONFIG_RT_NVME_PCI=y
CONFIG_RT_USING_BLK=y
#
@@ -412,13 +419,16 @@ CONFIG_RT_BLK_PARTITION_EFI=y
CONFIG_RT_USING_SCSI=y
CONFIG_RT_SCSI_SD=y
CONFIG_RT_SCSI_CDROM=y
+CONFIG_RT_USING_UFS=y
+CONFIG_RT_UFS_PCI=y
CONFIG_RT_USING_FIRMWARE=y
CONFIG_RT_FIRMWARE_QEMU_FW_CFG=y
# CONFIG_RT_FIRMWARE_ARM_SCMI is not set
# CONFIG_RT_USING_HWCACHE is not set
CONFIG_RT_USING_REGULATOR=y
# CONFIG_RT_REGULATOR_GPIO is not set
-# CONFIG_RT_USING_RESET is not set
+CONFIG_RT_USING_RESET=y
+# CONFIG_RT_RESET_SIMPLE is not set
#
# Power Management (PM) Domains device drivers
@@ -434,13 +444,17 @@ CONFIG_RT_VIRTIO_TRANSPORT_PCI=y
CONFIG_RT_VIRTIO_BLK=y
CONFIG_RT_VIRTIO_CONSOLE=y
CONFIG_RT_VIRTIO_RNG=y
+CONFIG_RT_VIRTIO_RPMSG=y
CONFIG_RT_VIRTIO_SCSI=y
# CONFIG_RT_VIRTIO_9P is not set
CONFIG_RT_VIRTIO_RPROC_SERIAL=y
CONFIG_RT_VIRTIO_GPU=y
+CONFIG_RT_VIRTIO_INPUT=y
CONFIG_RT_VIRTIO_CRYPTO=y
+CONFIG_RT_VIRTIO_SOUND=y
# CONFIG_RT_USING_NVMEM is not set
CONFIG_RT_USING_DMA=y
+# CONFIG_RT_DMA_PL330 is not set
CONFIG_RT_USING_MFD=y
CONFIG_RT_MFD_EDU=y
CONFIG_RT_MFD_SYSCON=y
@@ -480,6 +494,10 @@ CONFIG_RT_USING_CLK=y
#
# SoC (System on Chip) Drivers
#
+CONFIG_RT_GRAPHIC_ROMFB_WIDTH=800
+CONFIG_RT_GRAPHIC_ROMFB_HEIGHT=600
+CONFIG_RT_SOC_CAMERA=y
+# end of SoC (System on Chip) Drivers
# end of Device Drivers
#
@@ -517,7 +535,7 @@ CONFIG_RT_USING_POSIX_TERMIOS=y
# CONFIG_RT_USING_POSIX_MMAN is not set
CONFIG_RT_USING_POSIX_DELAY=y
CONFIG_RT_USING_POSIX_CLOCK=y
-# CONFIG_RT_USING_POSIX_TIMER is not set
+CONFIG_RT_USING_POSIX_TIMER=y
# CONFIG_RT_USING_PTHREADS is not set
# CONFIG_RT_USING_MODULE is not set
@@ -596,6 +614,7 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# end of Using USB legacy version
# CONFIG_RT_USING_FDT is not set
+# CONFIG_BSP_USING_VIRTIO is not set
# CONFIG_RT_USING_RUST is not set
# end of RT-Thread Components
@@ -798,7 +817,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_U8G2 is not set
# end of u8g2: a monochrome graphic library
-# CONFIG_PKG_USING_NES_SIMULATOR is not set
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
@@ -823,9 +841,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
#
# tools packages
#
-# CONFIG_PKG_USING_VECTOR is not set
-# CONFIG_PKG_USING_SORCH is not set
-# CONFIG_PKG_USING_DICT is not set
# CONFIG_PKG_USING_CMBACKTRACE is not set
# CONFIG_PKG_USING_MCOREDUMP is not set
# CONFIG_PKG_USING_EASYFLASH is not set
@@ -874,9 +889,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_RVBACKTRACE is not set
# CONFIG_PKG_USING_HPATCHLITE is not set
# CONFIG_PKG_USING_THREAD_METRIC is not set
-# CONFIG_PKG_USING_UORB is not set
-# CONFIG_PKG_USING_RT_TUNNEL is not set
-# CONFIG_PKG_USING_VIRTUAL_TERMINAL is not set
# end of tools packages
#
@@ -971,9 +983,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_R_RHEALSTONE is not set
# CONFIG_PKG_USING_HEARTBEAT is not set
# CONFIG_PKG_USING_MICRO_ROS_RTTHREAD_PACKAGE is not set
-# CONFIG_PKG_USING_CHERRYECAT is not set
-# CONFIG_PKG_USING_EVENT_LOOP is not set
-# CONFIG_PKG_USING_THREAD_MANAGER is not set
# end of system packages
#
@@ -1119,7 +1128,9 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
#
# NUVOTON Drivers
#
+# CONFIG_PKG_USING_NUVOTON_CMSIS_DRIVER is not set
# CONFIG_PKG_USING_NUVOTON_SERIES_DRIVER is not set
+# CONFIG_PKG_USING_NUVOTON_ARM926_LIB is not set
# end of NUVOTON Drivers
#
@@ -1127,24 +1138,7 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
#
# CONFIG_PKG_USING_GD32_ARM_CMSIS_DRIVER is not set
# CONFIG_PKG_USING_GD32_ARM_SERIES_DRIVER is not set
-# CONFIG_PKG_USING_GD32_RISCV_SERIES_DRIVER is not set
-# CONFIG_PKG_USING_GD32VW55X_WIFI is not set
# end of GD32 Drivers
-
-#
-# HPMicro SDK
-#
-# CONFIG_PKG_USING_HPM_SDK is not set
-# end of HPMicro SDK
-
-#
-# FT32 HAL & SDK Drivers
-#
-# CONFIG_PKG_USING_FT32F0_STD_DRIVER is not set
-# CONFIG_PKG_USING_FT32F0_CMSIS_DRIVER is not set
-# CONFIG_PKG_USING_FT32F4_STD_DRIVER is not set
-# CONFIG_PKG_USING_FT32F4_CMSIS_DRIVER is not set
-# end of FT32 HAL & SDK Drivers
# end of HAL & SDK Drivers
#
@@ -1190,11 +1184,9 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_RT3020 is not set
# CONFIG_PKG_USING_MLX90632 is not set
# CONFIG_PKG_USING_MLX90382 is not set
-# CONFIG_PKG_USING_MLX90384 is not set
# CONFIG_PKG_USING_MLX90393 is not set
# CONFIG_PKG_USING_MLX90392 is not set
# CONFIG_PKG_USING_MLX90394 is not set
-# CONFIG_PKG_USING_MLX90396 is not set
# CONFIG_PKG_USING_MLX90397 is not set
# CONFIG_PKG_USING_MS5611 is not set
# CONFIG_PKG_USING_MAX31865 is not set
@@ -1223,7 +1215,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_P3T1755 is not set
# CONFIG_PKG_USING_QMI8658 is not set
# CONFIG_PKG_USING_ICM20948 is not set
-# CONFIG_PKG_USING_SCD4X is not set
# end of sensors drivers
#
@@ -1241,7 +1232,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_CST812T is not set
# end of touch drivers
-# CONFIG_PKG_USING_LCD_SPI_DRIVER is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
@@ -1321,13 +1311,6 @@ CONFIG_RT_INIT_MEMORY_REGIONS=128
# CONFIG_PKG_USING_IC74HC165 is not set
# CONFIG_PKG_USING_IST8310 is not set
# CONFIG_PKG_USING_ST7789_SPI is not set
-# CONFIG_PKG_USING_CAN_UDS is not set
-# CONFIG_PKG_USING_ISOTP_C is not set
-# CONFIG_PKG_USING_IKUNLED is not set
-# CONFIG_PKG_USING_INS5T8025 is not set
-# CONFIG_PKG_USING_IRUART is not set
-# CONFIG_PKG_USING_ST7305 is not set
-# CONFIG_PKG_USING_TM1668 is not set
# CONFIG_PKG_USING_SPI_TOOLS is not set
# end of peripheral libraries and drivers
diff --git a/bsp/qemu-virt64-aarch64/README.md b/bsp/qemu-virt64-aarch64/README.md
index f350b3c641..6811bf3062 100644
--- a/bsp/qemu-virt64-aarch64/README.md
+++ b/bsp/qemu-virt64-aarch64/README.md
@@ -4,70 +4,419 @@
## 1. Introduction
-The AArch64 execution state was introduced with the ARMv8 ISA for machines executing A64 instructions. This project ported RT-Thread on QEMU AArch64 VIRT machine.
+AArch64 is the 64-bit execution state of the ARMv8 architecture for machines executing A64 instructions. This BSP ports RT-Thread to the QEMU `virt` AArch64 machine, based on the device model (DM), Open Firmware (OFW/FDT), and PCI bus framework. It serves as a development and validation platform for VirtIO, PCI, and other platform drivers.
+
+Default configuration highlights:
+
+| Item | Description |
+| ---- | ----------- |
+| RT-Thread version | 5.3 |
+| Architecture | ARMv8 AArch64, MMU |
+| SMP | 4 cores (`RT_CPUS_NR=4`) |
+| Interrupt controller | GICv2 / GICv3 (with ITS, MSI) |
+| Console | UART0 (PL011, `ttyAMA0`) |
+| Root filesystem | VirtIO Block `vda0`, FatFs (elm-chan) |
+| Memory | 128 MB by default (adjustable via `qemu.py -mem`) |
## 2. Compiling
-Usage ARM Developer GNU ToolChain, it support Linux and Windows:
+ARM Developer GNU cross-compiler toolchain is recommended, supporting Linux and Windows:
+
```
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads/
```
-Download the `xxx-aarch64-none-elf` of x86_64 hosted platform,set the `RTT_EXEC_PATH` is system environment after decompress the binary.
-Enter directory `rt-thread/bsp/qemu-virt64-aarch64` and input:
+Download the `xxx-aarch64-none-elf` package for the x86_64 hosted platform, extract it, and set the `RTT_EXEC_PATH` environment variable to the compiler's `bin` directory.
+
+Enter the `rt-thread/bsp/qemu-virt64-aarch64` directory and run:
+
```
scons
```
-## 3. Execution
+This produces `rtthread.elf` and `rtthread.bin`.
-The project execution tool is `qemu-system-aarch64`, the project can be configured to `Cortex-A53/A57/A72`, GIC supports `V2/V3` version, and `V2` of GIC can use 8 processors max.
+You can also compile with a specific toolchain path:
+
+```
+scons --exec-path="path-to-gcc-toolchain"
+```
+
+Use `scons --menuconfig` to change configuration, then run `scons` again to rebuild.
+
+## 3. Running
+
+This BSP uses the `qemu-system-aarch64` emulator and is started via `qemu.py`.
+
+### 3.1 Installing QEMU
+
+Windows:
-Download Windows platform from website:
```
https://www.qemu.org/download/
```
-On Linux platform (Ubuntu, Deepin and so on), install QEMU by apt.
+
+Linux (Ubuntu, Deepin, etc.):
+
```
sudo apt update
sudo apt install qemu-system-arm
```
-Please fixup the exec scripts if modify the default configuration of the project. Run qemu.bat or qemu.sh in terminal:
+Some optional features require a minimum QEMU version:
+
+| Feature | Minimum QEMU version |
+| ------- | -------------------- |
+| UFS storage | 8.2.0 |
+| VirtIO Sound (`-sound virtio`) | 8.2.0 |
+
+### 3.2 Environment Variables
+
+| Variable | Description |
+| -------- | ----------- |
+| `RTT_QEMU_ROOT` | Prefix path to QEMU binaries (the script appends `qemu-system-aarch64`) |
+| `RTT_ROOT` | RT-Thread source root; defaults to two levels above the BSP directory |
+
+### 3.3 Basic Startup
+
+In the BSP directory, run:
+
+```
+python qemu.py
+```
+
+or:
+
+```
+./qemu.py
+```
+
+On first run, 64 MB `qcow2` disk images are created automatically for each storage device. The default is `-nographic` mode with serial output on the current terminal.
+
+Typical boot log:
+
```
heap: [0x40042aa0 - 0x40142aa0]
\ | /
- RT - Thread Operating System
- / | \ 4.0.4 build Aug 6 2021
- 2006 - 2021 Copyright by rt-thread team
-Hi, this is RT-Thread!!
+ / | \ 5.3.0 build ...
+ 2006 - 2026 Copyright by rt-thread team
+hello rt-thread
msh />
```
-Use VirtIO-Console in new terminal by:
-````
+### 3.4 `qemu.py` Command-Line Options
+
+| Option | Default | Description |
+| ------ | ------- | ----------- |
+| `-gic` | `2` | GIC version (`2` / `3` / `max`); auto-switches to GICv3 when `-smp` > 8 |
+| `-smp` | `RT_CPUS_NR` (4) | Number of CPU cores |
+| `-mem` | `128` | Memory size (MB) |
+| `-el` | `1` | Exception level: `1` default; `2` virtualization on; `3` secure on |
+| `-bootargs` | see below | Kernel boot arguments |
+| `-initrd` | — | Path to initrd image |
+| `-graphic` | — | Graphics mode (ramfb + VirtIO keyboard/tablet), replaces `-nographic` |
+| `-gl` | — | In graphics mode, attach `virtio-gpu-gl-pci` and enable QEMU display OpenGL (e.g. `-gl gtk`); requires QEMU built with `--enable-opengl` and `--enable-virglrenderer`; must be used with `-graphic` |
+| `-debug` | — | Enable GDB debugging (`-S -s`) |
+| `-dumpdtb` | — | Export runtime DTB and convert to DTS |
+| `-dtb` | — | Use a custom DTB file |
+| `-virtio-block` | `virtio` | VirtIO Block disk image prefix (creates `virtio.qcow2`, mounted as `vda`) |
+| `-scsi` | `scsi` | VirtIO SCSI disk image prefix |
+| `-flash` | `flash` | pflash disk image prefix (pflash1, CFI NOR) |
+| `-emmc` | `emmc` | SDHCI eMMC disk image prefix |
+| `-nvme` | `nvme` | NVMe disk image prefix |
+| `-ahci` | `ahci` | AHCI SATA disk image prefix |
+| `-ufs` | `ufs` | UFS disk image prefix (QEMU ≥ 8.2.0) |
+| `-cdrom` | — | SCSI CD-ROM image path (e.g. ISO file) |
+| `-sound` | `hda` | Audio device: `hda` (Intel HDA) or `virtio` (VirtIO Sound PCI) |
+| `-tap` | — | Use TAP networking (replaces user mode) |
+| `-ssh` | `12055` | SSH port forwarding in user mode (`hostfwd=tcp::PORT-:22`) |
+| `-9p` | — | VirtIO 9P shared directory path (enable VirtIO 9P in menuconfig) |
+| `-camera` | — | Enable vfio-user camera (Linux only, with `qemu-device-camera`) |
+| `-dtbo` | — | AMP mode: DTBO overlay file (e.g. `amp.dtsi`); **requires Smart kernel** (see below) |
+
+Default `-bootargs`:
+
+```
+console=ttyAMA0 earlycon cma=8M coherent_pool=2M root=vda0 rootfstype=elm rootwait rw
+```
+
+### 3.5 Common Startup Examples
+
+Graphics (VirtIO GPU + keyboard/mouse):
+
+```
+./qemu.py -graphic
+```
+
+QEMU OpenGL display (`-gl`):
+
+```
+./qemu.py -graphic -gl gtk
+```
+
+> **Note**: `-gl` enables OpenGL only on the QEMU / host display path (`virtio-gpu-gl-pci` + VirGL). This BSP includes only the VirtIO GPU 2D framebuffer driver by default — **no OpenGL / VirGL user-space or kernel implementation**. `-gl` does not provide OpenGL acceleration inside RT-Thread. For graphics demos, use `-graphic` (`virtio-gpu-device`) with framebuffer / HMI tests.
+
+GDB debugging:
+
+```
+./qemu.py -debug
+```
+
+More memory and GICv3:
+
+```
+./qemu.py -mem 256 -gic 3
+```
+
+Mount CD-ROM:
+
+```
+./qemu.py -cdrom /path/to/image.iso
+```
+
+VirtIO Sound:
+
+```
+./qemu.py -sound virtio
+```
+
+9P directory sharing (enable `RT_VIRTIO_9P` first):
+
+```
+./qemu.py -9p /path/to/share
+```
+
+AMP heterogeneous multi-core (RPMSG slave, **requires Smart version**):
+
+```
+./qemu.py -dtbo amp.dtsi -mem 258
+```
+
+> **Note**: The AMP demo requires the **Smart version** (`RT_USING_SMART`). The standard kernel must run in a region where virtual addresses equal physical addresses. The slave image is loaded by QEMU `loader` to fixed physical addresses specified in `amp.dtsi` (e.g. `kernel-entry = 0x48480000`), which differs from the primary MMU layout; the standard kernel cannot boot correctly in that address space. Enable Smart in menuconfig and rebuild.
+
+Camera demo:
+
+```
+./qemu.py -graphic -camera
+```
+
+### 3.6 Console and Telnet
+
+| Port | Device | Description |
+| ---- | ------ | ----------- |
+| Current terminal | UART0 (PL011) | Default `-nographic` serial |
+| `4321` | VirtIO Console | `telnet 127.0.0.1 4321`, port name `org.rt-thread.console` |
+| `4322` | PCI 8250 serial | `telnet 127.0.0.1 4322` |
+| `4323` | AMP slave console | `-dtbo` mode only, `telnet localhost 4323` |
+
+VirtIO Console connection example:
+
+```
telnet 127.0.0.1 4321
-````
+```
+
+### 3.7 Networking
+
+User-mode networking (`-netdev user`) is used by default, with SSH forwarded to local port `12055` (changeable via `-ssh`).
+
+TAP networking example:
+
+```
+./qemu.py -tap
+```
+
+TAP requires bridge setup on Linux; support on Windows / WSL is limited. SSH port forwarding is not available in TAP mode.
+
+## 4. Default QEMU Devices
+
+`qemu.py` attaches the following devices by default (matching the default driver configuration):
+
+| QEMU device | Image file | RT-Thread side |
+| ----------- | ---------- | -------------- |
+| `virtio-blk-device` | `virtio.qcow2` | VirtIO Block, root partition `vda0` |
+| `virtio-scsi-pci` + `scsi-hd` | `scsi.qcow2` | VirtIO SCSI |
+| `scsi-cd` (optional `-cdrom`) | user-specified | SCSI CD-ROM |
+| `pflash` (index=1) | `flash.qcow2` | MTD NOR CFI |
+| `sdhci-pci` + `sd-card` | `emmc.qcow2` | SDHCI eMMC (enable SDIO) |
+| `nvme` + `nvme-ns` | `nvme.qcow2` | NVMe |
+| `ahci` + `ide-hd` | `ahci.qcow2` | AHCI SATA |
+| `ufs` + `ufs-lu` | `ufs.qcow2` | UFS (QEMU ≥ 8.2.0) |
+| `virtio-net-device` | — | VirtIO Net (enable network stack) |
+| `virtio-rng-device` | — | VirtIO RNG |
+| `virtio-crypto-device` | — | VirtIO Crypto |
+| `virtio-serial-device` | — | VirtIO Console / RPROC Serial |
+| `pci-serial` (8250 PCI) | — | PCI 8250 serial |
+| `intel-hda` + `hda-duplex` | — | Intel HDA audio |
+| `i6300esb` | — | I6300ESB watchdog |
+| `edu` | — | QEMU EDU teaching device (MFD) |
+| `virtio-gpu-device` (`-graphic`) | — | VirtIO GPU 2D (default) |
+| `virtio-gpu-gl-pci` (`-graphic -gl`) | — | QEMU OpenGL display; no GL driver on RT-Thread side |
+| `virtio-keyboard-device` / `virtio-tablet-device` | — | VirtIO Input |
+| `virtio-9p-device` (`-9p`) | — | VirtIO 9P (enable driver) |
+| `virtio-sound-pci` (`-sound virtio`) | — | VirtIO Sound |
+| vfio-user camera (`-camera`) | — | PCI camera (BSP `drv_camera`) |
+
+## 5. Driver Support
+
+### 5.1 Enabled by Default
+
+| Category | Driver | Description |
+| -------- | ------ | ----------- |
+| Serial | PL011 | UART0, system console `uart0` / `ttyAMA0` |
+| Serial | 8250 PCI | PCI serial, Telnet port 4322 |
+| RTC | PL031 | Real-time clock |
+| GPIO | PL061 | GPIO controller |
+| Clock | ARM Architected Timer | System tick |
+| Watchdog | I6300ESB | PCI watchdog |
+| Storage | VirtIO Block | Block device, `vda` |
+| Storage | VirtIO SCSI | SD / CD-ROM |
+| Storage | AHCI PCI | SATA disk |
+| Storage | NVMe PCI | NVMe disk |
+| Storage | UFS PCI | UFS disk |
+| Storage | MTD NOR CFI | pflash flash |
+| Storage | BLK partition | DFS / EFI partition table |
+| Graphics | VirtIO GPU | 2D framebuffer (`-graphic`); no OpenGL / VirGL |
+| Graphics | Framebuffer | ROMFB 800×600, HMI / graphics tests |
+| Graphics | LCD | LCD device framework |
+| Input | VirtIO Input | Keyboard, mouse, tablet (`-graphic`) |
+| Input | Touchscreen | Touchscreen framework |
+| Input | Keyboard GPIO | GPIO keyboard |
+| Input | Power | Power key |
+| Audio | Intel HDA | Default `-sound hda` |
+| Audio | VirtIO Sound | `-sound virtio` |
+| Crypto | HwCrypto | AES / DES / 3DES / RC4 / RNG |
+| Crypto | VirtIO Crypto | VirtIO crypto backend |
+| Random | VirtIO RNG | Hardware random number |
+| Comm | VirtIO Console | Telnet 4321 |
+| Comm | VirtIO RPROC Serial | Remoteproc serial link |
+| Comm | RPMSG | VirtIO RPMSG character device |
+| Comm | Mailbox PIC | Mailbox interrupt controller |
+| Firmware | QEMU FW_CFG | Firmware configuration interface |
+| Bus | PCI | ECAM + Generic Host, MSI / MSI-X |
+| Bus | VirtIO | MMIO + PCI transport |
+| IRQ | GICv2 / GICv3 / ITS | Including GICv2m MSI |
+| Devicetree | OFW / FDT | Dynamic devicetree parsing |
+| Other | DMA | DMA framework |
+| Other | MFD EDU / SYSCON | Multi-function devices |
+| Other | Regulator / Reset | Power and reset framework |
+| Filesystem | DFS v2 | FatFs, devfs, romfs |
+| POSIX | Partial APIs | poll / select / termios / pipe, etc. |
+
+### 5.2 Not Enabled by Default but Available via menuconfig
+
+This BSP enables the PCI bus and VirtIO PCI transport; QEMU also attaches the corresponding devices. The following drivers are unchecked in the default `.config` but can be used after enabling the Kconfig options and rebuilding (no `qemu.py` changes required):
+
+| Driver / feature | Kconfig | QEMU device | Notes |
+| ---------------- | ------- | ----------- | ----- |
+| VirtIO Net | `RT_USING_SAL` + `RT_USING_LWIP` + `RT_USING_ETHERNET` | `virtio-net-device` | Network stack not enabled by default |
+| VirtIO 9P | `RT_VIRTIO_9P` | `virtio-9p-device` | Use with `-9p` shared directory |
+| SDHCI eMMC | `RT_USING_SDIO` + `RT_SDIO_SDHCI_PCI` | `sdhci-pci` | eMMC storage |
+| SDIO DW MMC PCI | `RT_USING_SDIO` + `RT_SDIO_DW_MMC_PCI` | — | DesignWare MMC |
+| USB | `RT_USING_USB_HOST` / `RT_USING_USB_DEVICE` | Add USB controller manually | Not a default QEMU device |
+| CherryUSB | `RT_USING_CHERRYUSB` | Add USB controller manually | — |
+| I2C / SPI | `RT_USING_I2C` / `RT_USING_SPI` | Depends on PCI device | Requires matching PCI controller driver |
+| CAN | `RT_USING_CAN` | Depends on PCI device | — |
+| Sensor | `RT_USING_SENSOR` | — | — |
+| WiFi | `RT_USING_WIFI` | — | — |
+| PM | `RT_USING_PM` | — | — |
+| Pinctrl | `RT_USING_PINCTRL` | — | — |
+| SCMI firmware | `RT_FIRMWARE_ARM_SCMI` + `RT_VIRTIO_SCMI` | — | — |
+
+> **Note**: Any PCI driver marked `depends on RT_USING_PCI` can be enabled on this BSP via menuconfig. If QEMU does not attach the device by default, add the corresponding `-device` argument in `qemu.py`.
+
+### 5.3 BSP-Specific Features (Driver Layer)
+
+| Feature | Config | Startup |
+| ------- | ------ | ------- |
+| HMI graphics test | `RT_GRAPHIC_HMI_TEST` | `-graphic` (embedded in `drv_romfb.c`) |
+| Graphics draw test | `RT_GRAPHIC_GRAPHIC_TEST` | `-graphic` (embedded in `drv_romfb.c`) |
+| Camera driver | `RT_SOC_CAMERA` | `-graphic -camera` |
+
+### 5.4 Sample Applications (`applications/`)
+
+| Source | Build condition | Description |
+| ------ | --------------- | ----------- |
+| `main.c` | Always | Entry `main()`, prints `hello rt-thread` |
+| `amp.c` | `RT_RPMSG_RT_THREAD_VIRTIO` | AMP heterogeneous multi-core and RPMSG demo |
+| `camera.c` | `RT_SOC_CAMERA` | Overlay camera feed onto framebuffer |
+
+**`main.c`**
+
+Default application. Prints `hello rt-thread` after boot, then enters msh.
+
+**`amp.c` (AMP + RPMSG)**
+
+The primary core boots an additional CPU running RT-Thread as slave via the `amp_soc` devicetree node and PSCI. Primary and slave communicate through VirtIO RPMSG and Mailbox. The primary writes VirtIO Block `vdb` resource info into the slave DTB before starting the slave.
+
+**Version requirement**: **Smart version** required (`RT_USING_SMART` in menuconfig). The standard kernel must run with virtual addresses equal to physical addresses. The AMP slave is loaded by QEMU into a separate physical memory region (see `amp_memory`, `kernel-entry` in `amp.dtsi`), which violates that constraint — the standard kernel cannot be used for AMP demos.
+
+Startup:
+
+```
+./qemu.py -dtbo amp.dtsi -mem 258
+```
+
+Slave console: `telnet localhost 4323`.
+
+msh commands:
+
+| Command | Description |
+| ------- | ----------- |
+| `rpmsg_write <device> <message>` | Write a message to an RPMSG character device |
+| `rpmsg_read <device>` | Read all messages from an RPMSG character device |
+| `amp_startup` | Manually trigger AMP slave boot (exported when console and msh are both enabled; otherwise runs automatically at app init) |
+
+An RPMSG endpoint is created automatically at boot (`rpmsg_char0`, endpoint name `rpmsg-char`, addresses 114/514). Addresses are swapped on the slave side.
+
+**`camera.c` (Camera Preview)**
+
+Centers and overlays the vfio-user PCI camera feed onto the framebuffer. Default devices `camera0` → `fb0`, runs for about 10 seconds (300 frames).
+
+Startup:
+
+```
+./qemu.py -graphic -camera
+```
+
+msh command:
-If use tap net mode with tap0 card, modify qemu run script config
```
--netdev user,id=net0
+camera [camera_device] [framebuffer_device]
```
-to
+
+Example: `camera camera0 fb0`
+
+## 6. Storage and Partitions
+
+- Root filesystem is mounted on the first partition of VirtIO Block `vda0`, filesystem type `elm` (FatFs).
+- Storage images are auto-created as 64 MB `qcow2` files on first run; resize with `qemu-img` or replace beforehand.
+- pflash0 is used for BootROM (e.g. UEFI); this BSP uses pflash1 (`flash.qcow2`) as CFI NOR. pflash0 data is not preserved after QEMU exits.
+- On Linux, partition `qcow2` images with `qemu-nbd` + `fdisk` (not supported on Windows).
+
+## 7. QEMU Monitor Hot-Plug Tips
+
+Dynamically add or remove VirtIO serial ports in the QEMU Monitor:
+
```
--netdev tap,id=net0,ifname=tap0
+(qemu) chardev-add socket,host=127.0.0.1,port=4323,server=on,wait=off,telnet=on,id=console2
+(qemu) device_add virtserialport,chardev=console2,name=org.rt-thread.port,id=port2
+(qemu) device_del port2
+(qemu) chardev-remove console2
```
-## 4. Condition
+Optional VirtIO device arguments (add in `qemu.py` as needed):
+
+- Disable legacy: `-global virtio-mmio.force-legacy=false`
+- Virtqueue packed: `-device virtio-XXX-device,packed=on`
+- PCI mode (≥ 1.0): `-device virtio-XXX-pci,disable-legacy=on`
+
+## 8. Notes After Configuration Changes
-| Driver | Condition | Remark |
-| ------ | --------- | ------ |
-| UART | Support | UART0 |
-| RTC | Support | - |
-| GPIO | Support | - |
-| VIRTIO BLK | Support | - |
-| VIRTIO NET | Support | - |
-| VIRTIO Console | Support | - |
-| VIRTIO GPU | Support | 2D |
-| VIRTIO Input | Support | Keyboard, Mouse, Tablet | \ No newline at end of file
+- After changing CPU count, adjust `qemu.py -smp` or rebuild so `RT_CPUS_NR` matches.
+- GIC auto-switches to v3 when exceeding 8 cores; or specify `-gic 3` manually.
+- 9P directory sharing requires QEMU built with virtfs (`--enable-virtfs`).
+- `-gl` requires QEMU built with OpenGL / VirGL (`--enable-opengl`, `--enable-virglrenderer`); this is independent of RT-Thread OpenGL support — the default software stack is 2D graphics only.
+- AMP (`-dtbo`) requires Smart kernel (`RT_USING_SMART`); the standard kernel requires VA=PA and cannot be used with slave images loaded at fixed physical addresses.
+- Override root device or boot parameters via `-bootargs`.
diff --git a/bsp/qemu-virt64-aarch64/README_zh.md b/bsp/qemu-virt64-aarch64/README_zh.md
index f6b6e58b1a..7cdcaaf73c 100644
--- a/bsp/qemu-virt64-aarch64/README_zh.md
+++ b/bsp/qemu-virt64-aarch64/README_zh.md
@@ -1,76 +1,418 @@
-# QEMU/AArch64 VIRT板级支持包说明
+# QEMU/AArch64 VIRT 板级支持包说明
中文页 | [English](README.md)
## 1. 简介
-AArch64是一种采用ARMv8 ISA,用于执行A64指令的机器的64位执行模式。本工程是在QEMU的AArch64 VIRT版本上进行的一份移植。
+AArch64 是 ARMv8 架构下执行 A64 指令的 64 位执行状态。本 BSP 将 RT-Thread 移植到 QEMU `virt` AArch64 机器上,基于设备模型(DM)、Open Firmware(OFW/FDT)与 PCI 总线框架,可作为 VirtIO、PCI 及各类平台驱动的开发与验证平台。
+
+当前默认配置要点:
+
+| 项目 | 说明 |
+| ---- | ---- |
+| RT-Thread 版本 | 5.3 |
+| 架构 | ARMv8 AArch64,MMU |
+| SMP | 4 核(`RT_CPUS_NR=4`) |
+| 中断控制器 | GICv2 / GICv3(含 ITS、MSI) |
+| 控制台 | UART0(PL011,`ttyAMA0`) |
+| 根文件系统 | VirtIO Block `vda0`,FatFs(elm-chan) |
+| 内存 | 默认 128 MB(可通过 `qemu.py -mem` 调整) |
## 2. 编译说明
-建议使用ARM Developer GNU交叉编译工具链,目前支持Linux/Windows平台:
+建议使用 ARM Developer GNU 交叉编译工具链,支持 Linux / Windows 平台:
+
```
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads/
```
-下载x86_64 Hosted平台下载对应的`xxx-aarch64-none-elf`二进制包,解压后设置`RTT_EXEC_PATH`环境变量为该编译器的bin目录下即可。
-进入到`rt-thread/bsp/qemu-virt64-aarch64`目录进行输入:
+下载 x86_64 Hosted 平台对应的 `xxx-aarch64-none-elf` 二进制包,解压后将 `RTT_EXEC_PATH` 环境变量指向该编译器的 `bin` 目录。
+
+进入 `rt-thread/bsp/qemu-virt64-aarch64` 目录执行:
+
```
scons
```
-可以看到正常生成`rtthread.elf`与`rtthread.bin`文件。
-或者通过 `scons --exec-path="GCC工具链路径"` 命令,在指定工具链位置的同时直接编译。
+正常生成 `rtthread.elf` 与 `rtthread.bin` 文件。
+
+也可通过 `scons --exec-path="GCC工具链路径"` 在指定工具链的同时直接编译。
+
+配置修改可使用 `scons --menuconfig`,保存后重新 `scons` 编译。
+
+## 3. 运行
-## 3. 执行
+本 BSP 使用 `qemu-system-aarch64` 模拟器,通过 `qemu.py` 启动。
-本工程执行环境为`qemu-system-aarch64`模拟器,工程可配置为使用`Cortex-A53/A57/A72`等芯片,GIC支持`V2/V3`版本,其中`V2`最多可配置8个处理器。
+### 3.1 安装 QEMU
+
+Windows 平台:
-Windows平台下,可以在此获取到QEMU:
```
https://www.qemu.org/download/
```
-Linux平台下,以Ubuntu、Deepin系列发行版为例,可通过该命令安装QEMU:
+
+Linux 平台(以 Ubuntu、Deepin 为例):
+
```
sudo apt update
sudo apt install qemu-system-arm
```
-工程默认配置修改后请注意修改运行脚本。在终端执行qemu.bat或qemu.sh可以看到程序运行:
+部分可选功能对 QEMU 版本有要求:
+
+| 功能 | 最低 QEMU 版本 |
+| ---- | -------------- |
+| UFS 存储 | 8.2.0 |
+| VirtIO Sound(`-sound virtio`) | 8.2.0 |
+
+### 3.2 环境变量
+
+| 变量 | 说明 |
+| ---- | ---- |
+| `RTT_QEMU_ROOT` | QEMU 可执行文件所在目录前缀(脚本会在其后拼接 `qemu-system-aarch64`) |
+| `RTT_ROOT` | RT-Thread 源码根目录,默认自动取 BSP 上两级目录 |
+
+### 3.3 基本启动
+
+在 BSP 目录下执行:
+
+```
+python qemu.py
+```
+
+或:
+
+```
+./qemu.py
+```
+
+首次运行会自动创建各存储设备对应的 64 MB `qcow2` 镜像。默认以 `-nographic` 模式启动,串口输出到当前终端。
+
+典型启动日志:
+
```
heap: [0x40042aa0 - 0x40142aa0]
\ | /
- RT - Thread Operating System
- / | \ 4.0.4 build Aug 6 2021
- 2006 - 2021 Copyright by rt-thread team
-Hi, this is RT-Thread!!
+ / | \ 5.3.0 build ...
+ 2006 - 2026 Copyright by rt-thread team
+hello rt-thread
msh />
```
-如果需要使用VirtIO-Console,请在新终端使用以下命令连接控制台:
+### 3.4 `qemu.py` 命令行参数
+
+| 参数 | 默认值 | 说明 |
+| ---- | ------ | ---- |
+| `-gic` | `2` | GIC 版本(`2` / `3` / `max`);`-smp` 大于 8 时自动切换为 GICv3 |
+| `-smp` | `RT_CPUS_NR`(4) | CPU 核心数 |
+| `-mem` | `128` | 内存大小(MB) |
+| `-el` | `1` | 异常级别:`1` 默认;`2` 开启虚拟化;`3` 开启 secure |
+| `-bootargs` | 见下文 | 内核启动参数 |
+| `-initrd` | — | 指定 initrd 镜像路径 |
+| `-graphic` | — | 图形模式(ramfb + VirtIO 键盘/平板),替代 `-nographic` |
+| `-gl` | — | 图形模式下挂载 `virtio-gpu-gl-pci` 并开启 QEMU 显示端 OpenGL(如 `-gl gtk`);需 QEMU 带 `--enable-opengl`、`--enable-virglrenderer`,且须与 `-graphic` 合用 |
+| `-debug` | — | 启用 GDB 调试(`-S -s`) |
+| `-dumpdtb` | — | 导出运行时 DTB 并转为 DTS |
+| `-dtb` | — | 使用自定义 DTB 文件 |
+| `-virtio-block` | `virtio` | VirtIO Block 磁盘镜像名前缀(生成 `virtio.qcow2`,挂载为 `vda`) |
+| `-scsi` | `scsi` | VirtIO SCSI 磁盘镜像名前缀 |
+| `-flash` | `flash` | pflash 磁盘镜像名前缀(pflash1,CFI NOR) |
+| `-emmc` | `emmc` | SDHCI eMMC 磁盘镜像名前缀 |
+| `-nvme` | `nvme` | NVMe 磁盘镜像名前缀 |
+| `-ahci` | `ahci` | AHCI SATA 磁盘镜像名前缀 |
+| `-ufs` | `ufs` | UFS 磁盘镜像名前缀(QEMU ≥ 8.2.0) |
+| `-cdrom` | — | SCSI CD-ROM 镜像路径(如 ISO 文件) |
+| `-sound` | `hda` | 音频设备:`hda`(Intel HDA)或 `virtio`(VirtIO Sound PCI) |
+| `-tap` | — | 使用 TAP 网卡(替代 user 模式) |
+| `-ssh` | `12055` | user 模式下 SSH 端口转发(`hostfwd=tcp::PORT-:22`) |
+| `-9p` | — | VirtIO 9P 共享目录路径(需在 menuconfig 中启用 VirtIO 9P) |
+| `-camera` | — | 启用 vfio-user 摄像头(仅 Linux,配合 `qemu-device-camera`) |
+| `-dtbo` | — | AMP 模式:指定 DTBO overlay 文件(如 `amp.dtsi`);**须 Smart 版本内核**(见下文说明) |
+
+默认 `-bootargs`:
+
+```
+console=ttyAMA0 earlycon cma=8M coherent_pool=2M root=vda0 rootfstype=elm rootwait rw
+```
+
+### 3.5 常用启动示例
+
+图形界面(VirtIO GPU + 键鼠):
+
+```
+./qemu.py -graphic
+```
+
+QEMU OpenGL 显示(`-gl`):
+
+```
+./qemu.py -graphic -gl gtk
+```
+
+> **说明**:`-gl` 仅在 QEMU / 宿主机显示链路侧启用 OpenGL(`virtio-gpu-gl-pci` + VirGL)。本 BSP 默认仅包含 VirtIO GPU 2D 帧缓冲驱动,**没有 OpenGL / VirGL 用户态与内核侧实现**,因此 `-gl` 不会带来 RT-Thread 内的 OpenGL 加速;图形演示请使用 `-graphic`(`virtio-gpu-device`)配合 framebuffer / HMI 测试。
+
+GDB 调试:
+
+```
+./qemu.py -debug
+```
+
+更大内存与 GICv3:
+
+```
+./qemu.py -mem 256 -gic 3
+```
+
+挂载 CD-ROM:
+
+```
+./qemu.py -cdrom /path/to/image.iso
+```
+
+VirtIO Sound 音频:
+
+```
+./qemu.py -sound virtio
+```
+
+9P 目录共享(需先启用 `RT_VIRTIO_9P`):
+
+```
+./qemu.py -9p /path/to/share
+```
+
+AMP 异构多核(RPMSG 从核,**须 Smart 版本**):
+
+```
+./qemu.py -dtbo amp.dtsi -mem 258
+```
+
+> **说明**:AMP 示例要求启用 **Smart 版本**(`RT_USING_SMART`)。标准版内核要求在虚拟地址与物理地址相等的区域运行;从核镜像由 QEMU `loader` 加载到 `amp.dtsi` 指定的固定物理地址(如 `kernel-entry = 0x48480000`),与主核 MMU 映射布局不同,标准版无法在该地址空间正常启动。请在 menuconfig 中开启 Smart 后重新编译。
+
+摄像头演示:
+
+```
+./qemu.py -graphic -camera
+```
+
+### 3.6 控制台与 Telnet
+
+| 端口 | 设备 | 说明 |
+| ---- | ---- | ---- |
+| 当前终端 | UART0(PL011) | 默认 `-nographic` 串口 |
+| `4321` | VirtIO Console | `telnet 127.0.0.1 4321`,端口名 `org.rt-thread.console` |
+| `4322` | PCI 8250 串口 | `telnet 127.0.0.1 4322` |
+| `4323` | AMP 从核控制台 | 仅 `-dtbo` 模式,`telnet localhost 4323` |
+
+VirtIO Console 连接示例:
+
```
telnet 127.0.0.1 4321
```
-如果使用tap网卡模式,以设备tap0为例,将qemu运行脚本
+### 3.7 网络
+
+默认使用 user 模式网络(`-netdev user`),SSH 端口转发到本机 `12055`(可用 `-ssh` 修改)。
+
+TAP 网卡模式示例(以 `tap0` 为例):
+
```
--netdev user,id=net0
+./qemu.py -tap
```
-修改为
+
+Linux 下需预先配置 TAP 网桥,Windows / WSL 下 TAP 支持有限。TAP 模式下 SSH 端口转发不可用。
+
+## 4. QEMU 默认挂载设备
+
+`qemu.py` 默认向虚拟机挂载以下设备(与驱动默认配置对应):
+
+| QEMU 设备 | 镜像文件 | RT-Thread 侧 |
+| --------- | -------- | ------------ |
+| `virtio-blk-device` | `virtio.qcow2` | VirtIO Block,根分区 `vda0` |
+| `virtio-scsi-pci` + `scsi-hd` | `scsi.qcow2` | VirtIO SCSI |
+| `scsi-cd`(可选 `-cdrom`) | 用户指定 | SCSI CD-ROM |
+| `pflash`(index=1) | `flash.qcow2` | MTD NOR CFI |
+| `sdhci-pci` + `sd-card` | `emmc.qcow2` | SDHCI eMMC(需启用 SDIO) |
+| `nvme` + `nvme-ns` | `nvme.qcow2` | NVMe |
+| `ahci` + `ide-hd` | `ahci.qcow2` | AHCI SATA |
+| `ufs` + `ufs-lu` | `ufs.qcow2` | UFS(QEMU ≥ 8.2.0) |
+| `virtio-net-device` | — | VirtIO Net(需启用网络协议栈) |
+| `virtio-rng-device` | — | VirtIO RNG |
+| `virtio-crypto-device` | — | VirtIO Crypto |
+| `virtio-serial-device` | — | VirtIO Console / RPROC Serial |
+| `pci-serial`(8250 PCI) | — | PCI 8250 串口 |
+| `intel-hda` + `hda-duplex` | — | Intel HDA 音频 |
+| `i6300esb` | — | I6300ESB 看门狗 |
+| `edu` | — | QEMU EDU 教学设备(MFD) |
+| `virtio-gpu-device`(`-graphic`) | — | VirtIO GPU 2D(默认) |
+| `virtio-gpu-gl-pci`(`-graphic -gl`) | — | QEMU OpenGL 显示设备;RT-Thread 侧无对应 GL 驱动 |
+| `virtio-keyboard-device` / `virtio-tablet-device` | — | VirtIO Input |
+| `virtio-9p-device`(`-9p`) | — | VirtIO 9P(需启用驱动) |
+| `virtio-sound-pci`(`-sound virtio`) | — | VirtIO Sound |
+| vfio-user 摄像头(`-camera`) | — | PCI 摄像头(BSP `drv_camera`) |
+
+## 5. 驱动支持情况
+
+### 5.1 默认已启用
+
+| 类别 | 驱动 | 说明 |
+| ---- | ---- | ---- |
+| 串口 | PL011 | UART0,系统控制台 `uart0` / `ttyAMA0` |
+| 串口 | 8250 PCI | PCI 串口,Telnet 端口 4322 |
+| RTC | PL031 | 实时时钟 |
+| GPIO | PL061 | GPIO 控制器 |
+| 时钟 | ARM Architected Timer | 系统 tick |
+| 看门狗 | I6300ESB | PCI 看门狗 |
+| 存储 | VirtIO Block | 块设备,`vda` |
+| 存储 | VirtIO SCSI | SD / CD-ROM |
+| 存储 | AHCI PCI | SATA 磁盘 |
+| 存储 | NVMe PCI | NVMe 磁盘 |
+| 存储 | UFS PCI | UFS 磁盘 |
+| 存储 | MTD NOR CFI | pflash 闪存 |
+| 存储 | BLK 分区 | DFS / EFI 分区表 |
+| 图形 | VirtIO GPU | 2D 帧缓冲(`-graphic`);不含 OpenGL / VirGL |
+| 图形 | Framebuffer | ROMFB 800×600,含 HMI / 图形测试 |
+| 图形 | LCD | LCD 设备框架 |
+| 输入 | VirtIO Input | 键盘、鼠标、平板(`-graphic`) |
+| 输入 | Touchscreen | 触摸屏框架 |
+| 输入 | Keyboard GPIO | GPIO 键盘 |
+| 输入 | Power | 电源键 |
+| 音频 | Intel HDA | 默认 `-sound hda` |
+| 音频 | VirtIO Sound | `-sound virtio` |
+| 加密 | HwCrypto | AES / DES / 3DES / RC4 / RNG |
+| 加密 | VirtIO Crypto | VirtIO 加密后端 |
+| 随机数 | VirtIO RNG | 硬件随机数 |
+| 通信 | VirtIO Console | Telnet 4321 |
+| 通信 | VirtIO RPROC Serial | Remoteproc 串口链路 |
+| 通信 | RPMSG | VirtIO RPMSG 字符设备 |
+| 通信 | Mailbox PIC | 邮箱中断控制器 |
+| 固件 | QEMU FW_CFG | 固件配置接口 |
+| 总线 | PCI | ECAM + Generic Host,MSI / MSI-X |
+| 总线 | VirtIO | MMIO + PCI 传输 |
+| 中断 | GICv2 / GICv3 / ITS | 含 GICv2m MSI |
+| 设备树 | OFW / FDT | 动态设备树解析 |
+| 其他 | DMA | DMA 框架 |
+| 其他 | MFD EDU / SYSCON | 多功能设备 |
+| 其他 | Regulator / Reset | 电源与复位框架 |
+| 文件系统 | DFS v2 | FatFs、devfs、romfs |
+| POSIX | 部分接口 | poll / select / termios / pipe 等 |
+
+### 5.2 默认未启用但可通过 menuconfig 开启
+
+本 BSP 已启用 PCI 总线与 VirtIO PCI 传输,QEMU 中也已挂载对应设备。下列驱动在默认 `.config` 中未勾选,开启相应 Kconfig 选项并重新编译后即可使用(无需修改 `qemu.py`):
+
+| 驱动 / 功能 | Kconfig 要点 | QEMU 设备 | 说明 |
+| ----------- | ------------ | --------- | ---- |
+| VirtIO Net | `RT_USING_SAL` + `RT_USING_LWIP` + `RT_USING_ETHERNET` | `virtio-net-device` | 网络协议栈未默认启用 |
+| VirtIO 9P | `RT_VIRTIO_9P` | `virtio-9p-device` | 配合 `-9p` 共享目录 |
+| SDHCI eMMC | `RT_USING_SDIO` + `RT_SDIO_SDHCI_PCI` | `sdhci-pci` | eMMC 存储 |
+| SDIO DW MMC PCI | `RT_USING_SDIO` + `RT_SDIO_DW_MMC_PCI` | — | DesignWare MMC |
+| USB | `RT_USING_USB_HOST` / `RT_USING_USB_DEVICE` | 需自行添加 USB 控制器 | 非 QEMU 默认设备 |
+| CherryUSB | `RT_USING_CHERRYUSB` | 需自行添加 USB 控制器 | — |
+| I2C / SPI | `RT_USING_I2C` / `RT_USING_SPI` | 视具体 PCI 设备 | 需对应 PCI 控制器驱动 |
+| CAN | `RT_USING_CAN` | 视具体 PCI 设备 | — |
+| Sensor | `RT_USING_SENSOR` | — | — |
+| WiFi | `RT_USING_WIFI` | — | — |
+| PM 电源管理 | `RT_USING_PM` | — | — |
+| Pinctrl | `RT_USING_PINCTRL` | — | — |
+| SCMI 固件 | `RT_FIRMWARE_ARM_SCMI` + `RT_VIRTIO_SCMI` | — | — |
+
+> **说明**:凡标注 `depends on RT_USING_PCI` 的 PCI 类驱动,均可在此 BSP 上通过 menuconfig 启用;QEMU 侧若未挂载对应设备,需自行在 `qemu.py` 中添加 `-device` 参数。
+
+### 5.3 BSP 特有功能(驱动层)
+
+| 功能 | 配置项 | 启动方式 |
+| ---- | ------ | -------- |
+| HMI 图形测试 | `RT_GRAPHIC_HMI_TEST` | `-graphic`(`drv_romfb.c` 内嵌) |
+| 图形绘制测试 | `RT_GRAPHIC_GRAPHIC_TEST` | `-graphic`(`drv_romfb.c` 内嵌) |
+| 摄像头驱动 | `RT_SOC_CAMERA` | `-graphic -camera` |
+
+### 5.4 示例应用(`applications/`)
+
+| 源文件 | 编译条件 | 说明 |
+| ------ | -------- | ---- |
+| `main.c` | 始终编译 | 入口 `main()`,打印 `hello rt-thread` |
+| `amp.c` | `RT_RPMSG_RT_THREAD_VIRTIO` | AMP 异构多核与 RPMSG 通信示例 |
+| `camera.c` | `RT_SOC_CAMERA` | 摄像头画面叠加到 framebuffer |
+
+**`main.c`**
+
+默认应用,系统启动后输出 `hello rt-thread`,随后进入 msh。
+
+**`amp.c`(AMP + RPMSG)**
+
+主核通过设备树 `amp_soc` 节点,以 PSCI 拉起额外一颗 CPU 运行从核 RT-Thread,主从之间通过 VirtIO RPMSG + Mailbox 通信。主核将 VirtIO Block `vdb` 的资源信息写入从核 DTB 后启动从核。
+
+**版本要求**:须 **Smart 版本**(menuconfig 中 `RT_USING_SMART`)。标准版内核必须在虚拟地址与物理地址一致的映射下运行;AMP 从核由 QEMU 加载到独立物理内存区域(见 `amp.dtsi` 中 `amp_memory`、`kernel-entry` 等),不满足该约束,因此标准版无法用于 AMP 演示。
+
+启动方式:
+
+```
+./qemu.py -dtbo amp.dtsi -mem 258
+```
+
+从核控制台:`telnet localhost 4323`。
+
+msh 命令:
+
+| 命令 | 说明 |
+| ---- | ---- |
+| `rpmsg_write <设备> <消息>` | 向 RPMSG 字符设备写入消息 |
+| `rpmsg_read <设备>` | 读取 RPMSG 字符设备全部消息 |
+| `amp_startup` | 手动触发 AMP 从核启动(同时启用控制台与 msh 时导出;否则自动在应用初始化阶段执行) |
+
+系统启动时会自动创建 RPMSG 端点(`rpmsg_char0`,端点名 `rpmsg-char`,地址 114/514)。从核侧地址互换。
+
+**`camera.c`(摄像头预览)**
+
+将 vfio-user PCI 摄像头画面居中叠加到 framebuffer,默认设备 `camera0` → `fb0`,约 10 秒(300 帧)。
+
+启动方式:
+
+```
+./qemu.py -graphic -camera
+```
+
+msh 命令:
+
```
--netdev tap,id=net0,ifname=tap0
+camera [摄像头设备] [framebuffer设备]
```
-## 4.支持情况
+示例:`camera camera0 fb0`
+
+## 6. 存储与分区
+
+- 根文件系统默认挂载在 VirtIO Block 第一个分区 `vda0`,文件系统类型 `elm`(FatFs)。
+- 各存储镜像首次运行自动创建为 64 MB `qcow2` 文件,可通过 `qemu-img` 扩容或预先替换。
+- pflash0 用于 BootROM(如 UEFI),本 BSP 使用 pflash1(`flash.qcow2`)作为 CFI NOR;pflash0 数据在 QEMU 退出后不保留。
+- Linux 下可使用 `qemu-nbd` + `fdisk` 对 `qcow2` 镜像分区(Windows 不支持)。
+
+## 7. QEMU Monitor 热插拔提示
+
+在 QEMU Monitor 中可动态增删 VirtIO 串口端口:
+
+```
+(qemu) chardev-add socket,host=127.0.0.1,port=4323,server=on,wait=off,telnet=on,id=console2
+(qemu) device_add virtserialport,chardev=console2,name=org.rt-thread.port,id=port2
+(qemu) device_del port2
+(qemu) chardev-remove console2
+```
+
+VirtIO 设备可选参数(在 `qemu.py` 中按需添加):
+
+- 禁用 legacy:` -global virtio-mmio.force-legacy=false`
+- Virtqueue packed:` -device virtio-XXX-device,packed=on`
+- PCI 模式(≥ 1.0):` -device virtio-XXX-pci,disable-legacy=on`
+
+## 8. 修改配置后的注意事项
-| 驱动 | 支持情况 | 备注 |
-| ------ | ---- | :------: |
-| UART | 支持 | UART0 |
-| RTC | 支持 | - |
-| GPIO | 支持 | - |
-| VIRTIO BLK | 支持 | - |
-| VIRTIO NET | 支持 | - |
-| VIRTIO Console | 支持 | - |
-| VIRTIO GPU | 支持 | 2D |
-| VIRTIO Input | 支持 | Keyboard, Mouse, Tablet | \ No newline at end of file
+- 修改 CPU 数量后,同步调整 `qemu.py -smp` 或重新编译使 `RT_CPUS_NR` 与之一致。
+- 超过 8 核时 GIC 自动切换为 v3,也可手动指定 `-gic 3`。
+- 启用 9P 目录共享需 QEMU 编译时包含 virtfs(`--enable-virtfs`)。
+- 使用 `-gl` 需 QEMU 编译时包含 OpenGL / VirGL(`--enable-opengl`、`--enable-virglrenderer`);这与 RT-Thread 是否支持 OpenGL 无关,当前软件栈默认仅 2D 图形。
+- AMP(`-dtbo`)须 Smart 版本内核(`RT_USING_SMART`);标准版要求 VA=PA 运行,无法用于从核固定物理地址加载场景。
+- 修改根设备或启动参数时,通过 `-bootargs` 覆盖默认参数。
diff --git a/bsp/qemu-virt64-aarch64/applications/SConscript b/bsp/qemu-virt64-aarch64/applications/SConscript
index 19c43aa9bf..8a1d164ac6 100644
--- a/bsp/qemu-virt64-aarch64/applications/SConscript
+++ b/bsp/qemu-virt64-aarch64/applications/SConscript
@@ -4,7 +4,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd]
-if not GetDepend(['RT_RPMSG_RT_THREAD_VIRTIO']):
+if not GetDepend(['RT_USING_SMART']):
SrcRemove(src, ['amp.c'])
if not GetDepend(['RT_SOC_CAMERA']):
diff --git a/bsp/qemu-virt64-aarch64/applications/camera.c b/bsp/qemu-virt64-aarch64/applications/camera.c
index b1593c461f..4dc129da4b 100755
--- a/bsp/qemu-virt64-aarch64/applications/camera.c
+++ b/bsp/qemu-virt64-aarch64/applications/camera.c
@@ -52,7 +52,7 @@ static void blend_camera_to_fb(rt_uint8_t *cam_fb, rt_uint8_t *fb,
src_row = cam_fb + y * cam_w * 3;
dst = fb + (dst_y + y) * fb_pitch + dst_x * 2;
dst_pixel = (rt_uint16_t*)dst;
-
+
for (x = 0; x < draw_w; ++x)
{
rt_uint8_t r = src_row[x * 3 + 0];
@@ -63,7 +63,7 @@ static void blend_camera_to_fb(rt_uint8_t *cam_fb, rt_uint8_t *fb,
}
break;
}
-
+
case RTGRAPHIC_PIXEL_FORMAT_ARGB888:
{
rt_uint32_t *dst_pixel;
@@ -72,7 +72,7 @@ static void blend_camera_to_fb(rt_uint8_t *cam_fb, rt_uint8_t *fb,
src_row = cam_fb + y * cam_w * 3;
dst = fb + (dst_y + y) * fb_pitch + dst_x * 4;
dst_pixel = (rt_uint32_t*)dst;
-
+
for (x = 0; x < draw_w; ++x)
{
rt_uint8_t r = src_row[x * 3 + 0];
@@ -83,7 +83,7 @@ static void blend_camera_to_fb(rt_uint8_t *cam_fb, rt_uint8_t *fb,
}
break;
}
-
+
case RTGRAPHIC_PIXEL_FORMAT_ABGR888:
{
rt_uint32_t *dst_pixel;
@@ -92,7 +92,7 @@ static void blend_camera_to_fb(rt_uint8_t *cam_fb, rt_uint8_t *fb,
src_row = cam_fb + y * cam_w * 3;
dst = fb + (dst_y + y) * fb_pitch + dst_x * 4;
dst_pixel = (rt_uint32_t*)dst;
-
+
for (x = 0; x < draw_w; ++x)
{
rt_uint8_t r = src_row[x * 3 + 0];
@@ -103,7 +103,7 @@ static void blend_camera_to_fb(rt_uint8_t *cam_fb, rt_uint8_t *fb,
}
break;
}
-
+
default:
/* Fallback: direct copy for RGB888 */
for (y = 0; y < draw_h; ++y)
diff --git a/bsp/qemu-virt64-aarch64/qemu-device-camera.c b/bsp/qemu-virt64-aarch64/qemu-device-camera.c
index 494fb7275e..5025ea4ffd 100755
--- a/bsp/qemu-virt64-aarch64/qemu-device-camera.c
+++ b/bsp/qemu-virt64-aarch64/qemu-device-camera.c
@@ -14,6 +14,19 @@ exit
* 2026-04-07 GuEe-GUI the first version
*/
+/*
+ * Install libvfio-user
+ * 1. Dependency library
+ * Debian:
+ * sudo apt install libjson-c-dev libcmocka-dev
+ * RedHat:
+ * sudo yum install json-c-devel libcmocka-devel
+ *
+ * 2. git clone https://github.com/nutanix/libvfio-user.git
+ * 3. meson build
+ * 4. ninja -C build
+ */
+
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
diff --git a/bsp/qemu-virt64-aarch64/qemu.py b/bsp/qemu-virt64-aarch64/qemu.py
index 91b1ed1e33..ef720849f6 100755
--- a/bsp/qemu-virt64-aarch64/qemu.py
+++ b/bsp/qemu-virt64-aarch64/qemu.py
@@ -96,6 +96,7 @@ q_flash = "flash"
q_emmc = "emmc"
q_nvme = "nvme"
q_ahci = "ahci"
+q_sound = "hda"
q_gl = None
q_9p = ""
q_ufs = "ufs"
@@ -129,6 +130,7 @@ for i in range(len(opt)):
if is_opt("flash", inkey): q_flash = opt[i + 1]
if is_opt("emmc", inkey): q_emmc = opt[i + 1]
if is_opt("nvme", inkey): q_nvme = opt[i + 1]
+ if is_opt("sound", inkey): q_sound = opt[i + 1]
if is_opt("gl", inkey): q_gl = "-device virtio-gpu-gl-pci -display {},gl=on ".format(opt[i + 1])
if is_opt("9p", inkey): q_9p = opt[i + 1]
if is_opt("ufs", inkey): q_ufs = opt[i + 1]
@@ -164,6 +166,18 @@ elif q_gl != None:
print("Error: GL should in graphic mode")
exit(-1)
+# Sound
+if q_sound == "hda":
+ q_sound = "-device intel-hda -device hda-duplex "
+elif q_sound == "virtio":
+ if qemu_version < '8.2.0':
+ print("Error: VirtIO Sound is not in this version: {}".format(qemu_version.toString()))
+ exit(-1)
+ q_sound = "-device virtio-sound-pci,audiodev=vsnd -audiodev alsa,id=vsnd "
+else:
+ print("Error: Invalid -sound {}".format(q_sound))
+ exit(-1)
+
# Net
# --enable-slirp
# Enable TAP in example (not support in Windows, Maybe WSL2):
@@ -284,6 +298,7 @@ cmd_base = """
-device virtio-serial-device \
-chardev socket,host=127.0.0.1,port=4321,server=on,wait=off,telnet=on,id=console0 \
-device virtserialport,chardev=console0,name=org.rt-thread.console \
+ {} \
-drive if=pflash,file={}.qcow2,format=qcow2,index=1 \
-device pci-serial,chardev=console1 \
-chardev socket,host=127.0.0.1,port=4322,server=on,wait=off,telnet=on,id=console1 \
@@ -304,7 +319,7 @@ cmd_base = """
def cmd():
return cmd_base.format(RTT_QEMU_ROOT, q_gic, q_dumpdtb, q_el, q_smp, q_mem, q_bootargs, q_dtb, q_initrd,
q_graphic, q_debug, q_block, q_net, q_scsi, cdrom_cfg, virtfs_cfg,
- q_flash, q_emmc, q_nvme, q_ahci, ufs_cfg, camera_cfg, amp_cfg)
+ q_sound, q_flash, q_emmc, q_nvme, q_ahci, ufs_cfg, camera_cfg, amp_cfg)
def dumpdtb():
dtb = q_dumpdtb.split('=')[-1]
diff --git a/bsp/qemu-virt64-aarch64/rtconfig.h b/bsp/qemu-virt64-aarch64/rtconfig.h
index 9de8955219..2cdc287372 100644
--- a/bsp/qemu-virt64-aarch64/rtconfig.h
+++ b/bsp/qemu-virt64-aarch64/rtconfig.h
@@ -61,7 +61,7 @@
/* end of rt_strnlen options */
/* end of klibc options */
-#define RT_NAME_MAX 16
+#define RT_NAME_MAX 24
#define RT_USING_SMP
#define RT_CPUS_NR 4
#define RT_ALIGN_SIZE 8
@@ -78,6 +78,8 @@
#define RT_USING_TIMER_SOFT
#define RT_TIMER_THREAD_PRIO 4
#define RT_TIMER_THREAD_STACK_SIZE 8192
+#define RT_USING_CPU_USAGE_TRACER
+#define RT_CPU_USAGE_CALC_INTERVAL_MS 200
/* kservice options */
@@ -100,6 +102,7 @@
#define RT_USING_MEMPOOL
#define RT_USING_SMALL_MEM
+#define RT_USING_SLAB
#define RT_USING_MEMHEAP
#define RT_MEMHEAP_FAST_MODE
#define RT_USING_MEMHEAP_AS_HEAP
@@ -151,7 +154,7 @@
#define FINSH_USING_MSH
#define FINSH_THREAD_NAME "tshell"
#define FINSH_THREAD_PRIORITY 20
-#define FINSH_THREAD_STACK_SIZE 4096
+#define FINSH_THREAD_STACK_SIZE 8192
#define FINSH_USING_HISTORY
#define FINSH_HISTORY_LINES 10
#define FINSH_USING_SYMTAB
@@ -167,9 +170,7 @@
#define DFS_USING_POSIX
#define DFS_USING_WORKDIR
#define DFS_FD_MAX 32
-#define RT_USING_DFS_V1
-#define DFS_FILESYSTEMS_MAX 4
-#define DFS_FILESYSTEM_TYPES_MAX 8
+#define RT_USING_DFS_V2
#define RT_USING_DFS_ELMFAT
/* elm-chan's FatFs, Generic FAT Filesystem Module */
@@ -187,7 +188,6 @@
#define RT_DFS_ELM_MUTEX_TIMEOUT 3000
/* end of elm-chan's FatFs, Generic FAT Filesystem Module */
#define RT_USING_DFS_DEVFS
-#define RT_USING_DFS_9PFS
#define RT_USING_DFS_ROMFS
/* end of DFS: device virtual file system */
@@ -204,6 +204,7 @@
#define RT_USING_SERIAL_V1
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 256
+#define RT_USING_SERIAL_BYPASS
#define RT_SERIAL_PL011
#define RT_SERIAL_8250
#define RT_SERIAL_8250_PCI
@@ -222,6 +223,12 @@
#define RT_RTC_PL031
#define RT_USING_WDT
#define RT_WDT_I6300ESB
+#define RT_USING_AUDIO
+#define RT_AUDIO_REPLAY_MP_BLOCK_SIZE 4096
+#define RT_AUDIO_REPLAY_MP_BLOCK_COUNT 2
+#define RT_AUDIO_RECORD_PIPE_SIZE 2048
+#define RT_AUDIO_INTEL_HDA
+#define RT_USING_TOUCH
#define RT_USING_LCD
#define RT_USING_GRAPHIC
#define RT_GRAPHIC_FB
@@ -247,9 +254,19 @@
#define RT_INPUT_POWER
#define RT_INPUT_KEYBOARD
#define RT_INPUT_KEYBOARD_GPIO
+#define RT_INPUT_TOUCHSCREEN
+#define RT_USING_MBOX
+#define RT_MBOX_PIC
+#define RT_USING_RPMSG
+#define RT_RPMSG_CHAR_MSG_MAX 64
+#define RT_RPMSG_CHAR_MSG_SIZE_MAX 256
+#define RT_RPMSG_RT_THREAD_VIRTIO
#define RT_USING_ATA
#define RT_ATA_AHCI
#define RT_ATA_AHCI_PCI
+#define RT_USING_NVME
+#define RT_USING_NVME_IO_QUEUE 4
+#define RT_NVME_PCI
#define RT_USING_BLK
/* Partition Types */
@@ -260,9 +277,12 @@
#define RT_USING_SCSI
#define RT_SCSI_SD
#define RT_SCSI_CDROM
+#define RT_USING_UFS
+#define RT_UFS_PCI
#define RT_USING_FIRMWARE
#define RT_FIRMWARE_QEMU_FW_CFG
#define RT_USING_REGULATOR
+#define RT_USING_RESET
/* Power Management (PM) Domains device drivers */
@@ -273,10 +293,13 @@
#define RT_VIRTIO_BLK
#define RT_VIRTIO_CONSOLE
#define RT_VIRTIO_RNG
+#define RT_VIRTIO_RPMSG
#define RT_VIRTIO_SCSI
#define RT_VIRTIO_RPROC_SERIAL
#define RT_VIRTIO_GPU
+#define RT_VIRTIO_INPUT
#define RT_VIRTIO_CRYPTO
+#define RT_VIRTIO_SOUND
#define RT_USING_DMA
#define RT_USING_MFD
#define RT_MFD_EDU
@@ -308,6 +331,10 @@
/* SoC (System on Chip) Drivers */
+#define RT_GRAPHIC_ROMFB_WIDTH 800
+#define RT_GRAPHIC_ROMFB_HEIGHT 600
+#define RT_SOC_CAMERA
+/* end of SoC (System on Chip) Drivers */
/* end of Device Drivers */
/* C/C++ and POSIX layer */
@@ -333,6 +360,7 @@
#define RT_USING_POSIX_TERMIOS
#define RT_USING_POSIX_DELAY
#define RT_USING_POSIX_CLOCK
+#define RT_USING_POSIX_TIMER
/* Interprocess Communication (IPC) */
@@ -505,14 +533,6 @@
/* GD32 Drivers */
/* end of GD32 Drivers */
-
-/* HPMicro SDK */
-
-/* end of HPMicro SDK */
-
-/* FT32 HAL & SDK Drivers */
-
-/* end of FT32 HAL & SDK Drivers */
/* end of HAL & SDK Drivers */
/* sensors drivers */