You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为QEMU新增可仿真的自定义系统、开发板或SOC模型?

QEMU新增ARM Cortex-M33 SOC仿真实现方案

前置准备

  • 拉取QEMU最新稳定版源码完成本地编译,确认自带的qemu-system-arm可以正常运行现有Cortex-M33架构的开发板仿真,验证ARMv8-M架构支持正常
  • 收集目标SOC的完整官方技术手册,提取核心参数:完整内存映射表、外设寄存器定义、中断号分配表、时钟配置、启动流程逻辑

实现步骤

1. 复用已有的Cortex-M33核心实现

QEMU内置了标准Cortex-M33的CPU核心模型,无需从零开发核心。直接在hw/arm/目录下新建目标SOC的实现文件,参考同目录下其他M33架构SOC的初始化代码,实例化M33核心对象即可。

2. 注册核心内存与标配外设

  • 按照手册定义的Flash、SRAM的基地址与容量,调用内存区域相关接口注册对应内存段
  • 实例化M33标配的NVIC中断控制器、SysTick定时器,按照手册的中断映射关系完成绑定

3. 开发自定义外设模型

SOC独有的外设(GPIO、UART、SPI、ADC等)需要单独实现:

  • 每个外设对应独立的代码文件,可放在hw/misc/或者单独新建的SOC专属目录下
  • 所有外设继承DeviceState基类,实现对应寄存器的读写回调逻辑,对外暴露中断输出端口绑定到NVIC对应中断号
  • 同类型外设可以直接参考QEMU现有实现做适配修改,降低开发量

4. 完成SOC整体初始化

在SOC的实现文件中编写整体初始化函数,将CPU核心、内存、所有外设按照内存映射表挂载到系统总线,配置正确的启动地址。

5. 修改编译配置

更新hw/arm/Kconfig和hw/arm/meson.build文件,添加新增SOC的编译选项,将新增的代码文件纳入编译链路。

6. 验证调试

  • 编译完成后执行qemu-system-arm -M ?,确认新增的SOC机型已经出现在支持列表中
  • 先运行极简裸机测试固件(如UART打印、LED翻转逻辑)验证基础功能正常
  • 逐步测试中断响应、外设通信、低功耗模式等复杂功能,对照手册修正模拟逻辑

参考资料

所有开发相关的官方指引都可以在QEMU源码的docs/devel/目录下找到,重点关注设备模型开发规范、ARM架构仿真开发说明、内存API使用手册三部分内容即可。


内容的提问来源于stack exchange,提问作者tchan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:51:02