JTAG отладка atmega328p

Тема в разделе "Микроконтроллеры AVR", создана пользователем Vetrinus, 13 фев 2018.

  1. Vetrinus

    Vetrinus Гик

    Здравствуйте. Нуждаюсь в дебаггере для atmega328, для пошагового выполнения и отладки кода.
    Скажите, такой отладчик пойдет? Я не вижу в списке поддерживаемого железа atmega328.
    Либо, если такой не пойдет, то какой нужен?
    И где можно быстро достать в Мск?
     
  2. Tomasina

    Tomasina Иномирянин

    atmega328p не поддерживает JTAG.
    Или берите ATmega2560, или ищите другой отладчик.
     
  3. Vetrinus

    Vetrinus Гик

    Есть ли, помимо JTAG ICE, еще отладчики, поддерживающие debugWire? Поделитесь, ссылкой, пожалуйста. Не могу в гугле ничего другого найти.
     
  4. Tomasina

    Tomasina Иномирянин

  5. AlexU

    AlexU Гуру

    В ATmega328 (и т.п.) довольно таки ущербные механизмы отладки и лучше ими не пользоваться. Взять хотя бы те же точки останова -- ядро AVR их не поддерживает. Весь механизм реализован на том, что точка останова "компилируется" в бинарник, который потом зашивается в микроконтроллер. Соответственно, если захотите новую точку останова, то опять надо будет пересобирать прошивку и зашивать в МК. Вобщем одна головная боль...
    Если пользуетесь ОС типа Windows, то лучше использовать симулятор из состава Atmel Studio. По крайней мере не будете тратить ресурс флеш-памяти микроконтроллера, связанный с ограничением количества перезаписи флеша.
     
  6. Vetrinus

    Vetrinus Гик

    Смотрите, вот у меня есть процессор, который прошивается через ISP программатор HEX, скомпилированным в протеусе. Я смогу отлаживать код таким образом?
     
  7. AlexU

    AlexU Гуру

    Ещё раз другими словами о том как работает отладка с использованием debugWire в микроконтроллерах ATmega328. Вся суть такой отладки состоит в том, чтобы зашить в МК прошивку, запустить её и остановить выполнение в определённой точке с целью посмотреть состояние МК -- регистры, содержимое памяти и т.д. Потом запустить далее до следующей точки останова и так до бесконечности. Так вот точки останова в ATmega328 нельзя добавлять во время работы прошивки. Для этого есть специальная машинная команда микроконтроллера -- 'BREAK', которая останавливает микроконтроллер и предоставляет возможность по протоколу debugWire посмотреть его состояние (его регистров, памяти и т.п.). Так вот эта машинная команда должна присутствовать в прошивке (в *.hex файле) в тех местах, где нужно останавливать работу контроллера. И здесь начинается самое интересное, если захотите изменить точки останова (добавить или убрать), то нужно будет после изменения пересобрать снова прошивку, зашить её в МК и заново начать отладку.
    Процесс муторный, но Atmel Studio это делать может -- при сборке добавляет команды 'BREAK', перепрошивает и перезапускает микроконтроллер. Но встаёт вопрос -- а нужна ли вообще такая отладка?
    В той же студии есть симулятор микроконтроллеров -- можно отлаживать прошивки и без наличия "живого" микроконтроллера.
    Есть тот же Proteus. Хотя он иногда такое выдаёт...
    Поэтому совет -- выкиньте из головы debugWire со всякими avrdragon'ами для отладки в самом МК. Но это только в отношении AVR-ок. Те же ARM'ы отлично отлаживаются через JTAG.
     
  8. parovoZZ

    parovoZZ Гик

    Это все хорошо, но если есть периферия, то в той же студии немного и насимулируешь. Протеус вообще своей жизнью живет.