Simics 使用的 BIOS 文件在磁​​盘上的什么位置?

Where on disk is the BIOS file used by Simics?

(我看到我的一个 实际上没有回答“simics 使用的 BIOS 文件在哪里?”问题,所以我重命名了前一个并提出了这个问题并在此处使其独立。)

我可以看到默认“targets\qsp-x86\firststeps.simics”调用的 BIOS 代码,只需从一开始就逐步执行调试器。但是,如果我想查看完整的二进制文件,是否有我可以查看的特定文件?

四处搜索后,我找到了以下文件夹:

C:\Users\yourusername\AppData\Local\Programs\Simics\simics-qsp-x86-6.0.44\targets\qsp-x86\images

该文件夹中有以下 3 个文件:

SIMICSX58IA32X64_1_0_0_bp_r.fd
SIMICSX58IA32X64-ahci.fd
spi-flash。垃圾箱

两者都SIMICSX58IA32X64_1_0_0_bp_r。 fd 和 SIMICSX58IA32X64-ahci.fd 的开头有 UEFI 文件卷 headers,最后有一个看似 BIOS 的入口点。 spi-flash。 bin 似乎有一个 flash 描述符的占位符,它会出现在 flash 的开头,但大部分是空的。所以我相信英特尔基本上要么在内存中将它们拼接在一起,要么可能只使用 spi-flash。 bin 以允许“软带”配置或类似的东西(因为它是虚拟的 MCH/ICH 无论如何。)

您可以查看主板图像上的“bios”属性:

simics> board.mb->bios 
"%simics%/targets/qsp-x86/images/SIMICSX58IA32X64_1_0_0_bp_r.fd"

您可以通过 bios_image 脚本参数指定要使用的 BIOS 映像到 qsp-clear-linux.simics 脚本。

脚本的帮助信息:

$ ./simics -h targets/qsp-x86/qsp-clear-linux.simics
System:
  bios_image  -  existing file or NIL
    BIOS file.
    Default value:
    "%simics%/targets/qsp-x86/images/SIMICSX58IA32X64_1_0_0_bp_r.fd"

您可以像这样运行使用您自己的 BIOS:

$ ./simics -e '$bios_image=my-bios.bin' targets/qsp-x86/qsp-clear-linux.simics

现在 BIOS 与其他一些东西的处理不太一致。通常在 Simics 中,磁盘和类似的东西都是图像。您可以使用 list-persistent-images 列出它们并使用 lookup-file:

解析位置
simics> list-persistent-images 
┌─────────────────────┬────────────┬───────────────────────────────────────────────────────┐
│Image                │Unsaved data│File(s) (read-only/read-write)                         │
├─────────────────────┼────────────┼───────────────────────────────────────────────────────┤
│board.disk0.hd_image │          no│%simics%/targets/qsp-x86/images/cl-b28910-v2.craff (ro)│
│board.disk1.hd_image │          no│                                                       │
│board.mb.sb.spi_image│         yes│%simics%/targets/qsp-x86/images/spi-flash.bin (ro)     │
└─────────────────────┴────────────┴───────────────────────────────────────────────────────┘

simics> lookup-file "%simics%/targets/qsp-x86/images/spi-flash.bin"
"/disk1/simics-6/simics-qsp-x86-6.0.47/targets/qsp-x86/images/spi-flash.bin"

QSP 中的 BIOS 直接加载到目标内存中执行。为了方便起见,这有点作弊。