Sinaprog для ардуино

MrПоделкинЦ Blog

Мой блог официально переехал http://www.techn0man1ac.info

вторник, 9 декабря 2014 г.

Прошивка hex файлов при помощи Arduino и SinaProg

Данное видео дублирует представленную ниже информацию представленную в текстовом формате:

Привет. Меня уже давно спрашивают можно ли прошивать hex файлы при помощи Arduino, изменять фьюзы, считывать прошивку и всякое такое.

Ответ — да можно, я бы сказал даже нужно. Arduino это отличный старт для новичка но нужно расти дальше, мир микроконтроллеров прекрасен и дарит огромные возможности, но увы arduino это довольно таки узкопрофильное направление.

Одного прекрасного дня я наткнулся на отличный проект на ATtiny13, но увы автор выгрузил в сеть только hex файл и схему и конечно я так и не смог его поюзать. Меня этот вопрос мучал всё больше и больше и тут я случайно наткнулся на одно видео в сети, где автор при помощи ардуино прошил другой микроконтроллер имея только hex файл, ну и схему разумеется, именно он мне подсказал что мол юзаю SinaProg но с Arduino’вскими файлами.

Загуглив на тему SinaProg я скачал SinaProg 2.1.1.RUS но он работать отказывался с ардуино, потому я закинул парочку тройку файлов из Arduino IDE в папку SinaProg 2.1.1\data\ и всё заработало.

Итак пройдёмся коротко по софту, вот скрин:

А той части где кнопка «>» мы можем видеть всякие сообщения, типа OK, прошилось, или ERROR, сама же кнопка «>»открывает лог.

В блоке Flash есть кнопки:

Program — программирование hex-файла( возможно когда выбран Hex-file);

Read — считать hex-файл.

С блоком EEPROM всё аналогично.

Далее блок Device, тут можно выбрать нужный микроконтроллер, вот весь список поддерживаемых( не обращайте внимания цифры и буквы после названий микроконтроллеров, список выдрал из файла Device.txt который лежит в папке SinaProg 2.1.1\data\):

  • AT90CAN128
  • AT90CAN32
  • AT90CAN64
  • AT90PWM2
  • AT90PWM2B
  • AT90PWM3
  • AT90PWM3B
  • AT90USB1286
  • AT90USB1287
  • AT90USB162
  • AT90USB646
  • AT90USB647
  • AT90USB82
  • AT90s1200
  • AT90s2313
  • AT90s2323
  • AT90s2333
  • AT90s2343
  • AT90s4414
  • AT90s4433
  • AT90s4434
  • AT90s8515
  • AT90s8535
  • ATmega103
  • ATmega128
  • ATmega1280
  • ATmega1281
  • ATmega1284P
  • ATmega128RFA1
  • ATmega16
  • ATmega161
  • ATmega162
  • ATmega163
  • ATmega164P
  • ATmega168
  • ATmega169
  • ATmega2560
  • ATmega2561
  • ATmega32
  • ATmega324P
  • ATmega325
  • ATmega3250
  • ATmega328P
  • ATmega329
  • ATmega3290
  • ATmega3290P
  • ATmega329P
  • ATmega48
  • ATmega64
  • ATmega640
  • ATmega644
  • ATmega644P
  • ATmega645
  • ATmega6450
  • ATmega649
  • ATmega6490
  • ATmega8
  • ATmega8515
  • ATmega8535
  • ATmega88
  • ATtiny11
  • ATtiny12
  • ATtiny13
  • ATtiny15
  • ATtiny22 2343
  • ATtiny2313
  • ATtiny24
  • ATtiny25
  • ATtiny26
  • ATtiny261
  • ATtiny44
  • ATtiny45
  • ATtiny461
  • ATtiny84
  • ATtiny85
  • ATtiny861
  • ATtiny88
  • ATxmega64A1
  • ATxmega128A1
  • ATxmega128A1D
  • ATxmega192A1
  • ATxmega256A1
  • ATxmega64A3
  • ATxmega128A3
  • ATxmega192A3
  • ATxmega256A3
  • ATxmega256A3B
  • ATxmega16A4
  • ATxmega32A4
  • ATxmega64A4
  • ATxmega128A4

Есть кнопка Program — записать предустановки, смотри на абзац выше.

А так же Advanced. лихая кнопка, после её нажатия можно увидеть вот такое окно:

Информационная часть, всё как выше.

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

Пару слов о фьюзах, фьюзы это такие как бы тонкие подстройки микроконтроллера, то частоту поднять то убавить, то вкл/выкл nактивирование от внутренней RC цепочки то ещё что-то, вообщем туда лезть только в крайнем случае иначе можно залочить(нашаманить так что перестанет работать) микроконтроллер, и без Atmega fusebit doctor уже никак, решай сам.

На ещё в прибавок калькулятор фьюзов http://homes-smart.ru/fusecalc/ но если залочишь микроконтроллер я не виноват, если что-то не ясно пиши на русскоязычный форум ардуино, ссылка будет в конце статьи.

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

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

Итак, последний блок — Programmer, тут выбирается тип программатора, если юзаешь Arduino в качестве программатора то ставь всё как у меня на скрине, только не COM19, эт у меня такой, у тебя будет другой, в любом случае точно не COM1, первый это системный, на ноуте может не быть а на компах как правило есть, особенно тех что постарше. Можешь юзать и другой программатор, к примеру USBASP, только выбери его в списке и больше ничего не изменяй. Полный список поддерживаемых программаторов:

  • Gromov
  • USBtiny
  • ALF
  • Arduino
  • AT ISP
  • AVR109
  • AVR910
  • AVR911
  • AVRISP
  • AVRISP 2
  • AVRISP mkII
  • AVRISP v2
  • Bascom
  • Blaster
  • BSD
  • Butterfly
  • C2N232I
  • DAPA
  • DASA
  • DASA 3
  • Dragon_DW
  • Dragon_HVSP
  • Dragon_ISP
  • Dragon_JTAG
  • Dragon_PP
  • DT006
  • ERE-ISP-AVR
  • Frank-STK200
  • Futurlec
  • JTAG 1
  • JTAG 1Slow
  • JTAG 2Slow
  • JTAG 2
  • JTAG 2Fast
  • JTAG 2ISP
  • JTAG 2dW
  • JTAG mkI
  • JTAG mkII
  • MIB510
  • pAVR
  • Picoweb
  • Pony-STK200
  • ponyser
  • SI Prog
  • SP12
  • STK200
  • STK500
  • STK500 HVSP
  • STK500 PP
  • STK500 v1
  • STK500 v2
  • STK600
  • STK600 HVSP
  • STK600 PP
  • USBasp
  • Xil

Есть твой? USBasp радует глаз.

Чтобы можно было шить/читать/изменять фьюзы/убить микроконтроллер при помощи Arduino предварительно нужно зашить в ардуинку ArduinoISP подключив всё как я говорил на видео, писал тут и тут.

Тааак что там ещё, у меня было такое что тиня13-я перестала шиться и реагировать на попытки её программирования после того как я попробовал запустить её на частоте 128 kHz, откопал где-то вот такой, слегка модифицированный код http://pastebin.com/Aw5BD0zy ArduinoISP который заставляет прошивку/изменение фьюзов происходить медленнее в несколько раз и может ещё какая-то магия, не разбирался, честно.

Ладно, не буду больше томить, вот ссылка на прогу:

Ссылка на ветку на русскоязычном форуме ардуино:

Калькулятор фьюзов, почётное упоминание:

Маленько изменён скетч ArduinoISP иногда может помочь при ЧП, а иногда нет:

Как зашить загрузчик Arduino в ATmega8/ATmega8A:

Как прошивать и кодить ATtiny13/ATtiny13A при помощи Arduino:

Ну что, вроде как всё, как говорил один известный персонаж из шедеврального советского мультика «Ты. это, заходи, если что» (с) Жил был пёс, заходи ко мне в группу или паблик, как кому нравиться, кароче вот страничка ВКонтакте:

Источник

Sinaprog

Вот уже много лет я пользуюсь мощнейшей программой для прошивки — avrdude. Программа эта поддерживает почти все виды программаторов, а те что не поддерживает изначально легко в нее добавляются.
Но есть у ней особенность которая сильно отпугивает многих — она консольная. И все шаманства с ней заключаются в формировании командной строки.
С одной стороны это хорошо — консольная утилита позволяет очень сильно ускорить и автоматизировать процесс прошивки. Один раз написал батничек и для перешивки только вызывать его и все.
Остается проблема прошивки разных устройств, ведь под каждую придется делать свой батник. И ладно бы ключи прописать, да файл с прошивкой указать. Самая засада начинается с fuse битами (впрочем, как и везде в мире AVR ;) ) Тут их надо вначале внимательно проштудировать в даташите, выписать в виде байтов, вписать правильно в командную строку и молиться на то, чтобы нигде не ошибиться.
Да, для avrdude написано много оболочек, но все что мне встречались раньше решали лишь малозначительную проблему выбора нужного ключа файла и/или программатора, а фузы также было надо указывать числом.
Проблема решилась с появлением новой версии оболочки SinaProg от команды программистов-террористов из Аль-каиды иранских AVR программеров.

Содержание

Фреймворк необходимый для работы

Запускаем… Если не запустилась, то возможно потребуется установить фреймворк от NI — LabView RunTime Library

Интерфейс

Морда выглядит простенько и со вкусом. Ничего лишнего. Выбираем в первой строке хекс файла и зашиваем его в нужную память — flash или eeprom.
Следом идет прогресс бар и кнопка открытия консольного лога — ошибки смотреть.
Ниже выбираем тип микроконтроллера, также есть кнопочка поиска — полезно для проверки работы программатора.

Преднастройки FUSE, работа с FUSE

Отдельно стоит сказать про секцию Fuses.
Осторожней с выпадающим списком. С виду там все просто, но это на самом деле предустановки, описываются они файле Fuse.txt вот его дефолтное содержание:

Видишь, формат очень прост. Строка контроллера (обязательно с точкой!) и в квадратных скобаках возможные варианты (отделенные табуляцией) с байтами тех самых фузов. Обратите внимание, что тут меняется СРАЗУ ОБА БАЙТА Fuse битов. Т.е. касаются далеко не только тактовой частоты. А еще всего остального что конфигурируется в FUSE. Так что я бы сразу переназвал их иначе. Скажем как
All Default,but 1MHZ
All Default,but 2MHZ
All Default,but 4MHZ
Чтобы было понятней. Но это как бы быстрые шаблоны и не претендуют на глобальность. Лучше сразу нажать Advanced и узреть … тот самый цифровой ввод.

Но не стоит напрягаться, достаточно нажать кнопочку «С» (видимо авторы имели ввиду Calculator) и увидеть удобнейшие выпадающие списки с человеческим описанием. Прям как в STK500.

Конфигурирование SinaProg

Впрочем, все же главным достоинством этой оболочки является ее легкая заточка под любой программатор поддерживаемый через AVRDUDE.
Покажу на примере программатора встроенного в Pinboard (На базе FTDI, но распиновка выводов немного отличная от FTBB описанного ранее).
Закрываем программу, чтобы не мешалась и не держала файлы.
Прописывание конфигурации FTBB в файле avrdude.conf я описывать не буду, подробней я об этом уже писал ранее.
Считаем, что это уже сделано и в файле конфигов avrdude у нас есть нужная секция. Я назвал ее pinb, впрочем, название может быть и произвольным.

Прописывание программатора

Первым делом открываем файл Programmer.txt и видим там список:

и еще полторы страницы все известных и не очень типов программаторов. Вписываем там первой строкой наш pinb

Все, теперь он в списке, но ему еще надо сопоставить порт.

Прописывание нужных портов

Поэтому открывай файл Port.txt
Вот его дефолтное содержимое:

Как видишь, формат тут сходный. Название программатора (с точкой в конце!), а в скобках варианты. Причем первым делом пишем произвольное название порта, а потом то в каком виде он должен подставиться в командную строку avrdude. Между ними табуляция.
Порт FTDI bitbang в консоли называется ft# и номер от нуля до бесконечности. В зависимости от того сколько чипов FTDI навешано на твой компьютер в данный момент. Причем учитываются именно подключенные, активные, чипы. И не стоит путать этот номер с номером виртуального COM порта который этот чип организует. Так что если у тебя в системе всего один адаптер USB-COM на базе FTDI, то какой бы там COM порт ни был, для bitbang программатора он зовется ft0 и никак иначе. На всякий случай добавляем несколько вариантов.
Добавляем туда нашу секцию

Источник

RoboCraft

Заметка-отчет о проверке работоспособности «ArduinoISP» не имеющего на борту чипа FT232RL от FTDI. Я не открою ничего нового, лишь поделюсь своим личным опытом использования.

В качестве предисловия хочется сказать что с AVR8 знаком уже давно еще с техникума (в 2004 году AT90S8535 помните? :)), но при этом работал с ними не много, учеба в институте не позволяла уделять достаточное кол-во времени. Ну и естественно много того что знал благополучно забыл. Жизнь внесла свои коррективы и увела в web-разработку, разобравшись с принципами работы которого захотелось большего. И пару лет назад, пришла 3я волна увлечения МК и я собрал себе новую макетку на ATmega32 … и ведь западло, если раньше легко можно было шиться через LPT «пятью проводками», то теперь дома уже не нашлось такого интерфейса 🙁 зато завелся Arduino Uno, точнее кЫтайская поделка.

После покупки Uno первым делом стал прикидывать как же заставить его прошивать хотя-бы Arduino-совместивые камешки (ATmega8, ATmega168, ATmega328 …) и прочие АВРки ну не совать же в финальное устройство целый Arduino, расточительно однако! Да и не всегда же барахтаться в «Wiring» хочется вспомнить Си, а теперь еще и понять C++ на котором пишут и написаны библиотеки для Arduino.

Конечно я планирую взять себе адаптер на FT232RL и шиться по рецепту DI Halt’a, но позже. И тут счастье то какое! нахожу этот замечательный сайт (низкий поклон администрации и авторам за ваш Труд) и статью Делаем ISP-программатор из Arduino. И ураааа! Но позже фак … на Uno ведь вместо FT232RL стоит мега8U!

Немного позже, скачав arduino-1.0.1 нахожу скетч ArduinoISP, и собираю:

Комментировать схему нет смысла, т.к. она повторяет все что написано в комментарии к скетчу ArduinoISP. Но все же следует упамянуть что желтый светодиод это т.н. «Heartbeat» — который пульсируя, говорит что программатор готов к работе. А белый — это на самом деле два светодиода (красный и зеленый) в одном корпусе с общим катодом, которые сигнализируют «Error» и «Programming» об ошибке и процессе загрузки прошивки в целевой контроллер. Сверху справа, вы можете видеть мою самодельную макетку с ATmega32, ST232BN (аналог MAX232) и обвязкой. Несмотря на то, что на целевой макетке есть свой стабилизатор питания я запитал ее от Uno.

А вот теперь давайте попробуем настроить софт-программатора и собственно прошить/прочесть. Естественно, для прошивки будем использовать avrdude, но мне впадлу использовать консоль 🙂 «…хочется открывать окна мищькой…» и я по совету DI Halt’a решил использовать SinaProg. Итак скачал запустил в комбо Device выбрал целевой камень, в Programmer — AVRISP (потому что данный программатор работает по протоколу AVRISP MkI), выбираю пустой файл для сохранения прошивки, жму Flash -> Read и первые грабли:

Т.к. у меня виндоуз (Win 7 x64) стоит уже довольно долго, и при установке дров, Arduino стал аж на COM23, но в SinaProg в комбо боксе с выбором порта программатора максимум СOM9:

Лечится очень легко, добавлением соответствующего порта в файл Port.txt в папке с SinaProg:

В принципе структура этого файла интуитивно понятна, но хочется обратить внимание что COM23 заглавными это название порта, а сам «адрес» указывается через табуляцию строчными.

Ок! Пробуем снова ииии вторые грабли:

Получаю ошибку Can’t open port и ответ

Так, как это! Порт доступен, другие приложения открывают, а ты не можешь! И вспоминаю об сообщениях о разных версиях avrdude и о странностях в их работе. Ну ладно, копирую avrdude.exe из arduino-1.0.1\hardware\tools\avr\bin\ в каталог с SinaProg, заменяя тот что был внутри, пробую прочесть и снова ошибка, но уже другая:

Что-то в структуре в конфига avrdude. Далее я пытался править, подменять, очищать avrdude.conf и ничего не получалось! Или порт не может быть открыт или не нравятся символы в конфиге…

НО проблему я все же решил, скопировав файлы avrdude.exe и avrdude.conf из папки bin\ свежей версии WinAvr (WinAVR-20100110). Подобрав рабочую связку «дудки» и его конфига, пробую читать очередной раз получаю грабли три:

И ошибку на светодиоде «Error»

На видео запечатлен процесс прошивки (точнее чтения) завершившийся не удачно.
Также на целевой макетной плате вы можете видеть ряд зеленых светящихся и красных не светящихся светодиодов. Эти диоды стоят на старшей тетраде (биты 4-7) порта A и при выводе «0» на соответствующем выводе загорается зеленый, а при «1» — красный. При высоком импедансе — светятся оба но тускло. И еще немного левее, желтый светодиод это «Сеть».

Возвращаясь к предмету заметки, пробуем понять что же все таки значит not in sync: в ошибке дудки. А значит это то, что мы по сути работаем через USART — асинхронный UART и у нас на лицо рассинхронизация. Тьфу ты! Подумал я и вспомнил про баудрейт (скорость передачи через порт) и выставил 19200 в комбобоксе скорости. И в итоге настроенная SinaProg стала выглядеть так:

На группу Fuses не обращайте внимание, это значение там было сразу же после первого запуска SinaProg и пока вы не нажмете Programm фьюзы не прошьются, так что просто игнорируем.

Жму Flash Read и смотрю на железо:

Урааа! Заработало! Теперь было бы не плохо прошить. Для этого в Atmel Studio 6 (бывшая AVRStudio) набросал такую программку

Мигаем всем портом. А если точнее, то выставляем пины порта A в «1» ждем 1с сбрасываем пины в «0» ждем 5с и повторяем снова.

Компилирую и загружаю полученный hex в целевой контроллер:

Вот, собственно, теперь я получи вполне себе удобный USB программатор для AVR’ок. Нужно будет купить комплект ATmega8/168/328 прошить фьюзы, бутлоадер и спрятать в пенале с прочей мелочью, на всякий случай как резервную копию 🙂

У меня всё, спасибо за внимание. Если что не точно/не понятно укажите в комментариях, исправлю/дополню.
С ув.

Источник

Sinaprog для arduino

RoboCraft

Заметка-отчет о проверке работоспособности «ArduinoISP» не имеющего на борту чипа FT232RL от FTDI. Я не открою ничего нового, лишь поделюсь своим личным опытом использования.

В качестве предисловия хочется сказать что с AVR8 знаком уже давно еще с техникума (в 2004 году AT90S8535 помните? :)), но при этом работал с ними не много, учеба в институте не позволяла уделять достаточное кол-во времени. Ну и естественно много того что знал благополучно забыл. Жизнь внесла свои коррективы и увела в web-разработку, разобравшись с принципами работы которого захотелось большего. И пару лет назад, пришла 3я волна увлечения МК и я собрал себе новую макетку на ATmega32 … и ведь западло, если раньше легко можно было шиться через LPT «пятью проводками», то теперь дома уже не нашлось такого интерфейса 🙁 зато завелся Arduino Uno, точнее кЫтайская поделка.

После покупки Uno первым делом стал прикидывать как же заставить его прошивать хотя-бы Arduino-совместивые камешки (ATmega8, ATmega168, ATmega328 …) и прочие АВРки ну не совать же в финальное устройство целый Arduino, расточительно однако! Да и не всегда же барахтаться в «Wiring» хочется вспомнить Си, а теперь еще и понять C++ на котором пишут и написаны библиотеки для Arduino.

Конечно я планирую взять себе адаптер на FT232RL и шиться по рецепту DI Halt’a, но позже. И тут счастье то какое! нахожу этот замечательный сайт (низкий поклон администрации и авторам за ваш Труд) и статью Делаем ISP-программатор из Arduino. И ураааа! Но позже фак … на Uno ведь вместо FT232RL стоит мега8U!

Немного позже, скачав arduino-1.0.1 нахожу скетч ArduinoISP, и собираю:

Комментировать схему нет смысла, т.к. она повторяет все что написано в комментарии к скетчу ArduinoISP. Но все же следует упамянуть что желтый светодиод это т.н. «Heartbeat» — который пульсируя, говорит что программатор готов к работе. А белый — это на самом деле два светодиода (красный и зеленый) в одном корпусе с общим катодом, которые сигнализируют «Error» и «Programming» об ошибке и процессе загрузки прошивки в целевой контроллер. Сверху справа, вы можете видеть мою самодельную макетку с ATmega32, ST232BN (аналог MAX232) и обвязкой. Несмотря на то, что на целевой макетке есть свой стабилизатор питания я запитал ее от Uno.

А вот теперь давайте попробуем настроить софт-программатора и собственно прошить/прочесть. Естественно, для прошивки будем использовать avrdude, но мне впадлу использовать консоль 🙂 «…хочется открывать окна мищькой…» и я по совету DI Halt’a решил использовать SinaProg. Итак скачал запустил в комбо Device выбрал целевой камень, в Programmer — AVRISP (потому что данный программатор работает по протоколу AVRISP MkI), выбираю пустой файл для сохранения прошивки, жму Flash -> Read и первые грабли:

Т.к. у меня виндоуз (Win 7 x64) стоит уже довольно долго, и при установке дров, Arduino стал аж на COM23, но в SinaProg в комбо боксе с выбором порта программатора максимум СOM9:

Лечится очень легко, добавлением соответствующего порта в файл Port.txt в папке с SinaProg:

В принципе структура этого файла интуитивно понятна, но хочется обратить внимание что COM23 заглавными это название порта, а сам «адрес» указывается через табуляцию строчными.

Ок! Пробуем снова ииии вторые грабли:

Получаю ошибку Can’t open port и ответ

Так, как это! Порт доступен, другие приложения открывают, а ты не можешь! И вспоминаю об сообщениях о разных версиях avrdude и о странностях в их работе. Ну ладно, копирую avrdude.exe из arduino-1.0.1\hardware\tools\avr\bin\ в каталог с SinaProg, заменяя тот что был внутри, пробую прочесть и снова ошибка, но уже другая:

Что-то в структуре в конфига avrdude. Далее я пытался править, подменять, очищать avrdude.conf и ничего не получалось! Или порт не может быть открыт или не нравятся символы в конфиге…

НО проблему я все же решил, скопировав файлы avrdude.exe и avrdude.conf из папки bin\ свежей версии WinAvr (WinAVR-20100110). Подобрав рабочую связку «дудки» и его конфига, пробую читать очередной раз получаю грабли три:

И ошибку на светодиоде «Error»

На видео запечатлен процесс прошивки (точнее чтения) завершившийся не удачно.
Также на целевой макетной плате вы можете видеть ряд зеленых светящихся и красных не светящихся светодиодов. Эти диоды стоят на старшей тетраде (биты 4-7) порта A и при выводе «0» на соответствующем выводе загорается зеленый, а при «1» — красный. При высоком импедансе — светятся оба но тускло. И еще немного левее, желтый светодиод это «Сеть».

Возвращаясь к предмету заметки, пробуем понять что же все таки значит not in sync: в ошибке дудки. А значит это то, что мы по сути работаем через USART — асинхронный UART и у нас на лицо рассинхронизация. Тьфу ты! Подумал я и вспомнил про баудрейт (скорость передачи через порт) и выставил 19200 в комбобоксе скорости. И в итоге настроенная SinaProg стала выглядеть так:

На группу Fuses не обращайте внимание, это значение там было сразу же после первого запуска SinaProg и пока вы не нажмете Programm фьюзы не прошьются, так что просто игнорируем.

Жму Flash Read и смотрю на железо:

Урааа! Заработало! Теперь было бы не плохо прошить. Для этого в Atmel Studio 6 (бывшая AVRStudio) набросал такую программку

Мигаем всем портом. А если точнее, то выставляем пины порта A в «1» ждем 1с сбрасываем пины в «0» ждем 5с и повторяем снова.

Компилирую и загружаю полученный hex в целевой контроллер:

Вот, собственно, теперь я получи вполне себе удобный USB программатор для AVR’ок. Нужно будет купить комплект ATmega8/168/328 прошить фьюзы, бутлоадер и спрятать в пенале с прочей мелочью, на всякий случай как резервную копию 🙂

У меня всё, спасибо за внимание. Если что не точно/не понятно укажите в комментариях, исправлю/дополню.
С ув.

Источник

MrПоделкинЦ Blog

Мой блог официально переехал http://www.techn0man1ac.info

вторник, 9 декабря 2014 г.

Прошивка hex файлов при помощи Arduino и SinaProg

Данное видео дублирует представленную ниже информацию представленную в текстовом формате:

Привет. Меня уже давно спрашивают можно ли прошивать hex файлы при помощи Arduino, изменять фьюзы, считывать прошивку и всякое такое.

Ответ — да можно, я бы сказал даже нужно. Arduino это отличный старт для новичка но нужно расти дальше, мир микроконтроллеров прекрасен и дарит огромные возможности, но увы arduino это довольно таки узкопрофильное направление.

Одного прекрасного дня я наткнулся на отличный проект на ATtiny13, но увы автор выгрузил в сеть только hex файл и схему и конечно я так и не смог его поюзать. Меня этот вопрос мучал всё больше и больше и тут я случайно наткнулся на одно видео в сети, где автор при помощи ардуино прошил другой микроконтроллер имея только hex файл, ну и схему разумеется, именно он мне подсказал что мол юзаю SinaProg но с Arduino’вскими файлами.

Загуглив на тему SinaProg я скачал SinaProg 2.1.1.RUS но он работать отказывался с ардуино, потому я закинул парочку тройку файлов из Arduino IDE в папку SinaProg 2.1.1\data\ и всё заработало.

Итак пройдёмся коротко по софту, вот скрин:

А той части где кнопка «>» мы можем видеть всякие сообщения, типа OK, прошилось, или ERROR, сама же кнопка «>»открывает лог.

В блоке Flash есть кнопки:

Program — программирование hex-файла( возможно когда выбран Hex-file);

Read — считать hex-файл.

С блоком EEPROM всё аналогично.

Далее блок Device, тут можно выбрать нужный микроконтроллер, вот весь список поддерживаемых( не обращайте внимания цифры и буквы после названий микроконтроллеров, список выдрал из файла Device.txt который лежит в папке SinaProg 2.1.1\data\):

  • AT90CAN128
  • AT90CAN32
  • AT90CAN64
  • AT90PWM2
  • AT90PWM2B
  • AT90PWM3
  • AT90PWM3B
  • AT90USB1286
  • AT90USB1287
  • AT90USB162
  • AT90USB646
  • AT90USB647
  • AT90USB82
  • AT90s1200
  • AT90s2313
  • AT90s2323
  • AT90s2333
  • AT90s2343
  • AT90s4414
  • AT90s4433
  • AT90s4434
  • AT90s8515
  • AT90s8535
  • ATmega103
  • ATmega128
  • ATmega1280
  • ATmega1281
  • ATmega1284P
  • ATmega128RFA1
  • ATmega16
  • ATmega161
  • ATmega162
  • ATmega163
  • ATmega164P
  • ATmega168
  • ATmega169
  • ATmega2560
  • ATmega2561
  • ATmega32
  • ATmega324P
  • ATmega325
  • ATmega3250
  • ATmega328P
  • ATmega329
  • ATmega3290
  • ATmega3290P
  • ATmega329P
  • ATmega48
  • ATmega64
  • ATmega640
  • ATmega644
  • ATmega644P
  • ATmega645
  • ATmega6450
  • ATmega649
  • ATmega6490
  • ATmega8
  • ATmega8515
  • ATmega8535
  • ATmega88
  • ATtiny11
  • ATtiny12
  • ATtiny13
  • ATtiny15
  • ATtiny22 2343
  • ATtiny2313
  • ATtiny24
  • ATtiny25
  • ATtiny26
  • ATtiny261
  • ATtiny44
  • ATtiny45
  • ATtiny461
  • ATtiny84
  • ATtiny85
  • ATtiny861
  • ATtiny88
  • ATxmega64A1
  • ATxmega128A1
  • ATxmega128A1D
  • ATxmega192A1
  • ATxmega256A1
  • ATxmega64A3
  • ATxmega128A3
  • ATxmega192A3
  • ATxmega256A3
  • ATxmega256A3B
  • ATxmega16A4
  • ATxmega32A4
  • ATxmega64A4
  • ATxmega128A4

Есть кнопка Program — записать предустановки, смотри на абзац выше.

А так же Advanced. лихая кнопка, после её нажатия можно увидеть вот такое окно:

Информационная часть, всё как выше.

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

Пару слов о фьюзах, фьюзы это такие как бы тонкие подстройки микроконтроллера, то частоту поднять то убавить, то вкл/выкл nактивирование от внутренней RC цепочки то ещё что-то, вообщем туда лезть только в крайнем случае иначе можно залочить(нашаманить так что перестанет работать) микроконтроллер, и без Atmega fusebit doctor уже никак, решай сам.

На ещё в прибавок калькулятор фьюзов http://homes-smart.ru/fusecalc/ но если залочишь микроконтроллер я не виноват, если что-то не ясно пиши на русскоязычный форум ардуино, ссылка будет в конце статьи.

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

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

Итак, последний блок — Programmer, тут выбирается тип программатора, если юзаешь Arduino в качестве программатора то ставь всё как у меня на скрине, только не COM19, эт у меня такой, у тебя будет другой, в любом случае точно не COM1, первый это системный, на ноуте может не быть а на компах как правило есть, особенно тех что постарше. Можешь юзать и другой программатор, к примеру USBASP, только выбери его в списке и больше ничего не изменяй. Полный список поддерживаемых программаторов:

  • Gromov
  • USBtiny
  • ALF
  • Arduino
  • AT ISP
  • AVR109
  • AVR910
  • AVR911
  • AVRISP
  • AVRISP 2
  • AVRISP mkII
  • AVRISP v2
  • Bascom
  • Blaster
  • BSD
  • Butterfly
  • C2N232I
  • DAPA
  • DASA
  • DASA 3
  • Dragon_DW
  • Dragon_HVSP
  • Dragon_ISP
  • Dragon_JTAG
  • Dragon_PP
  • DT006
  • ERE-ISP-AVR
  • Frank-STK200
  • Futurlec
  • JTAG 1
  • JTAG 1Slow
  • JTAG 2Slow
  • JTAG 2
  • JTAG 2Fast
  • JTAG 2ISP
  • JTAG 2dW
  • JTAG mkI
  • JTAG mkII
  • MIB510
  • pAVR
  • Picoweb
  • Pony-STK200
  • ponyser
  • SI Prog
  • SP12
  • STK200
  • STK500
  • STK500 HVSP
  • STK500 PP
  • STK500 v1
  • STK500 v2
  • STK600
  • STK600 HVSP
  • STK600 PP
  • USBasp
  • Xil

Есть твой? USBasp радует глаз.

Чтобы можно было шить/читать/изменять фьюзы/убить микроконтроллер при помощи Arduino предварительно нужно зашить в ардуинку ArduinoISP подключив всё как я говорил на видео, писал тут и тут.

Тааак что там ещё, у меня было такое что тиня13-я перестала шиться и реагировать на попытки её программирования после того как я попробовал запустить её на частоте 128 kHz, откопал где-то вот такой, слегка модифицированный код http://pastebin.com/Aw5BD0zy ArduinoISP который заставляет прошивку/изменение фьюзов происходить медленнее в несколько раз и может ещё какая-то магия, не разбирался, честно.

Ладно, не буду больше томить, вот ссылка на прогу:

Ссылка на ветку на русскоязычном форуме ардуино:

Калькулятор фьюзов, почётное упоминание:

Маленько изменён скетч ArduinoISP иногда может помочь при ЧП, а иногда нет:

Как зашить загрузчик Arduino в ATmega8/ATmega8A:

Как прошивать и кодить ATtiny13/ATtiny13A при помощи Arduino:

Ну что, вроде как всё, как говорил один известный персонаж из шедеврального советского мультика «Ты. это, заходи, если что» (с) Жил был пёс, заходи ко мне в группу или паблик, как кому нравиться, кароче вот страничка ВКонтакте:

Источник

Adblock
detector