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.
[Возможные проблемы и способы их решения]
Проблема | Возможные причины | Способ решения |
После запуска 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 для массового программирования плат с микроконтроллерами. |