Jtag ice mkii своими руками

Jtag ice mkii своими руками

Отладчик AVR JTAG.

Автор: VDD
Опубликовано 10.11.2009

Однажды ваш покорный слуга решил, что ему необходим (сам не знаю, почему так решил) отладчик (debugger) для AVR. Что такое отладчик можно прочитать здесь. Если коротко, в отличии от обычного программатора он позволяет не только прошить микроконтроллер, но и наблюдать за выполнением программы, останавливать ее в любой момент (например при зацикливании, зависании вы увидите в каком месте кода это произошло и сможете попробовать понять почему), выполнять программу по шагам, менять содержимое ячеек памяти и регистров контроллера «на лету». т.е. ОТЛАЖИВАТЬ, искать ошибки, моделировать различные варианты выполнения программы. Сказано — сделано, но поинтересовавшись стоимостью AVR JTAG ICE II понял, что цена сего, безусловно прикольного девайса мне не нравится. Порывшись на просторах Интернета, я обнаружил, что существует клон предыдущей версии отладчика (JTAG ICE) и даже не один. Более того, некоторые его даже изготовили и используют. Но как всегда чего-то не хватает. Во-первых, все устройства почему-то используют com порт вместо уже ставшего стандартом USB. Во-вторых, когда я повторил одну из конструкций, моя AVR студия отказалась апгрейдить девайс, хотя и видела его, хотя я делал все по инструкции. В-третьих, люблю все мелкое и аккуратное и не люблю корпуса DIP. В итоге пришлось скомпилировать из доступной информации по вопросу собственное решение. Получилась такая вот «конструкция выходного дня».
Поскольку в основном я работаю с небольшими проектами, решено было осуществлять питание отлаживаемого устройства от USB через отладчик (5 вольт до 500 ма). Другие варианты питания отлаживаемого устройства в этом варианте отладчика не предусмотрены.
Во-вторых, для упрощения схемы и опять таки из-за отсутствия согласования уровней не стал делать буферизацию и весь обвес, связанный с возможностью внешнего/пониженного питания. В связи с этим не втыкайте устройство куда попало — можно испортить.
В-третьих, эксперименты с загрузчикам и автоматическим обновлением отладчика из avr студии привели меня к выводу, что 100% работоспособный девайс получается, если его прошить его в лоб непосредственно прошивкой из комплекта инсталляции вашей AVR студии при помощи ISP программатора (надеюсь, он у вас есть), хотя и с загрузчиком тоже в основном удается обновить прошивку через студию.
Т.е. я изначально делал не коммерческий продукт для личного использования. В итоге он мне понравился, и я решил с вами поделиться. К сожалению, он не может работать с контроллерами AVR младше меги 16. (ввиду отсутствия у них JTAG). Впрочем, в коде размером до 4 кб можно разобраться и так. Мне сей девайс помог разобраться в странностях поведения аппаратного I2С и отловить ряд собственных ошибок при работе с RT OS, возможно в чем-то поможет и Вам.

По схеме комментировать особенно нечего. FT232RL включена в соответствии с даташитом. Поскольку люблю все блестящее повесил 4 светодиода — питание, 2шт активность на FT-шке и, собственно, активность отладчика. Плата рисовалась ручками по даташитам, но собранное устройство полностью работоспособно и весело подмигивает светодиодами во время отладки, впрочем и остальные функции тоже выполняет. Все необходимые для работы сигналы выведены на 9-и контактный рядный разъем. В качестве ответной части к нему сделаны 2 шлейфа: боевой- AVR JTAG 10 pin (распиновка приложена) и шлейф для первичного программирования отладчика (нужен только в случае если версия студии поменяется). Корпус не изготавливался.

Плата нарисована в Sprint Layout 5.0. Изготовлена фотоспособом с использованием пленочного фоторезиста. Шаблон выводил на струйнике HP. Минимальная ширина дорожки 0.3мм, минимальный просвет 0.2мм). Возможно, умельцы и ЛУТом смогут изготовить. Я не стал пробовать. Все элементы 0805 и 1206 кроме дросселя (1210) и электролита фильтра питания (тип В). На плате стоят 4 чип — перемычки чтобы влезть на 1 слой (тип 1206) . Токоограничительные резисторы в зависимости от типа светодиода. Я использовал 510 Ом для желтых, зеленых, красных и 1 кОм для синего. Дроссель фильтра 10мкГ, электролит 10 мкФ 16 в. Кварц СТРОГО 7.3728МГц. Емкости к кварцу по даташиту ATMEGA16 — 12пФ. Остальные емкости блокировочные и цепь сброса микроконтроллера 0.1мкФ. Сопротивление в цепи сброса контроллера 10кОм.
Описание разъема на плате:
Считаем с права налево, смотрим со стороны smd компонентов (от квадратика).
1. Земля
2. +5вольт
3. NTRST
4. TMS
5. MOSI/TDI
6. MISO/TDO
7. SCK/TCK
8. RESET
9. NC

Читайте также:  Древесная стружка своими руками

VSUP и VTREF соединены вместе в кабеле JTAG.

Где взять загрузчик?
Их много на просторах инета. Главное, чтобы он по размеру укладывался в 500 слов (words, 500w) и был совместим с АВР Студией. Сначала прошиваем его. Можно воспользоваться, например этим. При выборе загрузчика желательно ознакомиться с его описанием от автора.

Где взять прошивку?
В папочке AVR Студии */Atmel/AVR Tools/JTAGICE есть файл Upgrade.ebn . Это прошивка адаптера в формате EBN. Конвертируем ee при помощи EBN2HEX в простой и понятный большинству программаторов HEX. Затем прошиваем отладчик этой прошивкой по ISP. ВНИМАНИЕ. При прошивке снимите галочку очиски флэша чтобы не убить загрузчик.

Как установить фьюзы?
Вот так:
Boot Reset Fuse — on (0). Т.е. при Reset должен запускаться загрузчик
BOOTSZ1 — on (0), BOOTSZ0 — 0ff (1). — размер загрузчика = 512w.
CKSEL3..1 и CKOPT настроены на внешний резонатор 8MHz. (не перепутать с осцилятором. а то придется подключать внешний генератор чтобы перепрошить фьюзы)

Источник

Jtag ice mkii своими руками

Atmel AVR JTAGICE mkII — аппаратный отладчик и программатор микроконтроллеров AVR (ATmega и ATtiny). К компьютеру подключается через интерфейс USB или COM-порт, а к отлаживаемому устройству — через интерфейс JTAG или DebugWire (односигнальная версия JTAG).

Повторить такую сложную конструкцию конечно нет смысла, но существуют облегченные версии JTAGICE mkII, которые можно собрать самому, см. Ссылки.

[Переходник с 10-pin коннектора JTAGICE mkII на 6-pin ISP + debugWIRE]

[Установка драйвера USB для JTAGICE mkII в операционной системе Windows (JTAGICE mkII USB Setup)]

Сначала нужно установить бесплатную IDE AVR Studio, желательно версию не младше 4.18, а еще лучше — версию 5 (см. [11]). Вместе с пакетом AVR Studio автоматически устанавливаются нужные драйвера USB для JTAGICE mkII, так что при первом подключении JTAGICE mkII система Windows легко найдет нужный драйвер и установит его.

После установки AVR Studio подключите JTAGICE mkII через USB к компьютеру и включите питание тумблером на задней стенке устройства. Windows обнаружит новое устройство и запустит мастера установки драйвера. Выполните процедуру установки, проиллюстрированную на скриншотах.

[Использование отладчика JTAGICE mkII в среде разработки AVR Studio]

Запустите AVR Studio, создайте в нем новый проект или откройте уже существующий (файл проекта имеет расширение *.aps). Настройте для проекта тип процессора и отладчик через меню Debug -> Select Platform and Device. -> выберите в качестве Debug Platform устройство JTAGICE mkII, а в качестве Device выберите тот микроконтроллер, код которого будете отлаживать. Порт можно оставить Auto, или переключить на USB, и в конце нажмите кнопку Finish.

Однако этого еще недостаточно. Чтобы можно было запустить компиляцию проекта, Вам еще нужен пакет инструментов для сборки — build tools. Эти инструменты автоматически будут установлены, если скачать и установить последнюю версию пакета WinAVR (он также бесплатен). В этот пакет входит компилятор gcc, линкер, утилита make, набор заголовочных файлов и примеры кода. Скачайте инсталлятор WinAVR по ссылке [12] и установите.

После установки WinAVR заново запустите AVR Studio, снова откройте проект и запустите компиляцию. Если проект правильно настроен, то в окне Build Вы увидите сообщения компиляции, например такие:

Читайте также:  Звукоизоляционная кабина своими руками материалы

Build started 23.1.2012 at 23:34:11

——— begin ———
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling C: URM37.c
avr-gcc -c -mmcu=at90usb162 -I. -gdwarf-2 -DF_CPU=16000000UL -DF_CLOCK=16000000UL
.

Linking: URM37.elf
avr-gcc -mmcu=at90usb162 -I. -gdwarf-2 -DF_CPU=16000000UL -DF_CLOCK=16000000UL -DBOARD=BOARD_MICROSIN162MU -D USB_DEVICE_ONLY -D FIXED_CONTROL_ENDPOINT_SIZE=8 -D FIXED_NUM_CONFIGURATIONS=1 -D USE_FLASH_DESCRIPTORS -D USE_STATIC_OPTIONS=»(USB_DEVICE_OPT_FUL
.

Creating load file for Flash: URM37.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock URM37.elf URM37.hex

Creating load file for EEPROM: URM37.eep
avr-objcopy -j .eeprom —set-section-flags=.eeprom=»alloc,load» \
—change-section-lma .eeprom=0 —no-change-warnings -O ihex URM37.elf URM37.eep || exit 0

Creating Extended Listing: URM37.lss
avr-objdump -h -S -z URM37.elf > URM37.lss

Creating Symbol Table: URM37.sym
avr-nm -n URM37.elf > URM37.sym

Size after:
AVR Memory Usage
—————-
Device: at90usb162

Program: 3780 bytes (23.1% Full)
(.text + .data + .bootloader)

Data: 301 bytes (58.8% Full)
(.data + .bss + .noinit)
——— end ———

Build succeeded with 1 Warnings.

После успешного окончания компиляции можно подключить к отладчику JTAGICE mkII отлаживаемое устройство (обычно через интерфейс ISP+debugWIRE или JTAG) и запустить отладку. Чтобы отладка могла запуститься по исходному коду программы, в проекте AVR Studio (или в makefile проекта) должен быть настроен вывод отладочной информации в ELF-файл, а также желательно отключение оптимизации. Для прошивки firmware через программатор или бутлоадер в проекте AVR Studio (или в makefile проекта) должна быть настроена генерация файла в формате Intel HEX.

[Возможные проблемы и способы их решения]

1. Подключите питание к отлаживаемой плате.
2. Убедитесь, что на коннекторе JTAG присутствует сигнал Vtref, и на него подано напряжение.
3. Убедитесь, что отлаживаемое устройство получает достаточное питание.

Это нормальное функционирование.

Прочитайте программно нужное место IO во временный регистр, и просмотрите его значение в режиме отладки. Ознакомьтесь с разделом Special Considerations, где перечислены регистры, для которых невозможно неразрушающее обратное чтение.

Переставьте переключатель в положение XTAL на плате STK502.

Удостоверьтесь, что сессия отладки JTAGICE mkII правильно закрыта, или перепрограммируйте FLASH корректно скомпилированным HEX-файлом.

1. Если JTAGICE mkII запитан только от USB, то необходимо, чтобы порт USB мог предоставить ток 500 мА.
2. Удалите буферы и паразитную емкость с провода RESET. Убедитесь, что верхний нагрузочный резистор (pull-up) на сигнале RESET имеет номинал 10 кОм и более.
3. Передерните питание у JTAGICE mkII и у отлаживаемой платы. Может потребоваться уменьшить скорость обмена между PC и JTAGICE mkII.

Заново разрешите интерфейс ISP, как описано в секции документации «Connecting to Target through the debugWIRE Interface». Можно использовать утилиты командной строки, чтобы разрешить интерфейс программирования ISP.

Подключите программируемый микроконтроллер к программатору HVSP (High Voltage Programming, высоковольтное программирование). Разрешите ISP или debugWIRE, и очистите биты защиты, если Вы используете debugWIRE.

Убедитесь, что целевой микроконтроллер работает в пределах Safe Operation Area, как описано в разделе Electrical Characteristics даташита. Уменьшите тактовую частоту и/или увеличьте напряжение питания микроконтроллера.

Выполните ручное обновление firmware, воспользовавшись в AVR Studio пунктом меню Tools -> JTAGICE mkII Upgrade. (перед этим передерните питание JTAGICE mkII.

Источник

Читайте также:  Бленда для фотоаппарата своими руками
Оцените статью
Проблема Возможные причины Способ решения
После запуска JTAG эмуляции отладка неожиданно завершается с ошибкой. 1. JTAGICE mkII не имеет нормального питания.
2. Бит JTAG Disable в регистре MCUCSR был неожиданно записан в firmware пользователя.
3. Потеряна синхронизация.
1. Если JTAGICE mkII запитан только от USB, то необходимо, чтобы порт USB мог предоставить ток 500 мА.
2. Удерживайте сброс в низком уровне, и поменяйте код так, чтобы бит JTAG Disable не был записан.
3. Передерните питание у JTAGICE mkII и у отлаживаемой платы. Если для соединения с PC используется COM-порт, то может потребоваться уменьшить скорость соединения между PC и JTAGICE mkII.
После того, как с помощью JTAGICE mkII был загружен код в программируемое устройство, эмулятор перестает работать. 1. Запрещен фьюз JTAG ENABLE.
2. Интерфейс программирования все еще активен. Невозможно использовать одновременно OCD (On-Chip Debug, отладка на кристалле) и интерфейс программирования (обычно ISP SPI).
1. Запрограммируйте фьюз JTAG ENABLE.
2. Закройте интерфейс программирования и войдите в режим эмуляции.
JTAGICE mkII успешно определяется AVR Studio (или другим программным обеспечением), однако нельзя подключиться к отлаживаемому устройству. 1. JTAG: не запрограммирован фьюз JTAG ENABLE.
2. debugWIRE: не запрограммирован фьюз DWEN.
1. JTAG: используйте другой интерфейс программирования, чтобы запрограммировать фьюз JTAG ENABLE.
2. debugWIRE: используйте другой интерфейс программирования, чтобы запрограммировать фьюз DWEN.
AVR Studio (или Atmel Studio) не видят JTAGICE mkII. 1. Слишком мал буфер обмена у COM-порта.
2. Потеряна синхронизация.
3. Плохой кабель соединения с COM-портом, или он подключен неправильно.
4. Другая программа или устройство захватили доступ к COM-порту.
1. Увеличьте размер буфера COM-порта.
2. Передерните питание у JTAGICE mkII и у отлаживаемой платы.
3. Убедитесь в исправности кабеля и подключите его должным образом.
4. Закройте все программы и драйверы, которые захватили управление COM-портом (например, драйверы PDA, IrDA или программа управления модемом).
AVR Studio выдает сообщение об отсутствии напряжения. 1. Нет питания на отлаживаемой плате.
2. Не подключен сигнал Vtref.
3. Напряжение питания отлаживаемого устройства слишком низкое.
Фьюз OCD запрещен, однако с использованием JTAGICE mkII отладка все еще возможна. JTAGICE mkII автоматически программирует фьюз OCD, если он запрещен.
Некоторые регистры IO не обновляются корректно в окне AVR Studio IO view. Когда невозможно неразрушающее обратное чтение регистра (non-intrusive read back), то в AVR Studio IO view он обновляться не будет.
Не работает отладка ATmega169 вместе с STK500 или STK502, когда используется внешняя тактовая частота. Переключатель TOSC на STK502 находится в положении TOSC.
Иногда после использования программных точек останова (software breakpoints) отлаживаемая программа firmware «зависает» и не запускается корректно. Сессия отладки JTAGICE mkII не была правильно закрыта, и инструкции BREAK все еще находятся в памяти FLASH.
Эмуляция debugWIRE нормально запускается, но неожиданно завершается с ошибкой. 1. Недостаточное питание для JTAGICE mkII.
2. Драйверы или паразитная емкость нарушают обмен по сигналу RESET.
3. Потеряна синхронизация.
После сессии debugWIRE не работает программирование через интерфейс ISP. Когда интерфейс debugWIRE разрешен, интерфейс ISP запрещается.
Не работает ни один из интерфейсов — ни ISP, ни debugWIRE. Запрещены интерфейсы ISP и debugWIRE. Интерфейс debugWIRE не будет работать, если запрограммированы биты защиты (lockbits).
При отладке JTAG или debugWIRE появляются сообщения об ошибках, или при отладке происходит странное поведение отладчика. Целевой отлаживаемый микроконтроллер работает вне безопасной области (Safe Operation Area), которая определяется максимальной тактовой частотой при заданном напряжении питания Vcc.
Обновление программного обеспечения JTAGICE mkII (firmware upgrade или firmware downgrade) завершилось с ошибкой, и AVR Studio (или Atmel Studio) не видят JTAGICE mkII. Утилита jtagiceii.exe выдает ошибку «Failed to enter programming mode.». При этом в Диспетчере Устройств видно подключенное по USB устройство Jungo -> JTAGICE mkII, и на верхней панели JTAGICE mkII горят красный и желтый светодиоды. Такое может произойти, когда к примеру ранее пользовались отладкой в Atmel Studio, но потом понадобилось воспользоваться утилитой командной строки jtagiceii.exe для массового программирования плат с микроконтроллерами.