文章目录
- QEMU 官网
- QEMU 文档
- QEMU 简介
- QEMU 安装
- QEMU 命令
- 启动虚拟机
- 串口控制台
- 监控命令行
- FreeRTOS
- 安装编译工具
- FreeRTOS 源码
- RISC-V-Qemu-virt_GCC 示例
- 编译 RISC-V-Qemu-virt_GCC
- 启动虚拟机运行 FreeRTOS
QEMU 官网
- https://www.qemu.org/
QEMU 文档
- https://www.qemu.org/docs/master/
QEMU 简介
QEMU(Quick Emulator)是一款开源的虚拟机模拟器和虚拟化工具,它支持多种硬件架构和操作系统。QEMU 可以模拟整个计算机系统的硬件,包括处理器、内存、硬盘、网络接口等,从而使用户能够在不同的硬件环境下运行操作系统和应用程序。
-
多架构支持: QEMU 支持多种硬件架构,包括 x86、ARM、MIPS、PowerPC、SPARC 和 RISC-V 等。这使得用户可以在不同的主机平台上模拟各种计算机系统。
-
灵活的虚拟化模式:
- 用户模式仿真:QEMU 可以在用户模式下模拟不同架构的二进制文件,使得用户可以在一种体系结构上运行另一种体系结构的软件。
- 全系统仿真:在这种模式下,QEMU 模拟整个计算机系统,包括处理器、内存、存储和外围设备。用户可以在虚拟环境中安装和运行完整的操作系统。
- 硬件加速:通过与硬件虚拟化技术(如 Intel VT-x 和 AMD-V)结合,QEMU 可以利用主机系统的硬件加速功能,提高虚拟化性能。
-
快照和迁移: QEMU 支持虚拟机快照功能,用户可以保存虚拟机的当前状态,并在需要时恢复。此外,还支持虚拟机的迁移,即将虚拟机从一个主机迁移到另一个主机。
-
图形界面: QEMU 提供了多种用户界面选项,包括命令行界面和图形用户界面(如 QEMU GUI 和 Virt-Manager)。
-
网络和存储支持: QEMU 提供了丰富的网络和存储选项,可以模拟各种网络设备和存储设备,以及支持通过网络共享和虚拟磁盘文件等功能。
-
开源和社区支持: 作为一个开源项目,QEMU 拥有活跃的开发者社区,用户可以获得免费的技术支持和持续更新的功能。
使用场景:
- 开发和测试:开发人员可以在 QEMU 上测试和调试软件,尤其是在不具备目标硬件的情况下。
- 教育:QEMU 提供了一个实验平台,可以帮助学生和研究人员理解计算机体系结构和操作系统。
- 安全研究:安全研究人员可以在隔离的虚拟环境中分析恶意软件或进行其他安全研究。
QEMU 安装
- QEMU 安装包下载:https://www.qemu.org/download/#macos
注: Mac 环境 Homebrew 方式安装
# 安装 QEMU 虚拟化工具
brew install qemu
QEMU 命令
启动虚拟机
qemu-system-[arch] -hda [disk-image] -m [memory] -smp [cpus] -net [network-options]
- arch:指定架构,例如 x86_64、arm、mips 等。
- -hda [disk-image]:指定虚拟硬盘映像文件。
- -m [memory]:设置虚拟机内存大小,例如 1024 表示 1GB。
- -smp [cpus]:指定虚拟机的 CPU 核心数。
- -net [network-options]:配置网络选项。
串口控制台
qemu-system-[arch] -hda [disk-image] -serial mon:stdio
监控命令行
qemu-system-[arch] -hda [disk-image] -monitor stdio
FreeRTOS
FreeRTOS 是一款市场领先的嵌入式系统, RTOS 支持 40 多种处理器架构,内存占用小,执行时间快,具有尖端的 RTOS 功能和库,包括对称多处理 (SMP)、具有 IPv6 支持的线程安全 TCP 堆栈以及与云服务的无缝集成。它是开源的,并得到了积极的支持和维护。
- Github: https://github.com/FreeRTOS/FreeRTOS
- 官方文档: https://www.freertos.org/zh-cn-cmn-s
安装编译工具
# 安装 GCC 编译器
brew install gcc
# 安装 ARM Cortex-M 处理器的 GCC 编译器工具链
brew install gcc-arm-none-eabi
# 通过 Homebrew Cask 安装 GCC ARM Embedded 工具链
brew install --cask gcc-arm-embedded
- 安装 RISC-V 工具链
# 提供 RISC-V 相关的软件包和工具链
brew tap riscv-software-src/riscv
# 安装 RISC-V 相关的工具链和工具
brew install riscv-tools
注: riscv-tools 安装过程慢。
FreeRTOS 源码
# 克隆 FreeRTOS 项目及其所有子模块
git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules
- 进入源码目录
cd FreeRTOS
RISC-V-Qemu-virt_GCC 示例
注: 该示例用于 RISC-V 架构的交叉编译工具链,特别适用于 QEMU 虚拟环境 中进行开发和测试。这个工具链结合了 GCC 编译器和 QEMU 模拟器,以支持 RISC-V 架构的开发工作。
cd FreeRTOS/Demo/RISC-V-Qemu-virt_GCC
编译 RISC-V-Qemu-virt_GCC
make
- 编译成功输出 RTOSDemo.axf 文件。
启动虚拟机运行 FreeRTOS
启动 QEMU 模拟器来运行编译后的 RISC-V 程序
qemu-system-riscv32 -nographic -machine virt \
-bios none \
-smp 4 \
-kernel ./build/RTOSDemo.axf
- qemu-system-riscv32: 启动 QEMU 的 RISC-V 32-bit 模拟器。
- -nographic: 不使用图形界面,所有输出和输入都在终端中进行。
- -machine virt: 使用 QEMU 的虚拟 RISC-V 机器模型。
- -bios none: 不使用 BIOS,适用于裸机或嵌入式系统。
- -smp 4: 分配 4 个 CPU 核心给虚拟机。
- -kernel ./build/RTOSDemo.axf: 加载并启动指定的内核镜像(RTOSDemo.axf)。
- 使用 -monitor 选项允许你启用 QEMU 的监控控制台,你可以在监控控制台中查看 QEMU 的运行状态,并进行一些控制操作。
qemu-system-riscv32 -machine virt \
-bios none \
-smp 4 \
-kernel ./build/RTOSDemo.axf -monitor stdio
- 使用 -serial 选项允许你将 QEMU 的串行输出重定向到文件或其他终端。这对于捕获程序输出或调试信息非常有用。
qemu-system-riscv32 -machine virt \
-bios none \
-smp 4 \
-kernel ./build/RTOSDemo.axf -serial mon:stdio