Отладка AVR под Линух.
Краткое описание как отлаживать проги написание для Atmel AVR 8-bit RISC CPU под Линух.
Для программной эмуляции AVR процессора запускаем его симулятор:
simulavr -g -p 4242 -d atmega128
в ключе -d указываем модель процессора. Симулятор поддерживает не все текущие модели, если модели в списке нет можно попробовать поставить at90s8515.
Для отладки в графической оболочки используем ddd плюс специальную версию gdb -> avr-gdb. После запуска симулятора запускаем отладчик:
ddd --debugger avr-gdb project.elfПодключаемся к симулятору:
target remote 127.0.0.1:4242
Загружаем в симулятор отлаживаемую программу:
loadУстанавливаем точку останова на функции main:
break mainЗапускаем на исполнение:
Breakpoint 1 at 0x5a: file main.c, line 16.
continue
Continuing.
Breakpoint 1, main () at main.c:16
В окне интерфейса с исходным текстом программы должен появится указатель текущего положения отладки в виде зеленой стрелки. Теперь можно отлаживать.
Для отлаживания МК в системе используется JTAG или DebugWire интерфейсы. Для отладки платы с МК ATmega128 через JTAG используем avarice, avr-gdb, ddd как фронтэнд к gdb.
Запускаем avarice он связывает gdb с аппаратной платформой через которую происходит отладка. Если надо обновить прошивку в отлаживаемом девайсе, запускаем avarice так:
avarice --mkII -e -f project.hex -j usb -P atmega128 -p :4242Если прошивку обновлять нет необходимости запускаем так:
avarice --mkII -j usb -P atmega128 :4242
Запускаем ddd + avr-gdb:
ddd --debugger avr-gdb project.elf
Подключаемся к удаленной системе:
target remote 127.0.0.1:4242
Ставим точку останова на начало программы:
break main
continue
После запуска, отладка остановится на самой первой строке и все можно не спеша спокойно отладить. Система может отлаживать обычный код и код в прерываниях.