Комментарии 12
Время за полночь, наткнулся на Вашу статью, ничего не понимаю, но прочитал с интересом.
Класс! Я всегда обходился отладочными принтами, даже в загрузчике, но про JTAG как предпоследний способ помню. Спасибо за статьи!
Я бы рекомендовал еще посмотреть на OpenOCD. Он неожиданно восстал из мертвых и начал активно развиваться.
А по поводу дебага принтами - это хорошо когда они есть. Мы когда-то чинили раннюю загрузку то ли U-Boot, то ли Xen, уже не помню точно. Но факт в том, что на тех этапах загрузки консоль еще не работала. Кто-то придумал гениальную идею - дергать SMC из разных мест, и смотреть как Secure Monitor (это еще на armv7 было) ругается на неизвестный ID запроса.
Хм, с этой точки зрения я на OpenOCD не смотрел очень давно, а вот программироваться всякие CPLD - только в путь. Спасибо за наводку!
Ну там например активно развивается поддержка ARMv8, что меня безмерно радует. Плюс он умеет одну очень крутую штуку, которую не может дорогущий Lauterbach - одновременный дебаг нескольких ядер с разной архитектурой. На том SoC, с которым мы в основном работаем есть как и здоровые Cortex A5x на ARMv8, так и пару Cortex R на ARMv7. С OpenOCD я могу отлаживать их одновременно. В Trace32 - нет.
wingdb от слова windows?)
Даже в 2122 будут этапы загрузки компьютера, на которых без подобной околожелезной отладки никуда не деться.
gdb сервера есть практически везде: от софтовых в Android и заканчивая типа "аппаратными" в каком-нибудь Black Magic Probe. Ну и само собой они есть в qemu и openocd.
А вот удаленный протокол WinDbg поддерживает... кто? Только Windows?
Зависит от того что нужно отлаживать. Если какой-нибудь высокопараллельный процесс вроде скедулинга или там отрисовки буферов в DRM - то тут конечно трейсинг (особенно аппартный) рулит. А вот классические профилировщики типа oprofile помогают в очень редких случаях.
Но бывает класс задач где как раз нужен пошаговый отладчик, чтобы например посмотреть состояние памяти, регистров периферии, да и банально пошагать по ассемблерному коду, который писал вручную.
Embedded Linux. Отладка ядра