(我看到我之前的一篇文章实际上并没有回答“simics 使用的 BIOS 文件在哪里?”这个问题,所以我重命名了上一篇文章,并将这个问题拉出来,让它在这里独立。)
我可以通过从一开始就单步执行调试器来查看默认“targets\qsp-x86\firststeps.simics”调用的 BIOS 代码。但是,如果我想查看完整的二进制文件,是否有可以查看的特定文件?
您可以检查主板图像上的“bios”属性:
simics> board.mb->bios
"%simics%/targets/qsp-x86/images/SIMICSX58IA32X64_1_0_0_bp_r.fd"
您可以通过 qsp-clear-linux.simics 脚本的 bios_image 脚本参数指定要使用的 BIOS 映像。
脚本的帮助信息:
$ ./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 只是直接加载到目标内存中执行。为了方便起见,这有点作弊。
在四处寻找时,我发现了以下文件夹:
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 文件卷标头,结尾有一个看似 BIOS 入口点。spi-flash。bin 似乎有一个闪存描述符的占位符,它将在闪存开始时出现,但大部分是空的。所以我相信英特尔基本上要么在内存中将它们拼接在一起,要么可能只是使用 spi-flash。bin 以允许“软带”配置或类似的配置(因为它无论如何都是虚拟的 MCH/ICH。)