Я должен протестировать некоторый низкоуровневый код архитектуры ARM. Обычно экспериментирование является вполне сложным на реальной плате, таким образом, я думал о QEMU.
То, что я хотел бы получить, является некоторой отладочной информацией как printfs или gdb. Я знаю, что это просто с Linux, так как он реализует и драйвер устройства для Интегратора QEMU и gdb функцию, но я не работаю с Linux. Также я подозреваю, что извлечение этого вида функциональности от исходного кода ядра Linux было бы сложным.
Я ищу от некоторой простой операционной системы, которая уже реализует одну из тех опций. У Вас есть некоторый совет?
Вам не нужна целевая ОС для отладки кода, работающего внутри 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, но все вышеперечисленное по-прежнему применимо.
Я понимаю, что я я обращаюсь к вашей исходной проблеме здесь, а не к вашему предлагаемому решению (может быть, так лучше?), но чтобы использовать GDB (или Insight / GDB) непосредственно на цели, используйте недорогой инструмент JTAG и OpenOCD . Пример такой настройки и способы ее реализации можно найти здесь .
Если у вас большой бюджет, может быть полезен более полнофункциональный отладчик JTAG, такой как Abatron BDI3000 с прошивкой bdiGDB , который позволяет удаленную отладку и программирование устройства через Ethernet с GDB и без специальных драйверов или целевой агент отладки.