Как предварительно загрузить память с заданными необработанными байтами в gem5 из командной строки в дополнение к основному исполняемому файлу ELF? - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно, чтобы память была настроена заданным образом сразу же, как только начнется моделирование перед выполнением каких-либо инструкций.

Я понимаю, что это по сути то, что ELF-загрузчик делает для загрузки основного исполняемого файла, но пытается передать fs.py --kernel несколько раз, похоже, не дает никакого эффекта.

Я мог бы попытаться взломать эти данные в свой почтовый ELF-файл с помощью сценария компоновщика, но было бы гораздо удобнее, если бы я мог избежать этого и просто предоставить либо необработанные байты в CLI или дать сырой двоичный файл для загрузки по заданному адресу.

Например, QEMU предоставляет функциональность этого типа с -device loader.

1 Ответ

0 голосов
/ 02 апреля 2020

Протестировано в gem5 f5f9ca46258ac2ded8f3402e5d271a18f8400183 (апрель 2020). Я могу добиться этого с помощью:

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]' \

Это можно использовать, например, для передачи информации в исполняемые файлы без обработки. Например, этот может использоваться для реализации аргументов командной строки baremetal C программы .

...