""

Клон avr jtag ice

Клон avr jtag ice

Отладчик 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. (не перепутать с осцилятором. а то придется подключать внешний генератор чтобы перепрошить фьюзы)

Клон avr jtag ice

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.

AVR Freaks

JTAG ICE Clone for ATMEGA32

  • 1
  • 2
  • 3
  • 4
  • 5

Hi guys,
I’m porting the Upgrade.ebn file to use an ATMEGA32.

Obviously it isn’t an easy task. But anyways, I’m thinking that the only major differences between the 16 and 32 are the interrupt locations and bootloader locations.

I’ve disassembled a hex file which has both the bootloader and JTAG interface (upgrade.ebn) software on it.

I’ve also redirected the interrupt vectors. I’ve also positioned the bootloader start to 0x3800. For the ATMEGA16, I think it is normally positioned at 0x1C00. For the jmps can calls which point to the ATMEGA16 bootloader locations, I’ve redirected to the corresponding ATMEGA32’s locations.

It however still does not want to work. There seem to be some jmps and calls to locations which have no data. Eg. there is a jump to 0x1E00 which I assume could be the start of the bootloader for the ATMEGA16.

I’ve run out of ideas on how to get this working on the ATMEGA32. Any ideas?

I know that jporter has ported the JTAG ICE firmware to the butterfly. But I’m not sure how I can implement it for the ATMEGA32.

Any help would be appreciated!

Anyhows, I’ve uploaded the miniice.hex file as well as the disassembled code. If anyone wants to have a look.

Attachment(s):

  • Log in / register to post comments

Top

  • 1
  • 2
  • 3
  • 4
  • 5

Julie Porter (jporter) on here did this exercise once already – porting the code to a 169 (I think it was?). You may want to contact her for advice on exactly what needs to be changed to port the binary.

  • Log in or register to post comments

Top

  • 1
  • 2
  • 3
  • 4
  • 5

The code I ported Which is several revisions back uses jump tables after the interrupt vector. If you search through the disassembled code you will see some ijmps. You are correct about the bootloader call. That is a major problems with most of the clones, an incorrect bootloader address which prevents firmware updates.

Look up how ijmp works by loading data into the Z register then jumping to that address. So what comes after the interrupt vectors is data, not code. This is the jump table which contains some data other than the jump itself. Since the code indirectly jumps, when you look at the disassembly you are disassembling data.

If the input instruction is subtracted from a has value of differences you only need to subtract the data byte in the from the prior byte read into the input ring. So if you have the command codes ‘M’ and X to find the index in the table, subtract ‘M’-X and then search for this difference. Other parameters in the jump table are used to set the depth of the C stack frame for the passing of arguments to the function. Calculate the right hash and your commands are one table entry apart. This is why reverse compiling is a major undertaking. Be glad this is Harvard architecture. With von Nueman, It is common for the data to be self modifying.

The mega32 has twice the flash, which may affect some of the jump table offsets. With the butterfly, It is still a “mega16” underneath the extra I/O ports.

The main contention in porting was the change of the SRAM start from 0x60 to 0x100. I did that with a search and replace on the ldx/stx access instructions.

The other watch point is the ADC code that monitors vtarget. The ice wants to go into safe mode when the two target device lines are not at the expected state. One line is digital the other monitors the target voltage.

The ICEBUT remains more of a novelty with the limited device support. There is still the use as a teaching aid in a Butterfly to Butterfly environment. A way of evaluating what an ICE can do. I did this before the dragon came out so that pretty much did in the need for a simple ICE clone.

Never delved into the TAP controller most of which is documented in the device data sheet. Perhaps you can figure out a way to extend the devices supported.

While this was a fun exercise and I learned a few things about programming AVR (especially the use of the ADC.) I went with a dragon and then a JTAG ICE MKII for my day to day work as I am using mega88 and tiny chips.

  • Log in or register to post comments

Top

  • 1
  • 2
  • 3
  • 4
  • 5

Hi there, thanks for your reply.

Julie, looking at the data/const tables in your hex file show that these instructions are the same as those in mine. When you decode the
“.db” lines, they actually just represent the normal JTAG ICE code.

eg. .db ” . ” can be disassembled to be.

subi r20,k61
sbci r21,kE2
sbci .

I’m still having some trouble with the port.

Is it possible to adjust OSCCAL to obtain a 7.373MHz clock without the use of the crystal? I don’t see why not.

Despite getting scrambled data from the JTAG ICE clone, I don’t think it is to do with the clock speed since the bootloader commands are working fine with both ‘UBBRL’ registers set to 0x17, 19.2kBaud with a 7.373MHz clock.

  • Log in or register to post comments

Top

  • 1
  • 2
  • 3
  • 4
  • 5

Trust me those .db “instructions” are data. Put this post in a disassembler and it will look like code. The data code thing is why reverse coding is an art and not automated. Many systems intentionally mix code and data to make the reverse even more difficult. You should have been around in the early apple II days. Self modifying code was the norm, with traps for the would be student who wanted to study it by reversing.

I had no trouble making the ICEBUTT work with Gorgios calibration routines on the butterfly. Studio sends the ‘raw’ calibration byte as per the mega 163 rather than the ‘code’ byte documented that is returned on a query in the the protocol. This happens every time you change the page in the AVR Studio programmer from the advanced pane to the pane with the voltage readings. Since the voltages are wonked anyway, the trick is to leave the pane on advanced. Switching to the program of fuse panes does not seem to do the baud reset. The user can always use the baud popup to force the baud back after a reset. I think this was that I did not go with the 19.2kBaud, but opted to use the 9600 baud required by AVRISP. The Br@y’s term was a real help as I recall. If it works in the boot it will work in the main code. Studio as I recall does require the initial handshake to happen at the lower baud. It will up it if it wants to.

Personally I see no need to work with the clones anymore. They made sense in a pre-dragon world. These days with USB I forget about all the issues with baud and clocks. I managed to get the tools I needed by offering to do a project for the cost of the tools and I keep the tools. With the current promotions on the bundles, it is not worth it as time to work with ICE clones.

Making a Butterfly into an ICE, was more of a desire to do something useful with a Butterfly. I can not see any practical reason to make a clone out of a mega32. The only reason might be to extend the TAP controller, It took me a few weeks to figure out the front end of the MKI. I figure it would take a few months to work out the TAP controller and the Studio XML files. Not worth it when for a few hundred one can get real tools. And work on practical projects, that never seem to find a market. Still I give advice I do not take as I prefer the Everest approach myself.

Клон avr jtag ice

Источники питания электронной аппаратуры, импульсные и линейные регуляторы. Топологии AC-DC, DC-DC преобразователей (Forward, Flyback, Buck, Boost, Push-Pull, SEPIC, Cuk, Full-Bridge, Half-Bridge). Драйвера ключевых элементов, динамика, алгоритмы управления, защита. Синхронное выпрямление, коррекция коэффициента мощности (PFC)

  • 21 час назад
  • Тема:Вопрос по драйверам ключей блоков питания ATX.
  • От:-=TRO=-
  • Обратная Связь, Стабилизация, Регулирование, Компенсация

    Организация обратных связей в цепях регулирования, выбор топологии, обеспечение стабильности, схемотехника, расчёт

    • 16 мая
    • Тема:Источник тока Управляемый напряжением
    • От:Шнекоход
  • Первичные и Вторичные Химические Источники Питания

    Li-ion, Li-pol, литиевые, Ni-MH, Ni-Cd, свинцово-кислотные аккумуляторы. Солевые, щелочные (алкалиновые), литиевые первичные элементы. Применение, зарядные устройства, методы и алгоритмы заряда, условия эксплуатации. Системы бесперебойного и резервного питания

    • 12 мая
    • Тема:Контроллер Li-Ion батареи BQ30Z55 не работает
    • От:rfengin
  • Высоковольтные Устройства – High-Voltage

    Высоковольтные выпрямители, умножители напряжения, делители напряжения, высоковольтная развязка, изоляция, электрическая прочность. Высоковольтная наносекундная импульсная техника

    • В воскресенье в 11:22
    • Тема:Какую топологию ВВ источника выбрать для двунапр…
    • От:iiv
  • Электрические машины, Электропривод и Управление

    Электропривод постоянного тока, асинхронный электропривод, шаговый электропривод, сервопривод. Синхронные, асинхронные, вентильные электродвигатели, генераторы

    • 28 мая
    • Тема:Помогите подобрать качественный драйвер ШД
    • От:dinam
  • Индукционный Нагрев – Induction Heating

    Технологии, теория и практика индукционного нагрева

    • 16 мая
    • Тема:Индукционный нагреватель на 100 кВт своими рукам…
    • От:dericc
  • Системы Охлаждения, Тепловой Расчет – Cooling Systems

    Охлаждение компонентов, систем, корпусов, расчёт параметров охладителей

    • 20 мая
    • Тема:Изолирующая прокладка между силовым компонентом …
    • От:vladec
  • Моделирование и Анализ Силовых Устройств – Power Supply Simulation

    Моделирование силовых устройств в популярных САПР, самостоятельных симуляторах и специализированных программах. Анализ устойчивости источников питания, непрерывные модели устройств, модели компонентов

    • 9 апреля
    • Тема:Micro-CAP 12. Цепи с одинаковым именем почему-то…
    • От:SAVC
  • Компоненты Силовой Электроники – Parts for Power Supply Design

    Силовые полупроводниковые приборы (MOSFET, BJT, IGBT, SCR, GTO, диоды). Силовые трансформаторы, дроссели, фильтры (проектирование, экранирование, изготовление), конденсаторы, разъемы, электромеханические изделия, датчики, микросхемы для ИП. Электротехнические и изоляционные материалы.

    • 24 мая
    • Тема:Программы расчета трансформаторов и дросселей
    • От:kochkuroff
  • Интерфейсы

      Последнее сообщение

    Форумы по интерфейсам

    все интерфейсы здесь

    • 19 часов назад
    • Тема:Облачный сервис расшифровки автомобильных кан-ло…
    • От:eurosens
  • Поставщики компонентов для электроники

      Последнее сообщение

    Поставщики всего остального

    от транзисторов до проводов

    • Вчера в 04:18
    • Тема:Изготовление лицевой панели
    • От:destroit
  • Компоненты

    Закачка тех. документации, обмен опытом, прочие вопросы.

    • 2 июня
    • Тема:Что за диод, есть фото.
    • От:Georgy
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир

      Последнее сообщение

    Обсуждение Майнеров, их поставки и производства

    наблюдается очень большой спрос на данные устройства.

    • 21 февраля
    • Тема:Зачем нужны дорогие майнеры
    • От:Doka
  • Дополнительные разделы – Additional sections

      Последнее сообщение

    Встречи и поздравления

    Предложения встретиться, поздравления участников форума и обсуждение мест и поводов для встреч.

    • 1 июня
    • Тема:С Днём Великой Победы в Великой Войне.
    • От:evgdmi
  • Ищу работу

    ищу работу, выполню заказ, нужны клиенты – все это сюда

    • 7 часов назад
    • Тема:МОНТАЖ ПЕЧАТНЫХ ПЛАТ
    • От:radiomont
  • Предлагаю работу

    нужен постоянный работник, разовое предложение, совместные проекты, кто возьмется за работу, нужно сделать.

    • 2 часа назад
    • Тема:ТЗ на разработку электронного устройства.
    • От:ergovit
  • Kуплю

    микросхему; устройство; то, что предложишь ты 🙂

    • 2 часа назад
    • Тема:SAW фильтр на 737 МГц
    • От:3apw
  • Продам

    есть что продать за деньги, пиво, даром ?
    Реклама товаров и сайтов также здесь.

    • 9 часов назад
    • Тема:Плата многоканального АЦП E14-440 (USB) и промыш…
    • От:Linker
  • Объявления пользователей

    Тренинги, семинары, анонсы и прочие события

    • 3 часа назад
    • Тема:CSP-3000 — мощные высоковольтные источники питан…
    • От:КОМПЭЛ
  • Общение заказчиков и потребителей электронных разработок

    Обсуждение проектов, исполнителей и конкурсов

    Схема подключения jtag ice atmega8. Внутрисхемный эмулятор. Чем является JTAG-программатор

    DV164045 – высокоскоростной и экономически эффективный инструмент для внутрисхемного программирования и отладки микроконтроллеров PIC и цифровых сигнальных контроллеров dsPIC от компании Microchip. Высокая скорость работы обеспечивается за счет применения в изделии 300 МГц 32-битного MCU с 2 МБ RAM и высокоскоростной ПЛИС FPGA, которая обеспечивает более скоростные коммуникации, загрузки и отладку по сравнению с предыдущими версиями устройства. Процесс отладки и программирования осуществляется с применением мощного, но простого в использовании графического интерфейса интегрированной среды разработки IDE MPLAB X. MPLAB ICD4 подключается к вашему ПК через USB 2.0 HS интерфейс и к отладочному разъему целевой платы, который также совместим с внутрисхемными эмуляторами MPLAB ICD3 и MPLAB REAL ICE™. Кроме того, MPLAB ICD4 может работать с интерфейсом JTAG.

    В настоящее время программатор/ отладчик MPLAB 4 поддерживает многие, но не все PIC и dsPIC. Прошивка постоянно обновляется для расширения списка поддерживаемых микроконтроллеров. Адрес для запроса поддержки приоритетных чипов или для сообщения о возникших проблемах: [email protected] .

    Если у вас инсталлирована IDE MPLAB X, вы сможете найти список поддерживаемых микросхем в папке «docs» инсталляционной директории. Имя файла “Device Support.htm”. Кроме того, список можно скачать по ссылке http://www.microchip.com/mplabx-ide-release-notes .

    Рис. Внутрисхемный программатор/ отладчик DV164045

    • Полноскоростная эмуляция в режиме реального времени:
      • Изделие разработано для поддержки высокоскоростных процессоров, работающих на максимальных скоростях
      • Отладка приложений на вашей плате в режиме реального времени
    • Надежный интерфейс:
      • Добавлена защита цепей драйверов отладчика, чтобы обезопасить их от скачков питания на целевой плате
      • Мониторинг VDD и VPP с целью защиты от перенапряжения. Все линии защищены от перегрузки по току
      • Безопасное питание до 1 A с дополнительным источником питания
    • Microchip Standard Connectivity Plus JTAG:
      • Поставляется со стандартным отладочным разъемом Microchip. Имеется возможность использования JTAG
    • Совместимость:
      • Поддерживает все MPLAB ICD 3 разъемы
    • Портативное устройство с питанием от USB; соответствие RoHS:
      • Плата размещена в прочном черном корпусе с матовой алюминиевой крышкой и линейкой светодиодов для индикации статуса отладки
      • Питание от USB порта, не требуется внешний источник питания
      • CE- и RoHS-соответствие
    • Широкий диапазон напряжений эмуляции:
      • Поддерживает целевые напряжения от 20 В до 5.5 В
    • Высокоскоростное программирование:
      • Быстрая перезагрузка прошивки для быстрой отладки/внутрисхемного перепрограммирования
      • Включает программируемую настройку скорости отладки для оптимизации программирования
    • Тестовый интерфейсный модуль:
      • Включает модуль обратной связи для тестирования отладочного порта и кабеля
    • Простота обслуживания и обновления функций:
      • Добавьте поддержку новых микросхем и функций, инсталлируя позднейшую версию MPLAB X IDE, которая доступна для бесплатной загрузки на www.microchip.com/mplabx
      • Обновление прошивки через MPLAB X IDE
    • Экономическая эффективность:
      • Особенности и эксплуатационные характеристики на уровне стоимости сопоставимых эмуляционных систем
    • Мощная отладка:
      • Мощная отладка с MPLAB X IDE
      • Поддержка нескольких точек останова, секундомера и отладки исходного кода
      • Опция выбора подтяжки для целевого интерфейса в редакторе MPLAB X IDE для быстрой программной модификации/ отладки
    • Требования к системе:
      • MPLAB X IDE ver. 4.00 или выше
      • Доступный USB порт
      • Microsoft Windows ® 7 или выше, Mac OSX ® и Linux ®

    При разработке и отладке программ под микроконтроллеры, возникают вопросы, связанные с программированием и отладкой программы в реальной схеме. Если с программированием микроконтроллеров AVR особых проблем не возникает, поскольку существует множество схем для «заливки» прошивки в кристалл, одной из простейших таких схем является схема получившая название «пять проводов», то с отладкой программы такого богатого выбора не существует.

    Для отладки программы возможно использования только двух вариантов – это программный симулятор и внутрисхемный JTAG эмулятор-программатор. Программный симулятор, как правило, не может учитывать всех особенностей работы схемы, таких как внешние воздействия, совместная работа с другими устройствами и прочее. С аппаратными программаторами-отладчиками JTAG появляется возможность пошаговой отладки программы напрямую в самом микроконтроллере установленном непосредственно в схему, просмотра и изменения всех регистров микроконтроллера, установка breakpoints и конечно же внутрисхемного программирования микроконтроллера. Но стоимость оригинального AVR JTAG ICE MkII выпускаемого Atmel колеблется в районе 300 евро, а его аналога AVRDRAGON выпускаемого серийно около 3000руб., что является очень дорогим для людей, занимающихся созданием устройств на микроконтроллерах AVR «для себя».
    Но к счастью удалось создать клон, оригинального AVR JTAG ICE , который стоит существенно дешевле оригинала и позволяет проводить программирование и отладку микроконтроллеров AVR с интерфейсом JTAG.

    Рис 1. Принципиальная электрическая схема клона AVR JTAG ICE

    Принципиальная электрическая схема приведена на рис. 1. Основой данного JTAG служит микроконтроллер DD3 AVR ATMega16. Микросхема DD2 MAX232 выполняет роль преобразователя интерфейса RS232 в ТТЛ уровни UART. Микросхема DD1 предназначена для защиты входных и выходных цепей микроконтроллера DD3 и согласования напряжения логических уровней при использовании внешнего питания.

    Питание JTAG может браться от цепей питания отлаживаемого устройства через четвертый контакт vTref XP3, а также может использоваться внешнее через разъем XP1 и ХР2. Внешнее напряжение может быть в диапазоне от 7 до 15В. При использовании внешнего источника питания, вывод vTref разъема XP3можно не подключать.
    Светодиод HL2 отображает наличие питания, HL1 режим работы JTAG.

    Подключение JTAG к отлаживаемому микроконтроллеру осуществляется через стандартный десяти выводной разъем. Схема подключения которого изображена на рис. 2.


    Рис 2. Схема подключения AVR JTAG ICE к отлаживаемому устройству

    Существует несколько вариантов BootLoader загрузчиков для прошивки JTAG, но на мой взгляд наиболее удачный вариант получился у Кротевич Виталия (Vit). Его загрузчик наиболее близко повторяет фирменный и позволяет обновлять микропрограмму JTAG непосредственно из AVRStudio без перезагрузки JTAG и входа в режим программирования через BootStart. В случае если не планируется производить обновление прошивки JTAG`a , то загрузчик можно не прошивать, а «зашить» только оригинальную прошивку от .

    Чтобы «зашить» bootloader в JTAG можно воспользоваться программатором AVReal, PonyProg, STK200, «пять проводов», любо любым другим имеющимся в наличии и совместимым с AVR ISP. Подключение программатора производится к ISP разъему программирования ХР4. Файл прошивки JTAG_ICE.hex.

    Пример программирования фьюзов показан на рисунке 3.


    Рис 3. Установка фьюзов для AVR JTAG ICE

    Пример работы AVR JTAG ICE показан на рисунке 4. В качестве примера произведено считывание сигнатуры ATMega128


    Рис 4. Чтение сигнатуры микроконтроллера ATMega128 с помощью AVR JTAG ICE


    Рис 5. Изображение верхнего слоя трассировки печатной платы, с нанесенными элементами


    Рис 6. Изображение нижнего слоя трассировки печатной платы, с нанесенными элементами

    Фотографии готового устройства:

    P.S. Схема и трассировка печатной платы разработаны автором статьи, загрузчик использован Кротевич Виталия (ака Vit), прошивка от оригинальной AVRStudio.

    При написании статьи использовались следующие источники:
    1 http://onembedding.bialix.com/files/jtag_vit/
    2. Официальное руководство пользователя AVR JTAG ICE JTAGuserguide.pdf

    Скачать прошивку, файлы печатных плат вы можете ниже

    Клон avr jtag ice

    Семейство микроконтроллеров с архитектурой AVR стало де-факто стандартом для радиолюбительских поделок. Я начинал изучать контроллеры именно с этого семейства, но и сейчас нередко использую их в домашних конструкциях.

    Вот уже более года для отладки прошивок я использую AVR dragon.

    AVR Dragon – самый дешевый отладчик для микроконтроллеров AVR фирмы Atmel, поддерживающий debugWire.

    Чем отличается программатор от отладчика?

    Программатор – это просто устройство, записывающее программу в контроллер. Дальше программа исполняется сама по себе и если что-то пойдет не так, то узнать что именно — очень сложно. Отладчик позволяет остановить исполнение программы в любой точке и узнать значения всех переменных, регистров и вообще памяти, отладчик позволяет исполнять программу пошагово, посмотреть стек вызовов функций и кучу других полезностей. Вообщем, отладчик – это круто!

    Интерфесы

    Чтобы было понятно, зачем мне нужно было покупать именно этот отладчик, а не собрать, к примеру, вот такой, кратко опишу разные интерфейсы программирования и отладки которые используются в контроллерах AVR.

    ISP (In System Programming) – интерфейс внутрисхемного программирования, позволяет программировать контроллер не выпаивая из платы. Через ISP контроллер программируется с небольшой скоростью, но ISP обладает большим достоинством для начинающих – программатор для этого интерфейса состоит из четырех проводков. Во многом благодаря этому интерфейсу, Atmel стал лидером любительских конструкций. Для того, чтобы запрограммировать контроллер, к нему нужно подключить 4 сигнала – MISO, MOSI, SCLK, RESET.

    HV prog – высоковольтное программирование. Умеет очень быстро программировать контроллеры, используется при массовом выпуске, в любительской практике практически бесполезен. (может быть использован для восстановления ISP, если вы его случайно отключили по невнимательности). К контроллеру нужно подключить 18 сигналов — PD[7…0], PC[7…0], XTAL, RESET.

    JTAG – самый широко используемый отладочный интерфейс. О нем уже очень много написано, поэтому повторяться не буду. Присутствует в контроллерах с большим количеством ножек. Требует подключения пяти сигналов (TCK, TDO, TMS, TDI, RESET).

    debugWire – проприетарный отладочный интерфейс Atmel, который позволяет следить за внутренними процессами контроллера по одному проводу (RESET). Так, как в любительской практике обычно используются контроллеры с маленьким количеством ножек, это просто замечательная альтернатива JTAG’у.

    К сожалению, Atmel немного испортил всю замечательность идеи тем, что debugWire на новых контроллерах отключен по умолчанию, и включается с помощью ISP интерфейса (тоесть, прийдется сначала подключить к контроллеру целых 4 контакта, включить debugWire, и только после этого можно отключить 3 контакта SPI).

    AVR Dragon позволяет отлаживать контроллеры с памятью до 32кБайт, а программировать умеет вообще все контроллеры AVR (кроме atxmega).

    Конечно, за цену AVR dragon можно накупить очень много больших контроллеров ( 33 штуки atmega16, к примеру ) и использовать их с AVR JTAG ICE clone, так-что покупать дракона или нет – решать вам. Лично я люблю использовать хороший инструмент, поэтому купил.

    DebugWire

    Практически все поделки я собираю на контроллерах: atmega48, atmega88, atmega168 и attiny13. Это очень сбалансированные контроллеры! Все они имеют debugWire интерфейс.

    Первая проблема, с которой я столкнулся, купив avrDragon – как-же его подключить к контроллеру? Дело в том, что на самой плате отладчика выведена только колодка. На противоположной стороне нарисована карта расположения выводов, но как они согласуются – далеко не очевидно! Я разок ошибся с подключением, поэтому выкладываю расположение контактов.

    Каждый сигнал нужно подключить к такому-же на контроллере. Сигнал VTG ( Target Voltage ) служит для подстройки логических уровней отладчика к логическим уровням отлаживаемого контроллера и подключается к напряжению его питания.

    Вторая проблема – DebugWire не работает, если у контроллера нет тактовой частоты! Я долго искал проблему в драконе и проводах, а оказалось, просто дорожка к кварцу была повреждена.

    Третяя проблема – скорость отладки в AVR Studio была значительно выше, чем в IAR. Так как основное мое средство разработки все-же IAR, это меня совсем не радовало. К счастью, в последних версиях IAR’а скорость работы с debugWire значительно увеличилась.

    Для подключения дракона к контроллерам, я спаял два проводка. Одни из них припаивается прямо к дорожкам, второй вставляется в разъем на плате. Так как на разъеме дракона нет ключа, я сделал свой – написал TOP. Кстати, провода очень удобно метить такой технологией – пишем маркером на термоусадке название сигнала и термоусаживаем ее – наши надписи теперь стали маленькие, красивенькие и ни за что не слезут с проводков!

    Теперь типичная последовательность действий. Запускаем IAR. В опциях проекта меняем отладчик на Dragon (Project->Options->Debugger, устанавливаем Dragon). Подключаем дракона к плате, подаем питание. Теперь выбираем в меню Dragon->Fuse Handler. Устанавливаем те фьюзы, которые нам нравятся, разрешаем debugWire (фьюз DWEN). Отключаем питание, отключаем ISP от контроллера (можно и оставить, если SPI не используется), оставляем только RESET, VTG и GND подключенными. Включаем питание, жмем на кнопку “Download and Debug”. Вуаля:

    Если захочется поменять фюзы, придется опять подключить ISP контакты. В подавляющем большинстве проектов SPI не используется, поэтому можно один раз подключиться и ничего не трогать.

    У дракона есть несколько опций (Project->Options->Debugger->Dragon):

    Supress download – если поставите галочку, будет спрашивать вас – загружать новую программу в контроллер или оставить старую? Используется для (весьма сомнительной) экономии времени и ресурса флэш-памяти.

    Allow download to RAM – иногда в процессе отладки, требуется сохранить данные ОЗУ, а потом загрузить их обратно в контроллер. Эта опция позволяет это сделать. Я никогда ей не пользовался, поэтому ничего толком сказать не могу.

    Target consistency check – проверяет правильность записанных данных.

    Эти опции используются редко и не очень важны, а вот на второй вкладке есть очень важная опция:

    Run timers in stopped mode – таймера контроллера продолжают работать, даже если программа остановлена. К примеру, это очень важно для ШИМов, если их остановить в непредвиденный момент, что-нибуть может выйти из строя.

    У меня спрашивали – можно ли программировать контроллер по debugWire, или это только отладочный интерфейс? Ответ – можно. Но опять-же придется сначала включить debugWire с помощью ISP.

    Недавно попробовал использовать JTAG с AVR ами. Впечатления самые положительные. Заливает прошивку значительно быстрее, чем debugWire. Умеет программировать фюзы.

    Макетное поле

    На драконе есть еще макетное поле. Говорят, если впаять туда ZIF-панельку, то будет очень удобно массово программить контроллеры. Лично я этим не занимался, поэтому ничего сказать не могу.

    Проблема со стабилизатором.

    Есть еще одна проблема. В схеме питания дракона разработчики допустили ошибку, и микросхема в блоке питания некоторых экземпляров сгорает. Atmel дает рекомендацию выпаять сгоревшую микросхему и припаять один проводок, при этом гарантия на дракона не теряется.

    Эта проблема проявляется при прикосновении пальцем к микросхеме-стабилизатору напряжения, который возбуждается и перегревается. При этом материнская плата должна ограничить ток и отключить дракон, но дешевые материнки этого не делают и дракон сгорает. На картинке показано, куда не стоит прикасаться.

    В прочем, пока микросхема не сгорела, переделкой заниматься не стоит. Главное – выключать дракона когда на долго отходите от него чтобы не устроить пожара. Дракон может оказаться огнедышащим!

    Как на зло, сразу после написания этой статьи стабилизатор моего дракона сгорел. Я произвел переделку, и все заработало (даже лучше, чем до этого – меньше разрывов связи). Переделка очень простая. Нужно выпаять микросхему стабилизатора и пробросить проводок от USB разъема до танталового конденсатора. Микросхема-стабилизатор имеет термалпад, и поэтому отпаивается довольно сложно.

    Возникает вопрос – зачем Atmel поставил на плату стабилизатор, если его можно без проблем заменить просто проводком? Сам Atmel на этот вопрос отвечает так —

    Большинство компонентов на плате имеют диапазон напряжений питания 4.5-5.5 вольт. Однако, стандарт USB говорит о том, что напряжение на шине USB в худшем случае может опускаться до 4.15 вольт ( если используется USB хаб с питанием от компьютера ). Для того, чтобы поднять напряжение с 4.15 до 5 используется стабилизатор.

    Таким образом, если вы подключаете дракона напрямую к компьютеру или к хабу с внешним питанием, то после переделки дракон будет продолжать работать как ни в чем не бывало.

    Читайте также:  Контрольно измерительные приборы в строительстве
    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    ×
    ×
    Adblock
    detector
  • ПроблемаВозможные причиныСпособ решения
    После запуска 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 для массового программирования плат с микроконтроллерами.