В семействе 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: 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 |
В память микроконтроллера макетной платы AVR-USB-MEGA16 (ATmega16 в корпусе TQFP44) была записана какая-то старая демонстрационная программа устройства USB, которая позволяла через USB управлять светодиодами.
После запуска утилиты HappyJTAG.exe все сразу заработало без всяких проблем. Утилита через JTAG автоматически считала значение фьюзов микроконтроллера и его сигнатуру. В правой части окна, в области "UNKNOWN TAGGET", в реальном времени отображалось состояние портов ввода/вывода микроконтроллера.
[Ссылки]
1. Happy JTAG AVR interface site:lura.sk. 2. 150520HappyJTAG.zip - управляющая программа HappyJTAG.exe. 3. HappyJTAG2: JTAG и ISP для AVR. 4. Макетная плата AVR-USB-MEGA16. 5. Плата FT232R-Breakout. |
Комментарии
- Какие процессоры поддерживает?
- Какая спецификация у элемента Filter_VCC?
- Откуда берется VCC (верхний правый угол схемы)?
microsin: поддерживает те AVR, который имеют на борту аппаратный JTAG (например, ATmega16, ATmega32A, подробнее см. таблицу выбора на сайте Atmel). Filter_VCC это стабилизатор напряжения на 5V, непонятно, почему автор схемы так странно его назвал. VCC берется либо от стабилизатора Filter_VCC, либо от отлаживаемой схемы (в зависимости от подключения JTAG и установленной перемычки J1).
RSS лента комментариев этой записи