Черный AVR DRAGON в год дракона

AVR
Каково место нашего Дракоши среди других зверей для АВР-друзей? Что он может? Как его безопасно юзать? Какими легендами окружен Дракон? Как практически начать работу?
Такие вопросы стояли передо мной в конце декабря 2011 года, я хочу поделится своими ответами. Материал предназначен для новичков, поэтому профи найдут здесь много известного и/или неправильно понятого. Ну, милости просим с замечаниями и уточнениями!

1. Что это за зверь такой?

AVRDRAGON — один из популярных программаторов-отладчиков для AVR-семейства МК. Он представляет собой аскетический набор из одной платки в красивой коробочке из ватмана.
В какой конюшне находится Дракон? Открываем AVRStudio и смотрим список «отладочных платформ»:
AVR Dragon
AVR ONE!
парочка симуляторов
ICE40, ICE50, ICE200
JTAG ICE
JTAGICE mkII

А в списке из хелпа той же Студии видим такой список аппаратных средств программирования и отладки:
AVR Dragon
AVRISP
AVRISP mkII
QT600
STK500 и целая куча вариантов: 501, 502,… 524
STK600
AVR ONE!
ICE40, ICE50, ICE200
JTAG ICE
JTAGICE mkII
AVR Butterfly
и еще несколько совсем уж не известных мне.

Как видим, компания знатная. Все это представляет эмбеддеру возможность прошить свою программу в микроконтроллер (МК) и отладить ее. Устройство, для которого разрабатывается программа, принято называть таргет-устройством (тарджет, если угодно): это может быть просто таргет-МК, таргет-плата, таргет-модуль и т.д.

2. Почему именно Дракон? 

Компания Atmel позиционирует Дракона как зачинателя нового стандарта для недорогих средств отладки. При том, что он стоит несколько раз меньше, чем популярные платы серии STK500, он поддерживает все режимы программирования и отладки для семейства МК AVR. При первом появлении на рынке отладка была ограничена размером 32 К, но сейчас это ограничение снято.
Как же так? Что за бесплатный сыр? Ну, тут есть разные мнения. Из того, что я прочел, могу предположить, что иметь в линейке и Дракона, и значительно более дорогие модели — это вопрос маркетинга. Есть покупатели, которым вроде как не жалЬко 500 баксов — они и баксуют.
Но есть и технические отличия. Все же такие монстры, как STK500, представляют собой «платы прототипирования  (развития)». На них есть много чего, позволяющего создать устройство на МК, тут же его отладить, а потом перенести разработанное решение на таргет-плату. В нашем Сообществе есть прекрасный пример из этой же серии - Пинборд, снабженный таким обвязом, что можно создавать очень разные устройства на АВР-ках без приобретения комплектующих. Естественно, что налепить на плату такой обвес — стоит денег, а необходимость в таком обвесе — вынуждает платить.
А вот Дракон практически не преследует цель заменить таргет-плату. Да, в нем есть рудимент области макетирования, куда можно вставить таргет-МК. Но это и все. Никаких тебе интерфейсов, индикаторов, кнопок, энкодеров, потенциометров и прочего.
Дракон, как мне видится, это действительно недорогой программатор-отладчик, предназначенный для работы с реальными таргет-платами.
Добавлю: аккуратной работы. Ибо еще одна особенность «железа» Дракона — он очень нежный. Там сэкономили (или специально так его отпозиционировали, чтобы мало не показалось?) на схемотехнике, поставили довольно капризные буферы, недоделанный стабилизатор — и в результате народ жалуется на то, что Дракон то горит синим пламенем, то отказывается отлаживать МК.
На форуме AVRFreaks много копий сломано вокруг вопроса, должно ли означать, что меньшая цена = меньшая надежность. Мне понравилось мнение, что при любой цене изделие должно отвечать заявленному функционалу. Пусть функционал будет проще — но  ведь нигде же у Атмела не сказано, что Дракон — игрушка… Впрочем, я вернусь к вопросу надежности чуть позже.

3. Цена вопроса

Я купил Дракона за 670 гривень ($84). Это просто пошел в магазин и купил. На буржуйских сайтах можно найти примерно за $50. Это подороже, чем многие простые программаторы. Но он стоит своих денег, ИМХО. Ибо и программирует, и отлаживает, причем поддерживает проприетарный атмеловский dW-протокол отладки, без которого отладить, например, серию ATmega48/88/168/328 и все малоногие тиньки просто нечем. То есть, отлаживать можно, как наши деды и прадеды делали, сначала симулятором, потом через внешние проявления программы (светики-кнопочки, СОМ-порт и т.д.). Но это уже не из Студии. Собственно, я так и работал до приобретения Дракона. И ничего :)
Я бы сказал так: для профессиональной работы Дракон вообще представляет дешевое и нормальное решение. Таргет-плата все равно создается, а с ней работать Драконом — чем хуже, по сравнению с навороченными платами развития? Может кто-то подскажет, кто работал с разными отладчиками?
Для многих любителей, не очень стесненных в средствах, Дракон позволяет сразу приступить к созданию устройств на АВР-ках, не заморачиваясь на покупке-перепрошивке-изготовлении-траханине с простенькими программаторами. Я 2 года занимаюсь этой серией МК, мне нравится программатор от PROTTOSS'а, еще несколько разных приблуд я сделал сам, но вот, захотелось законченного решения.

4. С чем его едят? 

Купить Дракона и включать его сразу — не получится.



 Голая платка даже без USB-шнурка. А чтобы решить, что еще необходимо для начала работы, нужно обрисовать для себя картинку применения Дракона в своей мастерской.
Я решил, что мне интересно будет следующее:

1) программирование МК по SPI без таргет-платы (я использую ATmega48 и ATtiny45 в ДИП-овских корпусах и иногда на плате нет места для разъема внутрисхемного программирования ISP)
2) программирование МК по SPI на таргет-платах при наличии там специального разъема для программирования
3) отладка МК тех же серий mega48/88/168/328 и tiny25/45/85, то есть с использованием dW
4) возможно, программирование и отладка по JTAG (в каких-то многоножечных МК)
5) высоковольтное программирование (HVPROG), как способ лечения зафьюженых МК.

Для пунктов 1 и 5 нужно впаять разъем для установки МК на плату — в правой части 2 ряда по 20 отверстий. Между ними есть место для узких 28-ножечных ДИП-корпусов, но я его игнорирую, т.к. ставлю ZIF-панельку, способную принять и узкий, и широкий ДИП-корпус.
Кроме того, необходимо обзавестись средствами для подключения этой панельки к выходу Дракона. Общепринятой практикой является использование многочисленных проводков с 1-2 контактными «мамами», которые потом в нужном порядке соединяют SPI, JTAG, HVPROG штыревые разъемы Дракона с узким двухрядным 40-контактным разъемом, соединенным один в один с панелькой для МК. Есть примеры,

где люди рассказывают, как это можно сделать. Причем товарищ jonathanio в обсуждении продемонстрировал там чудное решение для пункта 5 ( HVPROG) на самодельной платке. Я сделал иначе, но не факт, что лучше.
Пункты 2 и 3 выполняются изготовлением кабеля (проще всего — плоского шлейфа) с разъемами IDC-6 с обеих сторон. А пункт 4 — такого же кабеля с IDC-10. Однако известно, что сигналы интерфейса SPI, выведенные не 6-штырьковый разъем Дракона, полностью дублируются на 10-штырьковом JTAG-разъеме. Это позволит нам обойтись одним шлейфом, о чем я расскажу ниже.

К чему я веду свой сбивчивый рассказ? А вот к чему: все равно своеобразный «обвес» Дракону нужен. Так не подойти ли к этому вопросу с учетом и соображений безопасной эксплуатации Дракона?

5. Безопасность эксплуатации

Что же мне удалось понять о слабостях Дракона? Вообще, все самое ценное сведено в великолепной статье моего земляка. Выделю 2 основных пункта, касающихся превентивных мер:

1) Есть у него стабилизатор 5 В, который недопроектирован и оставлен таким (умышленно, ИМХО). Самое простое — обойти его. Самое изящное решение я нашел вот здесь. Тем, кто не очень хочет новую вещь ломать, можно порекомендовать запихнуть Дракона в корпус. Тогда касание руками этого стабилизатора исключается и риск его испарения меньше.

2) Выходные буфера сделаны на слабых микрухах. Это приводит к тому, что Дракон может сдохнуть тихо-мирно при работе с таргет-платой. А заменить те буфера — очень напросто. Поэтому народ решает задачу привычными методами: своими буферами. Решения, подобные этому, показывают нормальный выход. Однако мы пойдем другим путем.

Мне уже доводилось делиться мыслями по поводу защитных буферов. Не повторяя всей ниточки, сделаю вывод: если рассматривать отладку с dW, то я не вижу ровно никакого смысла в активных буферах на всех линиях при пассивной линии RESET. Поэтому я сделал именно пассивные барьеры на каждой сигнальной линии, включая и линию Vtg. Схема:



Разводка в ТОПОРе:



UPD. В ходе эксплуатации выявил ошибочку. Или нет… КАРОЧИ, в согласующих платках нижние разъемы я сделал в виде обычных розеток на 6 и 10 контактов. Предполагается, что втыкается сия штука в таргет-плату внимательно и с пониманием, где 1-я нога. Но это (внимание) бывает не всегда. Поэтому лучше укоротить платку и впаивать туда «маму» с ключом (то, что называется IDC-5 IDC-10) — а в таргет-плате ставить полноценный BH штыревой разъем.
Я, правда, закладывал раньше на плате обычный 2-рядный штыревой… Но вот теперь проникся, и в новую платку, которую развожу ТОПОРом :) заложил (значительно больший) разъем ВН-6.


И как это все выглядит в жизни.

Дракон в логове:



Весь набор:



Подготовлено для HVPROG (ну, в панельку надыть МК вставить...  Кстати, реанимировал кучку своих МК, лежавших давно на кладбище. Так что высоковольтное рулит):



Подготовлено для программирования по SPI или к работе по dW (на панельке):



Вот так выглядит программирование и отладка на таргет-плате:



Длина шлейфа (автор идеи) пишет, что пробовал на этом принципе до 5 метров, правда, с активным буфером):



6. О работе с Драконом из Студии (а откуда же еще?)

В заключение поделюсь еще одним неочевидным для меня наблюдением. Не имея понятия о современных способах отладки, никак не мог понять, как же между собой дружат-воюют SPI, dW и JTAG. И за что дергать Студию, чтобы пойти дальше, чем просто программирование.

Так вот, дошло до меня, что dW, JTAG, PDI, TPI — наличие любого из этих отладочных интерфейсов прописано каждому МК при рождении :) Если уж у моей любимой серии 48/88/168/328 есть dW, то он есть. И другого не дано. В силу этого мой слабый интерес к (заслуженно) знаменитому JTAG-у совсем угас. ОК, какой-то выбор мы уже сделали.
Теперь знаем, что у нас есть программирование по SPI и отладка по dW. Как потом мне помогли понять — и программирование можно производить по dW. Вот эти переходы тудЫ-сюдЫ у меня не сразу получились. Хочу помочь тем, кто начнет юзать Дракона.

Во-первых, для работы с SPI нужно быть готовым. Там есть немного нюансы между разными типами, но я рассказываю самую популярную ситуацию с фьюзами. С завода МК идут с установленным (прошитым на «0») фьюзом SPIEN и с незапрограммированным («1») фьюзом DWEN, если он имеется. Именно такая комбинация позволяет МК откликаться на SPI, то есть программироваться самым обычным на сегодня образом. Все дешевые программаторы созданы именно для работы по SPI. И дорогие тоже это умеют :)
Для обеспечения работы с dW необходимо запрограммировать (в «0») фьюз DWEN. При этом работа по SPI становится невозможна, но возврат из режима dW Студия как-то умеет делать. Единственное ВАЖНОЕ условие: сброшенные лок-биты и незапрограммированный RSTDISBL фьюз. Если это условие не выполнено, но мы сдуру запрограммируем на «0» DWEN, то и в dW работать не сможем, и в SPI не вернемся. Только высоковольтное программирование и спасет. Я в такую ситуацию с мегой168 влетел.

Рассказываю из Студии про эти переходы. По пунктам, для наукообразия :)

1) Открыв-создав проект, мы можем в меню Tools выбрать пункт Program AVR. Там в Connect выбираем AVR Dragon и USB. Если Дракон подключен и он соединен  с таргет-МК, то увидим вот такое окно:



2) В выпадалке Programming Mode and Target Settings может быть PP/HVSP mode — это не сейчас. Нужно ISP. Частоту лучше выбрать пониже — ведь хз, какой там бит CKDIV8 (если он есть). Кстати, важно знать, что фьюзы управления генератором CKSEL3...0,  установленные неадекватно обвязке, приводят к неработоспособности ISP (об этом очень хорошо рассказал уважаемый _YS_ в своей статье).

3) Теперь можно программировать кристалл, а можно и сразу к делу — готовиться к переходу в отладчик. Для этого открываем закладку Lock Bits и убеждаемся. что ничего не залочено. Еще лучше стереть МК перед прошивкой (там обычно активизирована опция автоматического стирания пред программированием — см. вкладку Program). При стирании МК лок-биты сбрасываются — и слава Богу.

4) Далее открываем закладку Fuses. Именно здесь совершается роковой шаг — программируется фьюз DWEN. Смотрим внимательно, чтобы не зацепить ни RSTDISBL, ни SPIEN. Вообще, проверяем ТЩАТЕЛЬНО все фьюзы, чтобы были именно теми, которые нам нужны в работе. В отладчике фьюзы не шьются! И последним ставим наш роковой DWEN. Студия при этом кудахчет, мол, одумайся, SPI станет невозможен! Но мы суровые пацаны, смело прем вперед. Вот МК и готов к работе по dW.

Данный пункт можно выполнить и «нечаянно». Если до п.1 тупо открыть меню Debug, а в нем выбрать дебаггер и МК (Select Platform and Device) и Start Debugging, то Студия проверит таргет-МК на предмет готовности к работе по dW. И, если наш МК еще девочка, то Студия предложит ее перевести в режим dW. То есть, Студия сама сделает то же, что описано выше — войдет в SPI и прошьет фьюз DWEN. КАГБЭ такой же результат. Но я бы так не делал. Ведь все проверки фьюзов и локов, о которых я твержу в п.п.3 и 4, реально нужны. Лучше их сделать, а потом канонически запрограммировать фьюз DWEN.
Но, если уж вы захотите именно так войти в отладчик, то вход в режим Студия отмечает торжественным объявлением:



Вот здесь важно СНАЧАЛА передернуть питание МК, а потом нажать ОК. Иначе Студия ругнется.

5) Когда мы в отладчике, то все делаем по науке. Это я не рассказываю, не предмет нынешнего разговора. А вот что дальше? Как это безобразие прекратить? Можно выбрать из двух путей.

Первый, канонический. Нужно снова вернуться в режим работы с SPI, там залочить кристалл (если такое необходимо) и пустить в мир.
Чтобы позволить SPI, нужно прямо в отладке выбрать Debug и затем AVR Dragon Options. На первой же закладке Connections есть кнопка Disable debugWIRE. По ней Студия снимает фьюз DWEN, но перед этим предупреждает нас, что для такого действия к МК должны быть подключены линии SPI. Если мы готовы, то жмем ДА и вуаля! наш МК снова может работать по SPI.

Второй путь, подсказанный на форуме. Вообще оставлять МК в состоянии отладки. Если понадобится потом чего-то доотладить — так вот, все готово. Единственный недостаток — программа не залочена. Кому это важно — идите… каноническим путем.

Можно еще поговорить о проектировании платы с учетом последующей отладки с Драконом. Там тоже мнения расходятся. Но самое простое, ИМХО, это подтянуть RESET к питанию через 10-20 кОм и не ставить на него конденсатор вообще. То есть, МК пусть сбрасывается по своему внутреннему сбросу Power ON Reset. А что касается выведения линий SPI (и линии RESET, как составного элемента ISP) на разъем программирования, то тут уж кому как нравится и можется. Можно ведь и в панельке Дракона прошить, поставить в таргет-плату и забыть о прошивке.

That's all, folks!
  • +1
  • 30 января 2012, 00:46
  • drvlas

Комментарии (31)

RSS свернуть / развернуть
Купить себе чтоль эту приблуду. А то столько лет уже аврки шью, а с dW так и не поигрался. Кстати, а как у скорости отладки по dW по сравнению с ICE I?
0
Гы. Я ж ничего другого в руках не держал :) Кроме системы, которую мы в КПИ спроектировали и я даже имею бронзовую медальку с ВДНХ. Но это было в 83-м году...
И что ты имеешь в виду под скоростью? Скорость полета самого МК? Я смотрел на светик, так он дергается с такой же скоростью, как и без dW. Точно не измерял.
А купить — стопудово стоит.
0
Я имею ввиду скорость хождения по брейкпоинтам. На ICE I оно весьма задумчиво работает. По шагам тоже ходит так неспешно.
0
Мож кто другой скажет. Я проверил на простом примере. Для меня важно было в принципе, что мегу168 он начнет петрушить. А то были там вопли у буржуев, что она какая-то упертая. А у меня важный девайс именно на 168-й.
то есть вопрос качества самой отладочной работы с dW — впереди. Но выбор-то какой? Если у данного МК терализован dW, то и все :)
Равно как и вопрос надежности моей пассивной защиты. Надо смотреть в эксплуатации. Хорошо, если ее еще ребята сделают. Тогда будут надежнее выводы (о ее отличной работе :)
0
>> То есть, отлаживать можно, как наши деды и прадеды делали, сначала симулятором, потом через внешние проявления программы (светики-кнопочки, СОМ-порт и т.д.).

Чувствую себя старым и бородатым админом… У меня в столе валяется JTAG ICE mkII — юзал в основном как программатор, а отладчиком пользовался «пару раз на поиграться». В 95% случаев мне за глаза хватает сетодиодов с осциллографом и UART`а.

А вообще статья интересная, спасибо.
0
Пусть меня поправят товарищи, но так оно и выходит: железная отладка не слишком часто и нужна. Я такой вывод относил за счет своей древности, отсутствия раньше удобных аппаратных отлачиков. Но похоже, что я не одинок.
Сформулирую иначе: хорошо, когда отладчик все же есть! Иногда, пусть лишь иногда, но возникают моменты: Эх, заглянуть бы сейчас, когда же эта переменная изменяется, какой гад ее пригинает!
Так что, способы всякие нужны :)
0
Это потому, что в AVR отладка неудобная. А в той же STM32VL Discovery запустить отладку проще чем камень прошить, да и работает оно шустро, почти как отладка прикладного ПО для винды.
0
Хорошо, когда код пишешь так, что все сразу работает как задумано. Я вот, видимо, невнимательный, постоянно сажаю ляпы. Потому отладкой в железе пользуюсь на все 100 (правда на STM32). Светодиоды и уарты — штука хорошая, но они не показывают картину в целом и приходится догадываться о причинах.
Про дракона подумываю, но брать в магазе за 100 с лишним баксов жаба давит, а с Ebay заказать все никак не сподоблюсь…
0
А я друга в Техасе напряг покупкой Драгона… теперь жду)
0
Для прошивки контролеров юзаю самопальный avr910 с прошивкой stk500 и большой прогер autoprog.
Но встала задача шить attiny10 в sot23-6 корпусе, она использует интерфейс tpi.
На сайте атмела указано что дракон умеет шить эту тиню. Купил его, начал крутить и этого интерфейса не нашел.
Ни в студии, ни в железке не нашел поддержки этой тиньки.(прошивку обновил и пятую студию поставил) Кто-нить шил драконом tiny10?? и чем её можно шить кроме как stk600 c платой расширения…
0
AVRisp mkII умеет их шить, в том числе и самодельный на at90usb162.
0
Спасибо за ответ, но почитав дакументацию на mkII не обнаружил tiny10 в списке поддерживаемых устройств, однако в статье про самопальный mkII указывается что он имеет интерфейс TPI.
Неразбериха какая-то.
0
ATJTAGICE3 может. ru_Jack, а где ты тини10 достал? Давно хочу эту «умную пыль» паяльником потыкать.
0
Где-то в москве, достали ещё до того как я устроился. Подходит время для предоставления образца,
а шить то её и нечем. Сейчас склоняемся к stk600 с адаптером, но цены на него кусаются.
Спасибо за подсказку, покапаю в эту сторону.
0
Кстати по схеме..R8:R10 я так понимаю тоже 75Ом?:)
0
Можно даже 76 :)
0
А! так техасский дракон уже приехал? Правильно, посади его на наши резистивные цепи :)
0
А зачем на цепях TDO и #RES стоит по 2 сопротивления, не проще поставить по одному на 150 Ом.
Я надеюсь тема ещё жива. :-)
0
Тема жива, Дракоша жив, автор хорошо себя чувствует.
Поставил резисторы для перестраховки (как и весь этот гемор с защитами). Исходил из того, что на стороне кабеля все уже должно допускать всякие К.З. А линии TDO и #RES могут быть активными и со стороны МК. Вот на стороне МК и поставлено по дополнительному сопротивлению.
0
Ещё вопрос, сигнал VTG это входной сигнал или выходной? То есть это контроль внешнего напряжения питания программируемой платы, или же это выход питания для программируемой платы? Спасибо!
0
Здесь Дракоша не оригинален. Это сигнал ОТ отлаживаемой платы. Почему-то у меня в Студии всегда показывается напряжение 4,2...4,4 В при реальных 5. То ли барьеры гасят, то ли Дракон так измеряет, то ли оба этих фактора играют — не стал разбираться.
0
Питание на отлаживаемую плату через разъём программирования популярно как-то только в самодельных программаторах. В заводских я такой темы не встречал. Вот в жтагайсе3 для этого у меня специально впаян на проводах дцдц от усб к разъёму =)
0
Спасибо! Я в принципе так и думал что это контроль питания таргет платы, но надо было уточнить. Приобрёл Дракона, делаю к нему ваш пассивный буфер. Так я думаю питание на переходник, приведу с разъёма питания на Драконе.
0
День добрый.
AVRDragon только купил, разбираюсь.
Не поправите ссылку на статью, на которую ссылаетесь.
«Вообще, все самое ценное сведено в великолепной статье моего земляка»
Хотелось бы познакомиться с вашей подачи.
Спасибо.
0
Увы! Я не смог найти ту статью…
0
Вот эта статья
0
Спасибо, исправил сцылку!
0
Спасибо за помощь.
0
Дорогие товарищи, я не пойму, а почему бы не купить Atmel ICE? стоит примерно столько же, но шьет и дебажит почти все что можно (кроме каких то армов). Есть версия подешевле — плата без корпуса.
store.atmel.com/PartDetail.aspx?q=p:10500377;c:100112 базовый, 50 баксов.
store.atmel.com/PartDetail.aspx?q=p:10500376;c:100112 без панциря, 32 бакса.
0
  • avatar
  • XOR
  • 09 августа 2014, 20:49
Кому не надо высоковольтное программирование, то почему бы и нет…
0
а для него есть какая-то утилита, чтобы писать и читать память просто без отладки?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.