Эта конструкция базируется на идее HappyJTAG [3], которая реализует интерфейс JTAG для целевой системы AVR (само собой, для тех AVR, у кого есть на борту JTAG, например ATmega32A). Предлагаемая система позволяет прошивать и отлаживать программу микроконтроллера через USB, не имея при этом специального адаптера JTAGICE. Вся работа выполняется программой PC. Версия HappyJTAG проста, но работает медленно. Причина в том, что приходится манипулировать битами интерфейса через интерфейс USB. Трафик USB получается слишком большой, и задержки слишком велики, чтобы вся система работала эффективно (здесь и далее перевод статьи автора HappyJTAG2 [1]).
Поэтому была реализована более мощная версия HappyJTAG2. Эта версия использует специальную микросхему FT2232 (или FT2232H), в которой интегрирована аппаратура для интерфейса JTAG. Это радикально оптимизирует обмен через USB, и ускоряет весь процесс работы JTAG. В микросхеме FT2232 есть 2 канала: Channel A задействован для JTAG и Channel B остается свободным для стандартного последовательного обмена (UART) между отлаживаемым устройством и хостом PC (на стороне PC этот канал виден как виртуальный COM-порт, и он обычно используется для загрузки программы через bootloader или для вывода отладочных сообщений runtime).
К сожалению, микросхема FT2232 требует больше внешних деталей для работы, чем микросхема FT232. Дело в том, что FT2232 (FT2232D или FT2232H) более универсальна, чем FT232. Поэтому нужен внешний кварцевый резонатор, несколько дополнительных резисторов, стабилизатор питания и т. п. Однако результат того стоит, потому что общее быстродействие в 100 раз выше, чем у оригинальной версии HappyJTAG.
Схема HappyJTAG2 соответствует стандартной схеме включения микросхемы из даташита, как Вы можете увидеть из файла схемы. Основная идея - интегрировать FT2232 прямо на целевую плату, и получившийся интерфейс USB использовать как стандартный интерфейс целевого устройства для всех видов обмена, как последовательного, так и как JTAG или SPI. Получается, что можно убрать из целевой платы AVR8 интерфейс JTAG или SPI (ISP), и работать с этими интерфейсами через USB, как со стандартными интерфейсами AVR JTAG или SPI (однако нужно иметь в виду, что иногда нужно добавить преобразователи уровня логических сигналов, если напряжения питания AVR и FT2232 различаются).
Вся логика обмена обрабатывается приложением PC. У этого приложения есть 2 соединения. Одно через USB до целевого устройства, и второе через TCP к AVRStudio. Все команды интерпретируются и преобразуются в команды FT2232, и они отправляются в микросхему FT2232, чтобы обработать обмен данными для интерфейсов JTAG и SPI. Это приложение PC работает в 2 режимах:
1. Как независимая программа. В этом режиме поддерживается подключение к цели через JTAG или SPI: можно читать сигнатуру, сбрасывать целевой чип, загружать в него firmware (прошивку *.hex) в память, управлять фьюзами (читать, записывать).
2. Режим совместной работы с AVRstudio. В этом режиме программа PC интерпретирует запросы AVRStudio, и осуществляет обмен с целевым чипом через JTAG или SPI. Для AVRStudio это работает как эмуляция JTAGICEMK2.
Начиная с версии 2.31 больше не нужен внешний эмулятор виртуального последовательного порта (Virtual Serial Port emulator). The HappyJTAG2 сам эмулирует один из последовательных портов COM1-COM4. Нужно просто запустить HappyJTAG2, выбрать радиокнопку "Direct ComX port emulation (AVRStudio)", и запустить AVRStudio. В AVR Studio нужно выбрать порт Auto (в меню настроек) для устройства JTAGICEMKII. И это все!
Прим. переводчика: AVRProg из AVRStudio 4.19 через JTAG работает без нареканий. Но к сожалению, отладка через HappyJTAG2 и AVRStudio 4.19 не работает, AVRStudio вылетает по ошибке.
Однако внешний эмулятор последовательного порта все еще поддерживается. Вы можете использовать стороннее свободное программное обеспечение и утилиты, например "Virtual Serial Port" компании HW group [2]. Этот порт работает как мост между COM-портом, ориентированным на обмен AVRStudio, и TCP-ориентированным обменом программного обеспечения HappyJTAG2. Введите IP адрес 127.0.0.1 и порт 2232 в настройках Virtual serial port, и запустите его перед тем, как настроите AVR studio для работы с JTAGICEMK2 через программу HappyJTAG2. Соедините программное обеспечение HappyJTAG2 с VirtualSerialPort кликом на кнопке "Connect to AVRStudio". Не забудьте установить максимально возможную скорость обмена (115000) в диалоговом окне AVRStudio, потому что это влияет на общую скорость работы всей системы.
HappyJTAG2 начиная с версии 2.33 также поддерживает отладчик GDB через TCP/IP, порт 2232.
Изначально PC-программа HappyJTAG2 была разработана для целевого чипа ATmega32, однако текущая версия поддерживает и другие модификации платформ AVR8. В планах автора постепенно дорабатывать эту программу, чтобы она была совместима с другими устройствами AVR. Возможно, что будет реализовано пограничное сканирование (JTAG-тестирование схемы Boundary scan), так что Вы сможете увидеть текущее логическое состояние всех выводов чипа в графическом виде, как будто прямо смотрите на корпус DIP40 микроконтроллера ATmega32.
Вот список поддерживаемых в настоящий момент микроконтроллеров AVR8:
JTAG
ATmega16 ATmega32 ATMega128 ATMega640 (пока не тестировалось) ATMega644 (пока не тестировалось) ATMega644P ATMega1280 (пока не тестировалось) ATMega2560 (пока не тестировалось) ATMega1281 (пока не тестировалось) ATMega2561 AT90CAN128 AT90USB128 (пока не тестировалось) ATXMEGA128A1
SPI
ATtiny13 ATmega48 (пока не тестировалось) ATmega88 ATmega168 ATmega16 ATmega32 ATmega640 (пока не тестировалось) ATmega644 (пока не тестировалось) ATmega644P ATmega128 ATmega1280 (пока не тестировалось) ATmega1281 (пока не тестировалось) ATMega2560 ATMega2561 AT90CAN128 AT90USB128 (пока не тестировалось)
Еще одно достоинство этого решения (FT2232), что эта программа может работать и с другими аппаратными решениями. Хороший пример - адаптер Amontec JTAGkey hardware. Вместе с ним Вы можете использовать JTAGkey также для чипов AVR8 (это проверено и работает)!
Вот так выглядит первый прототип (макет) HappyJTAG2:
Конечное целевое устройство со встроенным чипом FT2232:
Внешний вид графического интерфейса HappyJTAG2:
Принципиальная схема:
[Запланированные доработки и изменения]
В будущем планируется расширение ассортимента поддерживаемых чипов, улучшение поддержки точек останова.
Из-за отсутствия подробного описания реализации встроенных отладочных функций AVR (AVR OCD debug) пока есть еще некоторое количество не реализованных функций, соответствующих полному уровню поддержки отладки, используемых в специализированных адаптерах JCE JTAG. Если у Вас есть информация о том, как работает режим отладки AVR (OCD DEBUG MODE, DEBUG REGISTERS, SEQUENCES и т. д.), пожалуйста обратитесь к автору проекта!
Похожая ситуация с взаимодействием HappyJTAG2/AVRStudio. В настоящий момент эмулируется последовательный порт. Но автор хотел бы заменить это на эмуляцию порта USB.
Вы можете использовать бесплатно HappyJTAG2 во всех своих проектах. Опубликованное программное обеспечение бесплатно (freeware), с некоторыми ограничениями, как это водится в бесплатном софте. Ограничения следующие: не разрешено изменять фьюзы защиты памяти программ (lock bits), встроен запрет фьюзов JTAGEN и SPI (в зависимости от используемого интерфейса). Вы не можете очищать этот фьюз, так что нельзя запретить JTAG (если используете JTAG) или SPI (если используете интерфейс SPI). Если это ограничение очень важно для Вас отключить, но напишите автору webmaster@lura.sk.
[Тестирование с макетной платой AVR-USB-MEGA16]
На макетной плате AVR-USB-MEGA16 [5] (микроконтроллер ATmega16 или ATmega32A) как раз есть интерфейс JTAG (коннектор U3), и можно было провести эксперимент, соединив выводы этого JTAG с платой FT2232H Board [6]. Соединения были выполнены по следующей таблице:
AVR-USB-MEGA16, коннектор U3 JTAG |
FT2232H Board, коннекторы JP2, JP3 |
выв. 1 TCK |
JP3, выв. 6 AD0 |
выв. 2 GND |
JP3, выв. 4 GND |
выв. 3 TDO |
JP3, выв. 8 AD2 |
выв. 4 VCC |
JP3, выв. 1 5V |
выв. 5 TMS |
JP3, выв. 9 AD3 |
выв. 6 ~RST |
JP3, выв. 10 AD4 |
выв. 7 не используется |
- |
выв. 8 не используется |
- |
выв. 9 TDI |
JP3, выв. 7 AD1 |
выв. 10 GND |
JP2, выв. 2 GND |
В режиме JTAG как программатор система заработала без проблем. Можно считать фьюзы микроконтроллера, стереть память программ FLASH, залить туда прошивку. Это работает как автономно, так и совместно с утилитой программирования AVRProg из AVRStudio.
Однако к моему глубокому сожалению, отладка в AVRStudio 4.19 через HappyJTAG2 не заработала. Видно, что система пытается начать обмен, однако AVRStudio падает с ошибкой.
Если в Вашем разрабатываемом устройстве есть два микроконтроллера, которые нужно перешивать через SPI и JTAG, то такой мост решает сразу несколько проблем: появляется возможность программировать чистую систему, не разбирая устройство (через USB), и есть в наличии удобные интерфейсы для связи с внешним миром (UART через USB, SPI через USB).
[Ссылки]
1. HappyJTAG2 - JTAG AND SPI AVR8 interface site:lura.sk. 2. Virtual Serial Port site:hw-group.com. 3. HappyJTAG: простой интерфейс JTAG для AVR. 4. 150520HappyJTAG.zip - управляющая программа HappyJTAG2.exe. 5. Макетная плата AVR-USB-MEGA16. 6. FT2232H Board - макетная плата на высокоскоростном чипе моста USB фирмы FTDI. |
Комментарии
-gdwarf-2
-gstrict-dwarf
Источник:
http://www.avrfreaks.net/comment/1255776#comment-1255776
У меня без второго ключа постоянно вылетала с ошибкой. Сейчас полёт нормальный.
Это отладка Arduino Mega 2560 (китайский дешёвый клон) - ATmega2560 @ 16 МГц через AVR Studio 4.19.716 и HappyJTAG2. Не с первого раза, но запустилась. Это пример запуска scmRTOS на Arduino.
Мордочка HappyJTAG2 изменена мною. Так мне нравится больше.
Окружение: WinXP SP3, драйвера FTDI 2.08.14 (старые), железо - плата от Pinboard II.
Ссылка на AVR Studio:
[1]: AVR Studio 4.19 + AVR Toolchain 4.19 730 x86+x64 [09.2011, ENG + RUS]
http://rutracker.org/forum/viewtopic.php?t=3770550
RSS лента комментариев этой записи