参考文章
-
qemu 源码编译 qemu-system-aarch64 的方法
-
RT-Thread 5.0.1 qemu-virt64-aarch64 解决编译问题
前言
-
最近需要使用 RT-Thread
qemu-virt64-aarch64
,验证 aarch64 平台,也就是 ARM64 平台的一些网络功能,需要开启qemu-virt64-aarch64
的网络功能 -
开发环境使用的 ubuntu 20.04,发现开启网络驱动与组件后,无法正常的初始化 qemu 网络设备
-
经过验证,发现需要更新 qemu
qemu-system-aarch64
,更新方法 参考上篇文章:
qemu 源码编译 qemu-system-aarch64 的方法
开发环境
-
编译
qemu-virt64-aarch64
,建议使用 ubuntu 20.04 Linux 环境,而不是 windows 环境。 -
具体编译环境参考: RT-Thread 5.0.1 qemu-virt64-aarch64 解决编译问题
-
set_env.sh
#!/bin/bash
export RTT_CC=gcc
#export RTT_EXEC_PATH=/home/zhangsz/linux/tools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin
export RTT_EXEC_PATH=/home/zhangsz/linux/tools/gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf/bin
export RTT_CC_PREFIX=aarch64-none-elf-
export PATH=$PATH:$RTT_EXEC_PATH
echo "CC => ${RTT_CC}"
echo "PREFIX => ${RTT_CC_PREFIX}"
echo "EXEC_PATH => ${RTT_EXEC_PATH}"
source set_env.sh
,注意使用aarch64-none-elf-
工具链,否则可能编译失败
开启 qemu-virt64-aarch64 网络
-
默认 RT-Thread BSP
qemu-virt64-aarch64
为开启网络功能,需要手动开启 -
scons --menuconfig
进入图形配置界面
.config - RT-Thread Project Configuration
> AARCH64 qemu virt64 configs
[*] Using VirtIO NET
-
开启网络组件: SAL、net device、 LWIP
-
适当增加 tcp 与 lwip 线程的栈大小
-
确认
Using VirtIO NET
的驱动框架使能
.config - RT-Thread Project Configuration
> RT-Thread Components
> Device Drivers
> Using VirtIO device drivers
--- Using VirtIO device drivers
VirtIO Version (VirtIO v1.0) --->
-*- Using VirtIO NET
编译与运行
-
scons 即可编译,当前确认使用 工具链
gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz
与gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar.xz
均可以正常运行 qemu -
运行效果
小结
-
如果 开启 qemu 后,没有发现网络设备:如
virtio-net0 Network Interface 1
,需要更新 qemu 的版本,也就是qemu-system-aarch64
的版本,如 7.0 以上,当前最新应该是 8.0 -
开启了 qemu 网络组件,还需要进一步使用网络组件,实现相应的网络功能,如
wget
https
等