Simics是否支持SMM?QSP-x86平台SMM模拟及固件源码相关问询
Simics QSP-x86相关技术问题解答
1. QSP-x86的SMM模拟支持情况
Simics QSP-x86官方发布的标准版本已完整实现SMM全链路模拟,包含SMRAM硬件隔离、SMRR寄存器控制、SMI触发与响应处理逻辑,可直接用于SMM代码调试。
你在GUI调试器中找不到相关入口的原因是:默认调试视图不会主动展示硬件保护状态下的SMRAM区域,也不会默认加载SMM专属寄存器组,你可以通过以下操作访问相关内容:
- 先通过调试器命令行执行
pci_read 0 0 0 0x9c读取Host Bridge的SMRR配置寄存器,确认SMRAM基地址和使能状态后,手动将对应地址范围添加到内存监视列表 - 手动将调试上下文切换到SMM执行模式后,寄存器视图会自动加载SMM专属寄存器组
你也可以直接执行break smm_entry命令在SMM入口点下断点,触发SMI后即可直接跳转到SMM处理代码上下文调试。
2. Simics QSP固件源码与构建说明
Simics QSP默认搭载的预编译固件确实是TianoCore/EDK2的定制构建版本,对应基线为EDK2 202208稳定分支,仅针对Simics虚拟硬件的设备模型做了少量适配调整,不属于独立的自研固件项目:
- 适配后的完整源码可直接在完整版Simics安装包的
src/firmware/edk2目录下获取,无需额外申请权限 - 构建流程和标准EDK2构建完全一致,操作步骤如下:
- 提前安装EDK2标准依赖:Python3、NASM、对应平台的编译链(Linux用GCC、Windows用Visual Studio)
- 进入源码目录后执行
source edksetup.sh(Linux环境)或edksetup.bat(Windows环境)初始化构建环境 - 执行
build -p SimicsQspPkg/SimicsQspX64.dsc -a X64 -t GCC5(GCC编译链为例)即可生成适配QSP-x86的固件镜像
构建完成后修改QSP虚拟机配置中的bios参数,指向新生成的固件镜像即可生效。
内容的提问来源于stack exchange,提问作者Jimmy Wu
相关产品推荐
相关产品推荐

