09年9月,2013年 嵌入式开发

对西米奇UEFI

由雅各布Engblom

Engblom_lg

本周,在旧金山的英特尔开发论坛上,我们宣布Simics源代码调试器中即将提供UEFI支持。因此,现在是讨论更多关于UEFI和UEFI调试的好时机。

UEFI是现代BIOS标准,它最终开始取代pc机和相关机器中的经典BIOS。它提供了更强大和模块化的bios,以及安全引导和其他重要的现代固件特性。多年来,英特尔用于新平台(如Crystal Forest、Tunnel Creek和Haswell)的参考bios都是使用UEFI构建的,这些平台的Simics模型也使用这些参考bios进行了测试。

模拟器已被证明是Intel内开发、测试和调试BIOS代码的非常强大的工具。由于Simics在模型开发的早期阶段就被使用,现代Simics模型能够运行未经修改的标准UEFI BIOS映像,包括PEI组件和其他早期硬件初始化。这种能力在商用英特尔架构模拟解决方案领域是独一无二的。

值得注意的是,UEFI只是标准的一个新目标类型西米奇调试器它拥有所有的标准功能。调试器已经简单地扩展,以理解UEFI运行时结构和PE调试格式。其结果是一个非常强大的基于模拟的调试器,特别是它对反向执行和检查点

让我们看一下运行中的调试器的一些屏幕截图(如果您在那里,请确保查看IDF提供的演示)。

Simics和调试器从循环0开始运行,如下面的截图所示。屏幕截图还显示了加载的UEFI模块的自动动态检测(Symbol Browser视图中的列表)。在寄存器视图中可以看到,硬件中的目标系统是64位的,但此时只使用了16位,因为处理器仍然处于16位启动模式。随着BIOS执行的进展,它将转移到32位或64位模式,这取决于构建UEFI BIOS的目的。

UEFI blogpic1

下一个屏幕截图显示了启动时的状态。UEFI系统现在已经进入了PEI阶段,可以在调试视图中看到,被调试器自动检测并注释到调试上下文中。我们已经装好了PeiCore。efi模块两次在不同的偏移量,可以在符号浏览器视图中看到。我们还可以在Stop Log视图中看到一些最近对断点和步骤操作的运行,包括一些反向步骤,因为我正在查看通向第二次装载PeiCore的步骤(进入RAM,而最初的步骤是从ROM运行的)。

UEFI blogpic2

调试器还能够将断点放入尚未加载的模块中的代码中。例如,通过在函数名上设置断点,任何加载该名称的函数都将在加载时植入一个断点。在下面的屏幕截图中,在引导的PEI阶段,这样一个断点被放置在DxeMain函数上。一旦达到那个断点,我就在代码中跨过几行,到达UEFI正式进入DXE阶段的地方(这一行是它当前停止的地方,请注意调试视图中的注释)。

UEFI blogpic3

一些有趣的工作流也可以通过支持UEFI的Simics调试器解锁。由于集成的Simics调试器基于Eclipse,因此可以在同一个IDE中包含完整的编辑-编译-运行-调试。您可以编辑UEFI源代码,调用编译,启动Simics来加载新构建的UEFI映像,然后在相同的Eclipse GUI中调试结果。此外,随着目标系统从UEFI BIOS到引导加载程序、OS内核和用户应用程序的执行,您可以保持在相同的调试器中。Simics是一个真正的系统级调试器,为所有代码和产品生命周期的所有阶段提供调试。

具有UEFI支持的Simics调试器支持多种英特尔目标类型。它已经在32位和64位处理器上进行了测试,从低端单核Atom处理器到高端Xeon多核和多插槽服务器处理器,以及基于多种UEFI框架和版本的UEFI映像。

领先的独立BIOS厂商一直在使用Simics为基于Haswell架构的新英特尔服务器平台开发UEFI BIOS。Insyde在任何硅材料上市之前,UEFI就在Simics上启动了,上市时间缩短了3个月。

要了解更多关于Simics的信息,请访问www.windriver.com/simics,或者在展厅和会议现场找到我们以色列国防军在旧金山。

有关风河的更多信息,请访问我们的网站脸谱网

以前的风河在网络创新中的一大胜利
下一个现代用户界面需要什么?