首页 > 解决方案 > 除了主 ELF 可执行文件外,如何从命令行预加载 gem5 中给定原始字节的内存?

问题描述

在执行任何指令之前模拟开始时,我需要立即以给定的方式设置内存。

我知道这本质上是 ELF 加载器加载主可执行文件的操作,但尝试fs.py --kernel多次传递似乎没有效果。

我可以尝试使用链接器脚本将这些数据破解到我的邮件 ELF 可执行文件中,但如果我可以避免这种情况并仅在 CLI 上提供原始字节,或者提供要加载的原始二进制文件会更方便给定的地址。

例如,QEMU使用-device loader.

标签: gem5

解决方案


在 gem5 f5f9ca46258ac2ded8f3402e5d271a18f8400183(2020 年 4 月)中测试,我可以通过以下方式实现:

configs/example/fs.py \
  --param 'system.workload.extras = "mydata.raw"' \
  --param 'system.workload.extras_addrs = 0x83000000' \

其中mydata.raw包含要加载的原始数据,并且0x83000000是要加载到的基本物理地址。

这两个参数都是数组,因此您可以加载多个原始二进制文件,例如:

configs/example/fs.py \
  --param 'system.workload.extras = ["mydata.raw", "mydata2.raw"]' \
  --param 'system.workload.extras_addrs = [0x83000000, 0x84000000]' \

例如,这可用于将信息传递给裸机可执行文件。例如,这可用于实现 C 程序的裸机命令行参数


推荐阅读