HappyJTAG: простой интерфейс JTAG для AVR Печать
Добавил(а) microsin   

В семействе RISC-микроконтроллеров AVR есть представители, у которых на борту имеется интерфейс JTAG (их конечно не так много, как хотелось бы, но они есть). Он предоставляет мощную возможность отладки программ, однако для этого нужно иметь специальный аппаратный адаптер. Коннектор JTAG часто реализуют на целевой плате, где стоит такой микроконтроллер. Описываемый здесь проект дает простой способ реализации интерфейса JTAG, который можно встроить прямо в Ваше целевое устройство (здесь и далее перевод статьи [1] автора HappyJTAG).

Решение состоит фактически только из стандартного драйвера FT232USB, который подключен к выводам JTAG Вашего целевого процессора AVR. Этот же FT232R также используется для стандартного последовательного обмена (через UART). Всю работу делает Ваш PC, который эмулирует интерфейс JTAG через режим BitBang чипа FT232. JTAG позволяет управлять фьюзами, битами защиты памяти (memory lock bits), и делать первоначальную загрузку firmware микроконтроллера прямо через USB, без подключения дополнительных коннекторов и лишнего оборудования. Конечно, получаемое быстродействие далеко не идеально, т. е. это работает не так быстро, как и специализированные адаптеры JTAG, но его вполне достаточно для того, чтобы через USB в чистый AVR прошить загрузчик (bootloader), и уже дальше перепрошивать AVR в штатном режиме. 

Схема соединений довольно проста:

HappyJTAG SCH

Примечание: появилась новая версия идеи HappyJTAG: HappyJTAG2 [3], где вместо чипа FT232R применен FT2232D. К сожалению, автор не предоставил исходных кодов программы управления, и в новую версию HappyJTAG2 встроены некоторые ограничения.

[Тестирование с макетной платой AVR-USB-MEGA16]

На макетной плате AVR-USB-MEGA16 [4] (микроконтроллер ATmega16 или ATmega32A) как раз есть интерфейс JTAG (коннектор U3), и можно было провести эксперимент, соединив выводы этого JTAG с платой FT232R-Breakout [5]. Соединения были выполнены по следующей таблице: 

AVR-USB-MEGA16, коннектор U3 JTAG FT232R-Breakout, коннекторы JP1, JP2
выв. 1 TCK JP2, выв. 3 RTS
выв. 2 GND JP2, выв. 7 GND
выв. 3 TDO JP2, выв. 8 DSR
выв. 4 VCC JP1, выв. 4 VCC
выв. 5 TMS JP1, выв. 6 CTS
выв. 6 ~RST JP2, выв. 6 RI
выв. 7 не используется -
выв. 8 не используется -
выв. 9 TDI JP2, выв. 9 DCD
выв. 10 GND JP1, выв. 1 GND

HappyJTAG connect AVR USB MEGA16

В память микроконтроллера макетной платы AVR-USB-MEGA16 (ATmega16 в корпусе TQFP44) была записана какая-то старая демонстрационная программа устройства USB, которая позволяла через USB управлять светодиодами.

HappyJTAG testing AVR USB MEGA16

После запуска утилиты HappyJTAG.exe все сразу заработало без всяких проблем. Утилита через JTAG автоматически считала значение фьюзов микроконтроллера и его сигнатуру. В правой части окна, в области "UNKNOWN TAGGET", в реальном времени отображалось состояние портов ввода/вывода микроконтроллера.

HappyJTAG window ATmega16

[Ссылки]

1. Happy JTAG AVR interface site:lura.sk.
2150520HappyJTAG.zip - управляющая программа HappyJTAG.exe.
3. HappyJTAG2: JTAG и ISP для AVR.
4. Макетная плата AVR-USB-MEGA16.
5. Плата FT232R-Breakout.