我想了解QSP-x86项目是否正在模拟SMM。我在GUI调试器的可用寄存器/内存中看不到任何东西,这表明有一种方法可以让我看到SMRAM / SMI处理程序代码。因此,我想知道我是否可以使用它来调试一些SMM代码。
我找到一个页面,上面写着“Simics Quick-Start Platform是一个基于Intel的平台,从基于天芯的平台启动……”,那么Simics QSP的源代码在哪里呢?或者它只是EDK2/UDK的一个特殊版本?如果是这样,是哪个版本以及如何构建它?(因为如果它只是一个我可以摆弄的特定TianoCore构建,那么我的工作就会轻松很多。)
发布于 2021-08-31 11:48:33
关于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:
要在目标内核进入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>当任何处理器核心进入SMM时,Simics停止。注您可能必须选择执行停止的处理器。还要注意,精确的输出可能会随着Simics基础版本和模型的不同而变化。
https://stackoverflow.com/questions/68989604
复制相似问题