0

(我看到我之前的一篇文章实际上并没有回答“simics 使用的 BIOS 文件在哪里?”这个问题,所以我重命名了上一篇文章,并将这个问题拉出来,让它在这里独立。)

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

4

3 回答 3

2

您可以检查主板图像上的“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
于 2021-09-10T08:03:01.080 回答
2

现在 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 只是直接加载到目标内存中执行。为了方便起见,这有点作弊。

于 2021-09-10T09:25:18.403 回答
0

在四处寻找时,我发现了以下文件夹:

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。)

于 2021-09-08T00:02:05.737 回答