Существует довольно много конфигураций различных программаторов, которые позволяют переписать программные наработки в микроконтроллер. Они могут быть различными, рассчитанными на профессионалов или, наоборот, иметь упрощенный интерфейс. К последним программаторам относится и герой этой статьи. Вы узнаете не только, что он представляет собой, но и как сделать программатор JTAG своими руками. Вы найдёте схемы и фотографии, как должен выглядеть результат.
Чем является JTAG-программатор?

Почему выбирают именно программатор JTAG?

Недостатки программатора
Самые последние версии семейств микроконтроллеров, без дополнительной работы, не программируются. Также существуют значительные проблемы с теми представителями, у которых меньше 40 ног и 16 Кб памяти. Как можно заметить, круг потенциальных клиентов довольно ограничен. Но несколько популярных моделей как раз подпадают под него, так что он пригодится.
Схема

Для большей простоты тем, кто не имеет достаточной квалификации, программатор рассчитан на MAX232, но для другого варианта требуется только установить другой разъем.
Настройка
Учитывая, что есть необходимые схемы, следует только вытравить плату. Далее всё аккуратно подсоединяется, припаивается на места, и проверяется работа программатора путём прошивки загрузчика. Затем следует с AVR Studio обновить прошивку для JTAG-программатора до последней версии или до тех пор, пока надо. К адаптеру подключается программатор. Если он работает – значит можно переходить к следующему разделу, в котором обрисованы нюансы работы и программирования. Следует учесть, что все необходимые провода есть, они только нестандартно расположены.
В качестве подготовки к работе следует выставить Fuse биты. Они зависят от нотации, в которой производится работа. Для лучшего понимания представляем вот такую таблицу:
|
Бит |
Прямая нотация (Даташит, UniProf) |
Инверсная нотация (AVR DUDE GUI, PonyProg) |
|
OCDEN |
[ ] |
[1] |
|
JTAGEN |
[ ] |
[1] |
|
SPIEN |
[ ] |
[1] |
|
CKOPT |
[1] |
[ ] |
|
EESAVE |
[1] |
[ ] |
|
BOOTSZ1 |
[ ] |
[1] |
|
BOOTSZ0 |
[ ] |
[1] |
|
BOOTRST |
[1] |
[ ] |
|
BODLEVEL |
[1] |
[ ] |
|
BODEN |
[1] |
[ ] |
|
SUT1 |
[ ] |
[1] |
|
SUT0 |
[ ] |
[1] |
|
CKSEL3 |
[1] |
[ ] |
|
CKSEL2 |
[1] |
[ ] |
|
CKSEL1 |
[1] |
[ ] |
|
CKSEL0 |
[1] |
[ ] |
А как понять, какую выбрать? Ответ на вопрос прост: следует подключиться к микроконтроллеру и начать читать эти самые биты. Обратите внимание на SPIEN – если есть галочка напротив него, то это значит, что нотация инверсная. Если её нет – значит, она прямая. Если всё было сделано правильно, то программатор готов, чтобы прошивать микроконтроллеры. Но если он в последующем не сможет сделать прошивку – перечитайте и проверьте всё ещё раз.
Работа с программатором
Для большей понятливости будет приведён пример программирования мигания светодиодов. Первоначально следует запустить студию и создать новый проект. Затем выбрать язык программирования (в данном случае ассемблер) и задать имя проекта. Программа сама сможет определить, что вы используете JTAG-программатор. В качестве платформы следует выбрать его, а в окошечке рядом – программируемый им микроконтроллер. Далее всё довольно обычно – следует только вбить текст для программы. Чтобы читатели могли проверить работоспособность, предлагаем опробовать JTAG-программатор указанным в статье кодом. Можно увидеть, что диоды начали мигать очень быстро, что неудивительно, ведь здесь не предусмотрена задержка. Итак, программатор, инструкция его создания и использования есть. Вам остаётся только воплотить полёт своей фантазии.
Немного о практике. Для проверки подключите к порту А 3 светодиода. Затем к плате подключается: четыре провода интерфейса (TCK, TDI, TMS, TDO) и 2 силовых Vcc идут на плюс, а GND подключается к земле. Всё, питание есть, можно идти дальше. В студии необходимо провести компиляцию кода и его запуск. Проект быстро скомпилируется, тут же будет прошит и начнёт работать. Чтобы следить за процессом исполнения, можно нажать F11, и тогда можно наблюдать, на каком ряду кода сейчас программа. Для этого достаточно поднести курсор к ряду, который включает светодиод, и он загорится. Существует ещё много экспериментов. Помните, что для того чтобы что-то сделать, необходимо работать. Пускай продвижение будет медленным, но со временем вы сможете получить именно то, что хотите, главное — не опускать руки и продолжать экспериментирование с упором на теоретическую базу (без неё никак).
Простой самодельный адаптер USB-JTAG
« previous entry | next entry »2010 апр 20 | 23:53
Для отладки современных микропроцессоров используется интерфейс JTAG. Реже SPI, разница небольшая. Раньше можно было через тривиальную схему подцепить JTAG на параллельный порт LPT, в крайнем случае на COM. Но нету больше LPT, и COM-порты тоже на глазах исчезают из обихода. Оказывается, выход есть. Простейший самодельный адаптер USB-JTAG делается на базе микросхемы FTDI FT232R. Для простоты можно взять готовую инструментальную мини-плату, например FT232RL Breakout (ценой $15) или MMUSB232RL (1640 рублей). Особенность этой микросхемы в том, что она имеет специальный режим работы «синхронный bitbang», позволяющий с заданной частотой выдавать нужные сигналы и одновременно считывать входы. Подробности можно почитать в описании «Bit Bang Modes for the FT232R and FT245R».Объём работы минимальный: к мини-плате припаиваем шлейф из семи проводов с разъёмом на конце. Пример схемы для процессора Элвис Мультикор:Для прочих архитектур, например ARM или Atmel AVR, понадобится другая распайка разъёма JTAG.Правки для отладчика OpenOCD можно скачать здесь. Например, отладка ARM7 посредством GDB идёт на ура. Используя OpenOCD как прокси.
Ссылка | | | Пожаловаться
оставить комментарий
Микроконтроллеры ATmega можно условно разделить на две категории: те, что программируются только через ISP (шина из проводов MISO, MOSI, SCK + управление сбросом) и те, что имеют в дополнении к этому интерфейс JTAG. Из набора «горячо любимых» Arduino-контроллеров к первой категории относятся ATmega8, ATmega168, ATmega328P. Но и во второй категории тоже присутствует один экземпляр: ATmega2560, используемый в Arduino/Freeduino MEGA 2560.JTAG — это механизм, позволяющий автоматически контролировать качество монтажа печатных плат: не закоротилось ли чего или, наоборот, плохо припаялось. Очень полезная вещь в промышленном масштабе, особенно когда на одной плате «счастливо» уживаются микросхемы разных фирм (стандарт IEEE 1149.1, на котором базируется JTAG — открытый). Тем более логично, что многие производители микросхем добавили возможность программирования и отладки своих чипов через все тот же JTAG. Для чего может потребоваться JTAG в повседневной жизни? В моем случае — вдруг потребовалось читать и писать содержимое flash ATmega128, а вместо привычной вилочки ISP наружу торчит только JTAG. В этом случае уже простой программатор типа USBasp, увы, не поможет. Фирменное устройство от ATMEL стоит немало (а я и так уже прикупил нанопаяльник, денег после этого осталось ноль отрицательное количество):
дразнила ATMEL показательно разобрала какой-то инструментальный девайс для разработчика программ микроконтроллеров ATMEL и демонстрировала, что он собран на микроконтроллерах её производства — то бишь, на PIC-ах. Впрочем, было это невероятно давно, мир теперь уже совсем другой (c). В интернете есть масса вариантов самодельных копий фирменного AVR JTAG ICE. Одну из таких упрощенных до полного безобразия можно найти, например, здесь. Что самое забавное — работает, хотя состоит практически из одного МК: ATmega16. Оригинальный программатор использует чип, полностью совместимый с ATmega16, что делает возможным заливание в самопальный программатор прошивок от фирменного (правда, новые навряд ли будут появляться, поскольку AVR JTAG ICE дано снят с производства). Для начала надо достать основной компонент — микроконтроллер ATmega16-16PU и кварц 7.3728 МГц, после чего собрать на макетке минимальную схему для программирования:
- подключают питание — все GND и VCC (обычно выводов GND не менее двух);
- ставят между GND и VCC поближе к ножкам ATmega фильтрующий помехи конденсатор 100 нФ (или 0.1 мкФ — кому как больше нравится);
- подключают между XTAL1 и XTAL2 кварц и соединяют их через два одинаковых конденсатора на землю (разброс номинала указан в документации, не обязательно использовать 22 пФ, можно, например, и 33 пФ);
- притягивают линию сброса к VCC через резистор 10К и вешают конденсатор 100 нФ на землю, чтобы обеспечить небольшую задержку линии сброса после подачи питания.
Выглядеть это будет приблизительно так (всё благополучно влезает на макетку 300+100):





- ATmega128
- ATmega128A
- ATmega16
- ATmega162
- ATmega165
- ATmega169
- ATmega16A
- ATmega32
- ATmega323
- ATmega32A
- ATmega64
- ATmega64A
Еще, говорят, поддерживается AT90CAN128, но проверить это нет возможности 🙁Используемые источники:
- https://fb.ru/article/216339/chto-takoe-jtag-programmator
- https://ramlamyammambam.livejournal.com/122684.html
- http://mk90.blogspot.com/2010/02/jtag.html
Что такое Ардуино? Это свобода для изобретателя
Функции брелка для автосигнализации Шерхан Магикар и Логикар и правила пользования
Обзор усилителя FX AUDIO DAC-X6 с АлиЭкспресс
Кликер для собак – что это такое? Кликер для дрессировки собак своими руками
HDMI интерфейс — виды, характеристики, плюсы и минусы выхода, советы по выбору hdmi кабеля