Simics是否使用SMM?



我想了解QSP-x86项目是否完全模拟SMM。我在GUI调试器的可用寄存器/内存中没有看到任何东西,这表明我有办法看到SMRAM/SMI处理程序代码。因此,我想知道我是否可以使用它来调试一些SMM代码或不。

我发现了一个页面,上面写着"Simics快速启动平台是一个基于英特尔的平台,从tianocore基础启动……",那么Simics QSP源代码在某个地方可用吗?或者它只是EDK2/UDK的一个特殊版本?如果是这样,构建哪一个以及如何构建它?(因为如果这只是我可以摆弄的一个特定的TianoCore构建,那将使我的生活更轻松。)

关于UEFI:

如果你看https://software.intel.com/content/www/us/en/develop/articles/simics-simulator.html有一个链接到https://github.com/tianocore/edk2-platforms/tree/master/Platform/Intel/SimicsOpenBoardPkg

您还可以查看Slim Boot Loader项目以获取另一个与qsp兼容的BIOS: https://slimbootloader.github.io/supported-hardware/qsp.html

多发性骨髓瘤:

要在目标核心进入SMM时停止,请使用hap断点(目前没有专用命令可用)。即bp.hap.break

如果您在运行qsp-client-core。您应该看到Simics脚本:

simics> bp.hap.break X86_Enter_SMM
Breakpoint 1: Break on hap X86_Enter_SMM
simics> bp.list
┌──┬──────────────────────────┬───────┬───────┬────────────┬─────────┐
│ID│       Description        │Enabled│Oneshot│Ignore count│Hit count│
├──┼──────────────────────────┼───────┼───────┼────────────┼─────────┤
│ 1│Break on hap X86_Enter_SMM│  true │ false │           0│        0│
└──┴──────────────────────────┴───────┴───────┴────────────┴─────────┘
simics> r
[board.mb.sb.lpc.bank.cs_conf unimpl] Write to unimplemented field cs_conf.oic.aen (0x31ff) (value written = 0x01, contents = 0x00), will not warn again.
[board.mb.cpu0.core[1][0]] Breakpoint 1: board.mb.cpu0.core[1][0] X86_Enter_SMM 0
[board.mb.cpu0.core[1][0]] Breakpoint 1: board.mb.cpu0.core[1][0] X86_Enter_SMM 1
simics> pselect board.mb.cpu0.core[1][0]
Setting new inspection object: board.mb.cpu0.core[1][0]
simics> si
[board.mb.cpu0.core[1][0]] cs:0x0000000000008000 p:0x0000038000  mov ebp,dword ptr cs:[0x8010]
simics>

Simics在任何处理器内核进入SMM时停止。注意,您可能必须选择执行停止的处理器。还要注意,精确的输出可能会随着Simics基础和模型的版本而变化。

最新更新