Здравствуйте. Нуждаюсь в дебаггере для atmega328, для пошагового выполнения и отладки кода. Скажите, такой отладчик пойдет? Я не вижу в списке поддерживаемого железа atmega328. Либо, если такой не пойдет, то какой нужен? И где можно быстро достать в Мск?
Есть ли, помимо JTAG ICE, еще отладчики, поддерживающие debugWire? Поделитесь, ссылкой, пожалуйста. Не могу в гугле ничего другого найти.
Первая страница гугла: https://habrahabr.ru/post/216029/ https://geektimes.ru/post/270868/ http://blog.radiotech.kz/arduino/otladka-arduino-cherez-debugwire-atmel-studio-i-avr-dragon/
В ATmega328 (и т.п.) довольно таки ущербные механизмы отладки и лучше ими не пользоваться. Взять хотя бы те же точки останова -- ядро AVR их не поддерживает. Весь механизм реализован на том, что точка останова "компилируется" в бинарник, который потом зашивается в микроконтроллер. Соответственно, если захотите новую точку останова, то опять надо будет пересобирать прошивку и зашивать в МК. Вобщем одна головная боль... Если пользуетесь ОС типа Windows, то лучше использовать симулятор из состава Atmel Studio. По крайней мере не будете тратить ресурс флеш-памяти микроконтроллера, связанный с ограничением количества перезаписи флеша.
Смотрите, вот у меня есть процессор, который прошивается через ISP программатор HEX, скомпилированным в протеусе. Я смогу отлаживать код таким образом?
Ещё раз другими словами о том как работает отладка с использованием debugWire в микроконтроллерах ATmega328. Вся суть такой отладки состоит в том, чтобы зашить в МК прошивку, запустить её и остановить выполнение в определённой точке с целью посмотреть состояние МК -- регистры, содержимое памяти и т.д. Потом запустить далее до следующей точки останова и так до бесконечности. Так вот точки останова в ATmega328 нельзя добавлять во время работы прошивки. Для этого есть специальная машинная команда микроконтроллера -- 'BREAK', которая останавливает микроконтроллер и предоставляет возможность по протоколу debugWire посмотреть его состояние (его регистров, памяти и т.п.). Так вот эта машинная команда должна присутствовать в прошивке (в *.hex файле) в тех местах, где нужно останавливать работу контроллера. И здесь начинается самое интересное, если захотите изменить точки останова (добавить или убрать), то нужно будет после изменения пересобрать снова прошивку, зашить её в МК и заново начать отладку. Процесс муторный, но Atmel Studio это делать может -- при сборке добавляет команды 'BREAK', перепрошивает и перезапускает микроконтроллер. Но встаёт вопрос -- а нужна ли вообще такая отладка? В той же студии есть симулятор микроконтроллеров -- можно отлаживать прошивки и без наличия "живого" микроконтроллера. Есть тот же Proteus. Хотя он иногда такое выдаёт... Поэтому совет -- выкиньте из головы debugWire со всякими avrdragon'ами для отладки в самом МК. Но это только в отношении AVR-ок. Те же ARM'ы отлично отлаживаются через JTAG.
Это все хорошо, но если есть периферия, то в той же студии немного и насимулируешь. Протеус вообще своей жизнью живет.