Программирование AVR HappyJTAG2: JTAG и ISP для AVR Sun, April 23 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


HappyJTAG2: JTAG и ISP для AVR Печать
Добавил(а) microsin   

Эта конструкция базируется на идее 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:

HappyJTAG2 maket

Конечное целевое устройство со встроенным чипом FT2232: 

HappyJTAG2 FinalHW

Внешний вид графического интерфейса HappyJTAG2: 

HappyJTAG2 soft

Принципиальная схема:

HappyJTAG2 SCH

[Запланированные доработки и изменения]

В будущем планируется расширение ассортимента поддерживаемых чипов, улучшение поддержки точек останова.

Из-за отсутствия подробного описания реализации встроенных отладочных функций 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

HappyJTAG2 connect AVR USB MEGA16

HappyJTAG2 testing AVR USB MEGA16

В режиме JTAG как программатор система заработала без проблем. Можно считать фьюзы микроконтроллера, стереть память программ FLASH, залить туда прошивку. Это работает как автономно, так и совместно с утилитой программирования AVRProg из AVRStudio.

HappyJTAG2 AVRProg ATmega16

Однако к моему глубокому сожалению, отладка в 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.
4150520HappyJTAG.zip - управляющая программа HappyJTAG2.exe.
5. Макетная плата AVR-USB-MEGA16.
6. FT2232H Board - макетная плата на высокоскоростном чипе моста USB фирмы FTDI.

 

Комментарии  

 
+1 #2 Вячеслав Мезенцев 30.01.2016 19:32
Чтобы студия не падала при отладке с ошибкой нужны два ключа компиляции:

-gdwarf-2
-gstrict-dwarf

Источник:
http://www.avrfreaks.net/comment/1255776#comment-1255776

У меня без второго ключа постоянно вылетала с ошибкой. Сейчас полёт нормальный.
Цитировать
 
 
+2 #1 Вячеслав Мезенцев 13.10.2015 09:06
На самом деле отладка работает. Вот картинка: https://yadi.sk/i/PpCZzMjDjhFMr

Это отладка 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
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page