Программирование AVR Atmel AVR JTAGICE mkII Tue, March 19 2024  

Поделиться

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

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

Atmel AVR JTAGICE mkII Печать
Добавил(а) microsin   

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

JTAGICE-mkII.JPG JTAGICE-mkII-top-IMG_0438.JPG JTAGICE-mkII-bottom-IMG_0441.JPG

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

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

JTAG_to_ISP_cable.jpg

JTAG_to_ISP_cable-SCH.png

[Установка драйвера 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-setup01 JTAGICE-mkII-setup02 JTAGICE-mkII-setup03 JTAGICE-mkII-setup04 JTAGICE-mkII-setup05

[Использование отладчика 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. Напряжение питания отлаживаемого устройства слишком низкое.

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

Фьюз OCD запрещен, однако с использованием JTAGICE mkII отладка все еще возможна. JTAGICE mkII автоматически программирует фьюз OCD, если он запрещен.

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

Некоторые регистры IO не обновляются корректно в окне AVR Studio IO view. Когда невозможно неразрушающее обратное чтение регистра (non-intrusive read back), то в AVR Studio IO view он обновляться не будет.

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

Не работает отладка ATmega169 вместе с STK500 или STK502, когда используется внешняя тактовая частота. Переключатель TOSC на STK502 находится в положении TOSC.

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

Иногда после использования программных точек останова (software breakpoints) отлаживаемая программа firmware "зависает" и не запускается корректно. Сессия отладки JTAGICE mkII не была правильно закрыта, и инструкции BREAK все еще находятся в памяти FLASH.

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

Эмуляция debugWIRE нормально запускается, но неожиданно завершается с ошибкой. 1. Недостаточное питание для JTAGICE mkII.
2. Драйверы или паразитная емкость нарушают обмен по сигналу RESET.
3. Потеряна синхронизация.

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

После сессии debugWIRE не работает программирование через интерфейс ISP. Когда интерфейс debugWIRE разрешен, интерфейс ISP запрещается.

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

Не работает ни один из интерфейсов - ни ISP, ни debugWIRE. Запрещены интерфейсы ISP и debugWIRE. Интерфейс debugWIRE не будет работать, если запрограммированы биты защиты (lockbits).

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

При отладке JTAG или debugWIRE появляются сообщения об ошибках, или при отладке происходит странное поведение отладчика. Целевой отлаживаемый микроконтроллер работает вне безопасной области (Safe Operation Area), которая определяется максимальной тактовой частотой при заданном напряжении питания Vcc.

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

Обновление программного обеспечения 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 для массового программирования плат с микроконтроллерами.

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

При программировании через интерфейс ISP утилита jtagiceii.exe не может запрограммировать память FLASH, и выдает следующее сообщение: "jtagiceii.exe v1.2.13 Copyright (C) Atmel Corporation 2004-2011
Programming FLASH: 100.0%
Failed to write FLASH memory to target."
Скорее всего в микроконтроллере установлены фьюзы по умолчанию, и работает внутренний тактовый генератор на частоте 1 МГц. Если при этом установлена слишком высокая тактовая частота ISP, то микроконтроллер не будет правильно программироваться. Переключитесь на пониженную тактовую частоту ISP, к примеру на частоту 125 кГц.

[Ссылки]

1. General Board Description JTAGICE mkII site:support.atmel.no - железо устройства (блок-схема, назначение светодиодов, цоколевки коннекторов). Полной принципиальной схемы там, к сожалению, нет.
2. Build your own AVR JTAG ICE clone site:scienceprog.com (сделайте свой собственный клон AVR JTAG ICE) - статья на английском, и его схема в формате PDF. Этот клон работает через RS-232.
3. USBprog - An open source all purpose tool site:linuxlandit.blogspot.ru (AVR ISP, ARM7/ARM9, AT89, JTAG, RS232, IO) - тут поддерживается много интерфейсов, и заявлено, что JTAGICE mkII в разработке.
4. А кто-нибудь сделал AVR JTAG ICE? site:forum.ixbt.com - ветка форума IXBT, где обсуждают самопал JTAGICE mkII.
5. ICD2 Clone, AVR JTAG ICE Clone site:icd2clone.narod.ru - AVRProg совместимый Bootloader для AVR JTAG ICE Clone на ATmega16.
6. Evertool - AVRISP/STK500-protocol and JTAGICE compatible Programmer/JTAG debugger site:siwawi.arubi.uni-kl.de.
7. AVRminiProg site:simonqian.com (AVRminiISP, AVRminiJTAG, AVRminiDragon) - совместимые с Atmel программаторы и отладчики.
8. Схема, разводка и прошивка JTAG ICE.
9. Фотографии кишочков JTAGICE mkII.
10. JTAGICE mkII USB Setup site:support.atmel.no - документация по установке JTAGICE mkII от Atmel.
11. AVR Stuidio - где брать дистрибутивы.
12. WinAVR site:sourceforge.net - закачка инсталлятора пакета WinAVR.
13HappyJTAG: простой интерфейс JTAG для AVR.
14HappyJTAG2: JTAG и ISP для AVR.

 

Комментарии  

 
+1 #3 Андрей 15.04.2015 11:25
Конструкция JTAGIce mkII не раскурочена, прошивки для неё также нигде не найти (в AVRStudio она есть, но лежит на диске зашифрованная).

JTAGIce первой версии не поддерживает новые AVR-ы, например ATMega406 и прочие. Проблема в старой прошивке JTAGIce, атмели её не обновляют да и вообще поддержку убрали из AVRStudio 5 и выше.

В целом, AVR'ы надо забывать как дурной сон, при наличии STM32, самые дешёвые модели которого стоят в районе 20 рублей, заморачиваться с AVR уже нет никакого смысла.
Цитировать
 
 
+1 #2 Дмитрий Покрышкин 27.08.2014 20:51
А есть ли самодельный JTAG отладчик, работающий с AtmelStudio 6.2? Про работу самодельных отладчиков с AVRStudio 4 статей довольно много. А вот чтобы с AtmelStudio работал самодельный отладчик - таких статей не нашел.
Цитировать
 
 
+2 #1 Debug 08.10.2010 16:15
По первой ссылке информация по JTAGICE mkI, а не mkII.
Цитировать
 

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


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

Top of Page