Низкий уровень qemu базирующаяся отладка

Я должен протестировать некоторый низкоуровневый код архитектуры ARM. Обычно экспериментирование является вполне сложным на реальной плате, таким образом, я думал о QEMU.

То, что я хотел бы получить, является некоторой отладочной информацией как printfs или gdb. Я знаю, что это просто с Linux, так как он реализует и драйвер устройства для Интегратора QEMU и gdb функцию, но я не работаю с Linux. Также я подозреваю, что извлечение этого вида функциональности от исходного кода ядра Linux было бы сложным.

Я ищу от некоторой простой операционной системы, которая уже реализует одну из тех опций. У Вас есть некоторый совет?

13
задан Ciro Santilli 新疆改造中心法轮功六四事件 15 October 2016 в 21:21
поделиться

3 ответа

Вам не нужна целевая ОС для отладки кода, работающего внутри QEMU - QEMU уже делает это за вас.

В частности, QEMU поддерживает удаленную отладку из GDB - вы можете запустить QEMU с соответствующими параметрами командной строки, и он будет экспортировать интерфейс, к которому может подключиться копия GDB (работающая на хост-машине). На этом этапе вы можете отлаживать программу в GDB почти так же, как если бы вы запускали ее на хост-машине.

http://wiki.osdev.org/GDB , похоже, содержит немного больше базовой информации; возможно, недостаточно, чтобы полностью начать, но, по крайней мере, дать вам основную идею и некоторые термины, которые нужно искать в документации QEMU и GDB. Пропустите бит о «Реализации заглушек GDB», который здесь не применяется, поскольку в QEMU он уже есть, и начните с раздела «Использование заглушек эмулятора».Краткая форма заключается в том, что вы запускаете QEMU с параметром -s (экспортируйте соединение GDB на localhost: 1234) и параметром -S (дождитесь команды GDB "continue" перед запуском выполнения), а затем в GDB на вашем хосте вы говорите target remote: 1234 вместо run . Кроме того, конечно, вам нужно использовать версию GDB для ARM, а не нативную версию x86.

(Кроме того, если вы готовы заплатить за коммерческое решение, набор инструментов ARM от CodeSourcery имеет интеграцию с IDE для автоматической настройки всего этого, включая поддержку printf для печати в консоли отладчика. Это работает на физическая плата тоже, если у вас есть аппаратный отладчик. Применяется обычный отказ от ответственности о том, что я являюсь сотрудником CodeSourcery, но я нахожу его очень простым в использовании.)

Обновление, 2012: Набор инструментов CodeSourcery - это теперь называется Mentor Graphics Sourcery CodeBench, но все вышеперечисленное по-прежнему применимо.

17
ответ дан 1 December 2019 в 23:47
поделиться

Может быть, вам подойдет микроядро, подобное OKL4 ?

-1
ответ дан 1 December 2019 в 23:47
поделиться

Я понимаю, что я я обращаюсь к вашей исходной проблеме здесь, а не к вашему предлагаемому решению (может быть, так лучше?), но чтобы использовать GDB (или Insight / GDB) непосредственно на цели, используйте недорогой инструмент JTAG и OpenOCD . Пример такой настройки и способы ее реализации можно найти здесь .

Если у вас большой бюджет, может быть полезен более полнофункциональный отладчик JTAG, такой как Abatron BDI3000 с прошивкой bdiGDB , который позволяет удаленную отладку и программирование устройства через Ethernet с GDB и без специальных драйверов или целевой агент отладки.

1
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: