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. Напряжение питания отлаживаемого устройства слишком низкое. |
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. 13. HappyJTAG: простой интерфейс JTAG для AVR. 14. HappyJTAG2: JTAG и ISP для AVR. |
Комментарии
JTAGIce первой версии не поддерживает новые AVR-ы, например ATMega406 и прочие. Проблема в старой прошивке JTAGIce, атмели её не обновляют да и вообще поддержку убрали из AVRStudio 5 и выше.
В целом, AVR'ы надо забывать как дурной сон, при наличии STM32, самые дешёвые модели которого стоят в районе 20 рублей, заморачиваться с AVR уже нет никакого смысла.
RSS лента комментариев этой записи