Как отлаживать загрузчик Qemu ARM? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь загрузить ядро ​​(извлеченное из прошивки), используя QEMU.

Кажется, что эмуляция Qemu начинается с 0x0.

Проблема в том, что память из *От 1006 * до 0x04000000 заполняется только 0.

Как я могу отладить загрузчик?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы не говорите, какова ваша командная строка.Адрес, с которого начинается выполнение QEMU, зависит от многих факторов:

  • архитектура гостевого процессора
  • , какую модель платы вы эмулируете
  • независимо от того, передали ли вы QEMU файл образа BIOS
  • формат файла любого файла, передаваемого в -kernel (ELF, простой образ ядра, uImage и т. Д.)

В общем, вы не должны ожидать, что сможете извлечьслучайный образ ядра из дампа прошивки для части оборудования Arm и запуска его под QEMU.Это связано с тем, что каждая плата или машина Arm отличается - ОЗУ может находиться в разных местах, устройства, такие как последовательный порт, находятся по разным адресам и т. Д. - и ядро ​​будет загружаться только в системах, для которых оно было скомпилировано.служба поддержки.Шансы очень высоки, что (а) QEMU не имеет определенной эмуляции бита аппаратного обеспечения, для которого предназначен дамп прошивки, и (б) ядро ​​из прошивки не было собрано для работы на платах любого типа, которыеQEMU поддерживает.Таким образом, он почти наверняка просто очень рано рухнет при загрузке без вывода каких-либо выходных данных.

Если вы хотите отладить то, что происходит при ранней загрузке, возможно, лучше всего использовать встроенный в QEMU gdbstub и подключитьGDB, поддерживающий гостевую архитектуру.Вы также можете найти полезной внутреннюю регистрацию QEMU с помощью опции '-d', хотя она требует некоторого знакомства с тем, как работает QEMU, чтобы понять смысл вывода.

...