参考文章
- 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
等