• - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!
подписаться на RSS-ленту

Прошивка бутлоадера

Бутлоадер, как уже упоминали, прошивается в ардуину через SPI. Значит, если собрались делать ардуину сами, всё-таки придётся собрать простенький программатор. Чтоб прошить бутлоадер из под ArduinoIDE (а так проще всего) необходим программатор под названием DAPA.

Ну чтож попробуем соберём…
Вот такой получился
.
.
.
.
.
.
.
.
.
.
.
.
.

Запускаем IDE, выбираем тип платы Atmega8,втыкаем шнурок в LPT, Подаём на плату питание,
.
.
.
.
.
.
.
.
.
.
.

Командуем IDE шить бутлоадер…

мучительно ждём…ждём ……выскакивает такая штука…

.
.
.
.
.
.

хм, беру другой шнурок (stk200/300) включаю другую софтину(CodeVisionAVR) – читается/шьётся? а этим шнурком только с 4-5 раза… проверяю всё несколько раз – всё верно…
Начинаем эксперименты! Первым делом экранирую шнурок:

.
.
.
.
.
.
.
.
.

Никакого впечатления… уменьшаем резисторы до 150ом как в обычном — народном программаторе… никаких изменений, убираю резисторы — чуть лучше с 2-3раза шьётся, укоротил провод…ещё…ещё…до предела…есть контакт — 10 из 10!
Вожделенная надпись и укороченный, но стабильный шнурок — без резисторов=/.

То что без резисторов — это плохо – LPT жалко. Вот товарищ Илья Данилов
говорит, что если питать ардуину от того-же LPT то всё прилично работает…но этого мне даже пробовать не хочется. Можно конечно запитаться не от худосочного принтерного порта, а откуда-нибудь с фишки питания, например, флоповода (красный провод +5в) может поможет. Но мы пойдём другим путём! Есть у меня старый проверенный во всех условиях и на всех компах шнурок STK200/300:

.
.
.
.
.
.
.
.
.
.

Лучше попробуем его подружить с ArduinoIDE.
Лезем в arduino-0015\hardware\tools\avr\etc\avrdude.conf
вдумчиво читаем, что вначале написано, вникаем, готовимся вписать новый программатор, листаем до “PROGRAMMER DEFINITIONS” ищем куда и что вписать… и с удивлением узнаём что ардуина понимает кучу программаторов и среде них, в секции ”Parallel port programmers”
stk200! Просто всё это добро спрятано от народа! Остаётся только вписать в файл “arduino-0015\hardware\programmers.txt” следующее:

stk200.name=STK200
stk200.protocol=stk200


И запустить ArduinoIDE:
Кроме того, пришлось побороть некоторое разнообразие видов разьёмов внутрисхемного программирования
.
.
.
.
.
.
.
.
.
.
.

И сделать такой переходник
Всё заработало и весьма стабильно – 10 из 10 раз прошилось успешно!

.
.
.
.
.
.
.
.
.

И с программатором “4 резистора” тот же эффект!

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Резюмируя: собираем шнурок “5 проводков- 4резистора” (с разьёмом AVR910)
пишем две строчки в programmers.txt
шьём и радуемся

Схемки обоих вариантов STK200 лежат у нас тут.
Про источники моей паранойи про прошивку не с первого раза можно почитать тут.

далее: Программирование Arduino — Физика процесса.
  • +2
  • 2 августа 2009, 18:42
  • Zoltberg

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

RSS свернуть / развернуть
+
0
Подскажите пожалуйста.

Я собрал программатор:
easyelectronics.ru/avr-shag-pervyj-programmator

По схеме все верно (травил плату).
Микроконтроллер читается:

root@Anatoly:~# /usr/local/bin/avrdude -n -c test -P /dev/ttyS0 -p m8
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0×1e9307
avrdude: safemode: Fuses OK
avrdude done. Thank you.

Я попытался прошить в него bootloader от arduino.
Конечно через arduino:
www.arduino.cc/en/Main/Software

После прошивки, МК перестал у меня отвечать… :(
Коллега, подскажите пожалуйста как быть?
МК умер? Или его так нельзя убить?

Теперь он выдает это:

root@Anatoly:~# /usr/local/bin/avrdude -n -c test -P /dev/ttyS0 -p m8
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.

Спасибо,
Анатолий!
avatar

AnatolyUnix

  • 16 февраля 2010, 14:04
+
0
Питание есть?=)
Убить-сложно, а вот фьюзы мусором набить. это сколько угодно=\
Вы использовали «программатор громова»?
Шили через ArduinoIDE?
Опишите подробней — что и как делали, будет проще разобратся.

Ну а так, первое что в голову приходит — пальцем затактировать=)- утыкаем в 9-ю ногу что-нибудь металлическое и неизолированныое (иголку, тонкий пинцет) и (неотпуская=) пробуем шить.
Наводки с тела, 50Гц восновном, затактируют контролер (а AVR-у, к счастью, всёравно на сколь низкой частоте работать).
Сначала читаем — если читается, значит и шится будет — шьём фьюзы правильными значениямим.
Часто помогает=)
avatar

Zoltberg

  • 17 февраля 2010, 20:48
+
0
Получилось, посадил на xtal1, xtal2 кварц через 2-а кондера 22пФ на землю.
Стал отвечать. Прошить отдельным программатором (да громова) не удалось. Почему-то подвисает и потом просто молчит arduino. Ну да ладно. Собрал через 3-и резистора на LPT. Прошился удачно. Сразу залить тестовую прошивку не удалось

avrdude: stk500_getsync(): not in sync: resp=0x34
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Оказался маленький протрав у дороги от конденцатора С9 и землей.
Пропаял одной жилкой из провода.
(у меня таких протравов еще 4-е штуки было, они очень маленькие даже на просвет)

И получилось прошить тестовый скетч. Еще я стабилитрон взял L7805CP, а у него порог от 7в до 20в на входе.
На выходе 5в. Заметил это только пройдя по схеме тестером и западозрив неладное. =)

Теперь все работает. Могу дать фотки. Можно к статье приложить, как еще одна «истоия успеха». =)
avatar

AnatolyUnix

  • 18 февраля 2010, 00:06
+
+1
Поздравляю=)
Да, без кварца то работать не будет — (если говорить про ардуину) там фьюзы именно под кварц выставленны.
Фотки — на ваше усмотрение=) Можёте запостить в своём блоге, например=)/
С небольшим отчётом.
И планами на будущее;)
avatar

Zoltberg

  • 18 февраля 2010, 00:26
+
0
«пальцем затактировать» — это сильно! ;-)))
avatar

AnatolyUnix

  • 18 февраля 2010, 16:25
+
0
Здравствуйте, помогите с проблемой. Спаял Arduino, спаял программатор Громова. Настроил Avrdude для работы с программатором — контроллер читался. Добавил этот программатор в ArduinoIDE — запустил запись загрузчика — сразу выскочило сообщение что до контроллера не достучаться типа попробуйте -F… и все, сразу после этого Avrdude перестал видеть контроллер — неправильная сигнатура — нули вместо числа :(. ОС — Linux. Подскажите как восстановить. Пробовал затактировать 9-ю ногу внешним генератором на 250 кHz и тишина — не видит. Можно ли восстановить не прибегая к высоковольтному программатору?
avatar

jskonst

  • 20 июля 2010, 17:23
+
0
У мнея было несколько раз — сигнатура не читается, а фьюзы и флеш с эпромом — шьются-читются.(а потом и сигнатура читаться начиниет=)
Вопщем проверьте всё по два раза — питание, сброс (Rest должен быть подтянут 10к резистором к питанию)соединения с разьёмом SPI и сам прогорамматор.
Попробуйте другой программой прочитать содержимое фьюзов(при внешней тактировке)и проверьте их состояния. Попробуйте пропускать проверку сигнатуры, иногда помогает…
А высоковольтный программатор не заменить особо нечем, только если житагом=)
avatar

Zoltberg

  • 20 июля 2010, 20:31
+
0
а, не, отбой=( это меня по жаре переклинило — житаг то только с 16меги есть. У таких малоножных как 8-168-328 нету=(
так что если с пальцем или генератором не выходит — в стол — ждать высоковольтного программатора.
avatar

Zoltberg

  • 24 июля 2010, 13:10
+
0
Нашел высоковольтный программтор — все, дохлые процы :(. Больше я этот программатор не торогаю :)
avatar

jskonst

  • 27 июля 2010, 23:00
+
0
Возник один вопрос. Если шить загрузчик через Arduino IDE фьюзы надо настраивать или они автоматически настраиваются.
avatar

dima

  • 16 августа 2010, 09:52
+
0
автоматически
avatar

Zoltberg

  • 16 августа 2010, 22:34
+
0
день добрый! есть вопрос. собрал ардуино на атмеге 8. прошил бутлоадер программатором от protoss'a. а вот какие фьюзы выставить не знаю. при подаче питания светодиод моргает 8 раз с частотой примерно 1 Гц. проблема со связью с ПК. при вынутой из панельки атмеге замыкаю 2-ю и 3-ю ноги и делаю тест com-порта. все проходит. а вот скетч залить не могу. подскажите, плиз, в чем может быть причина?
avatar

nek

  • 25 августа 2010, 18:04
+
+1
угу, фьюзы надо установить. Тут про них написанно.
avatar

Zoltberg

  • 25 августа 2010, 23:01
+
+1
Zoltberg, СПАСИБО!
с АТмегой_8 получилось, со 168-й пока никак, ну да ладно, разберусь.
avatar

nek

  • 26 августа 2010, 14:35
+
0
Подскажите пожалуйста, я залил hex для atmega8, который шел с arduino0019, через avrdude, правильно ли я понял из коммента выше, что для прошивки скетча через последовательный порт необходимо правильно выставить фьюз-биты? А то как-то страшновато, у меня уже несколько залоченных процов :(.
avatar

jskonst

  • 7 сентября 2010, 23:24
+
0
шейте через Ардуино ИДЕ, как в статье, там сразу и фьюзы встанут и загрузчик, и запортить что-то сложно. Вы для аврдьюда какой программатор использовали?
avatar

Zoltberg

  • 7 сентября 2010, 23:28
+
0
Я использовал Dapa-программатор. Ладно, сейчас рискну.
avatar

jskonst

  • 7 сентября 2010, 23:40
+
0
Все — avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATMEGA8 is 1E 93 07
avrdude: AVR device not responding
avrdude: verification error, first mismatch at byte 0x1c00
0x12 != 0xff
avrdude: verification error; content mismatch
Это через ArduinoIDE. Еще один контроллер накрылся. Через AVRDUDE не могу прочитать микроконтроллер.
avatar

jskonst

  • 7 сентября 2010, 23:44
+
0
=\
чем шьёте то?(каким программатором?)
Внешним сигналом или пальцем затактировать пробовали?(см каменты выше)
avatar

Zoltberg

  • 8 сентября 2010, 00:00
+
0
Использовал Dapa, через avrdude зашивался нормально, а через arduino-ide такая фигна, и все… контроллер не отвечает. Подозреваю кварц, хотя если зашивал просто — то светодиод мигал как положено 8 раз. Завтра попробую кварц заменить, посмотрю что получится.
avatar

jskonst

  • 8 сентября 2010, 00:09
+
0
Нашел запасной кварц на 16 MHz — не помогло :(. Завтра попробую купить новый контроллер, но шить через IDE больше не буду. Если что у меня ARDUINO SEVERINO SERIAL SINGLE SIDED VERSION 3. Собирался самостоятельно, может в этом проблема по которой IDE его не может прошить? Еще попробую заменить конденсаторы на 22 пФ. Если есть идеи пишите, буду благодарен любым советам.
avatar

jskonst

  • 8 сентября 2010, 00:26
+
+1
Все — заработало, 1 проц удалось оживить — другие пока не пробовал — заменил конденсаторы у кварца. Если через IDE не шьъется и проц потом не отвечает — проверяйте кварц!!!… Я счастлив, всем Спасибо.
avatar

jskonst

  • 18 октября 2010, 22:34
+
0
Господа, кто-нибудь сумел поправить бутлодер для Атмеги8а? На Ардуино-форуме есть вопрос без ответа. АрдуиноИДЕ пишет
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA8 is 1E 93 07

Шью MRC28 c robozone.su параллельным программатором.
avatar

Shihad

  • 31 октября 2010, 10:00
+
+1
Править бутлоадер не надо.
ЕМНИП Atmega8 и Atmega8a программно полностью совместимы, такчто надо просто унять аврдьюд. Он, как видите ругается на сигнатуру(подпись), которая естественно разная у 8 и 8а. Отсюда вывод — надо обьяснить что мы шьём другой контроллер или вообще запретить проверку подписи.
Тут у нас про аврдьюд читануть можно.
Ну или шить тем что понимает 8а, а скармливать тот же \hardware\bootloaders\atmega8\ATmegaBOOT.hex
Не забываем прошивать правильным образом фюз и локбиты.
avatar

Zoltberg

  • 31 октября 2010, 16:53
+
0
У меня опять вопрос по бутлодеру. Как правильно прошить бутлодер в Атмегу 168ую, если плата — с последовательным, а не с УСБ? Надо править бутлодер?
Что надо будет выбрать в списке плат?
avatar

Shihad

  • 23 марта 2011, 22:45
+
0
Править не надо.
Выбрать Дуемиланове168.

ИДЕ-шке и МК(а значит и бутлоадеру) всёравно как плата подключена в комп.
ИДЕ всегда видит плату как последовательный порт.
А бутлоадер берёт данные с последовательного порта МК.

Заводские платы с USB интерфёйсом имеют преобразователь USB->Com и при втыкании в комп в системе просто появляестя новый СОМ-порт — в ИДЕ выбираете его и льёте ваши скетчи/бутлоадеры туда.
А самопал втыкается непосредственно в СОМ-порт, также выбирается в ИДЕ и т.д.
avatar

Zoltberg

  • 24 марта 2011, 00:06
+
0
А с автосбросом что будет? Он же не разведен. Сброс перед прошивкой осуществлять рэсетом?

Я прошил Атмегу 168 прошивкой от Дуемило. Вставляю в плату — светодиод на 13 ноге горит постоянно. ИДЕ плату не ловит.

Где я дурак?
avatar

Shihad

  • 24 марта 2011, 05:23
+
0
Автосброс идёт по линии DTR (4-й пин разъёма COM-порта) через конденсатор, если установлен джампер «авторезет энейбл». Но всё это в случае стандартных вариантов плат=)
А если там у вас что-то совсем своё — и с DTR-а ничего не идёт — то в ручника — жать в ИДЕ загрузку и тыкать кнопку резет, стараясь успеть/попасть (у стандартного бутлоадера на 8атмегу — ожидание загрузки после резета/включения >5сек — легко успеете, а у более свежих, напр. на 168ю — доли секунд — можно промахнутся=)

В случае с вставленной атмегой несовсем-понятно-в-какую-плату — масса вопросов — какой кварц? какое питание? резет к питанию притянут? а как uart подводится и т.п., вобщем — схему в студию!
А, и собственно, как прошивали?
avatar

Zoltberg

  • 24 марта 2011, 22:08
+
0
robozone.su/2008/02/29/universalnyjj-robo-kontroller-mrc28.html

Вот этот. С восьмеркой я в него прошивку действительно заливал по ручному сбросу.

А со 168 (доли секунды, надо же) не попадаю.

Бутлодер заливаю СТК500 через АВРСтудио. Пробовал всякие из папки с бутлодерами.

Может, доковырять загрузчик, чтобы ожидание было пять секунд?
avatar

Shihad

  • 25 марта 2011, 07:15
+
0
А фьюзы прошили? ;) МК должен быть настроен на тактирование от 16МГц кварца…
А бут, да, можно подпилить. Но обычно там со 2-3 раза попадаешь=)да и проводок с кондёром от DTR к резету, помоему, проще кинуть.
Больше смущает постоянно горящий СИД на 13.
Программатор отключаете, надеюсь=) а то он может держать линию…
На этой плате другие МК работали?
avatar

Zoltberg

  • 25 марта 2011, 11:13
+
0
Естественно, фьюзы прошиты.
Программатор отключаю. Я в панельке микроконтроллер прошиваю.
Атмега 8ая на тойже плате работает безукоризненно.
Черт. Надо как-то подпаиваться к 232 микросхеме. Еще, поди, кондер надо добавить.
avatar

Shihad

  • 25 марта 2011, 11:57
+
0
да не, там напрямую можно.
Что-то не так — на 13 ноге СИД гореть не должен…
Бутлоадер перепрошить советую. Из ИДЕ-шки, добавив туда программатор как в статье.
avatar

Zoltberg

  • 25 марта 2011, 12:11
+
0
Всем привет! извиняюсь за тупой вопрос. для программатора громова какие две строчки вписать нужно?
avatar

romsn

  • 29 сентября 2011, 15:20
+
0
В ...\arduino-ххх\hardware\tools\avr\etc\avrdude.conf
дописать
programmer
id = “gromov”;
desc = “serial port banging, reset=dtr sck=rts mosi=txd miso=cts”;
type = serbb;
reset = 4;
sck = 7;
mosi = 3;
miso = 8;
;
А в ...\arduino-ххх\hardware\programmers.txt
дописать
gromov.name=GromovProg
gromov.protocol=gromov
должно работать=)
правда проблем от этого громова больше чем пользы по моим наблюдениям за чужими мучениями;)
avatar

Zoltberg

  • 5 октября 2011, 14:18
+
0
делал первым способом только резисторы не ставил. все залилось отлично с первой попытки… большое спасибо за статью! очень помогло!
avatar

student78rus

  • 20 апреля 2011, 20:15
+
0
Здраствуйте! Подскажите, нужно настраивать LPT порт, а то у меня ругается:
avrdude: can't open device «giveio»

avrdude: failed to open parallel port «lpt1»
avatar

kameniymost

  • 2 октября 2011, 19:40
+
0
В Windows 2000 и Windows XP запрещена прямая работа с параллельным (LPT) портом, поэтому, необходимо установить драйвер giveio.sys
avatar

admin

  • 2 октября 2011, 20:37
+
0
Спасибо!!!
avatar

kameniymost

  • 3 октября 2011, 16:26
+
0
Кто может подсказать, на каком этапе я ошибся:
— прошил мегу8 прогр.громова юнипрофом загрузчиком из ардуино
— выставил фьюзы как в ардуино — 0xDf 0xCa в юнипрофе
— контроллер не определяется ардуино-программой, пишет
Binary sketch size: 826 bytes (of a 7168 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

кварц сначала стоял на 12 потом поставил 16мгц все с емкостями…
что я делаю не так?
avatar

serficraft

  • 28 октября 2011, 01:34

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.