вторник, 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\ и всё заработало.

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


В блоке Hex-file выбираем hex или eep(первый прошивка второй содержимое энергонезависимой памяти).

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

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

Program - программирование hex-файла( возможно когда выбран Hex-file);
Verify - проверка целебности прошивки что в микроконтроллере и hex-файла, их сравнение;
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


Как видите есть всё популярные микроконтроллеры фирмы ATmel, в частности ATmega328P, ATmega8ATtiny13, ATtiny2313 и всякие другие.




Далее - кнопка Search( та что сырчь на видео), если её нажать то программа попытается прочитать сигнатуры того микроконтроллера который подключен к программатору, проще говоря поищет микроконтроллер. Потом может ответить OK,  или ERROR в информационном блоке, если всё норм или когда нет соответственно.

В блоке Fuses есть предустановки для ATmega8 для работы на разных частотах, но увы только для ATmega8 и ATmega32, можно добавить в файле Fuse.txt (который лежит в папке SinaProg 2.1.1\data\).

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

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


Так тааак, что мы тут видим...
Device signature - какие-то циферки, я так понял это идентификатор микроконтроллера, по нём программа опознаёт что за микроконтроллер ты ей суёшь.

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

Чуть ниже идут фьюзы, если не понимаешь тут ничего то не советую что-то изменять, а если уж зачешется то не забывай их сначала считать кнопкой 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 который заставляет прошивку/изменение фьюзов происходить медленнее в несколько раз и может ещё какая-то магия, не разбирался, честно.

Купить Arduino можно тут:
http://ali.pub/8u3jr

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

https://vk.com/doc256435878_344306532

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

http://arduino.ru/forum/programmirovanie/proshivka-hex-failov-pri-pomoshchi-arduino-i-sinaprog
С вопросами туда, там более опытный народ чем я.

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

http://homes-smart.ru/fusecalc/

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

http://pastebin.com/Aw5BD0zy

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

http://razniepodelki.blogspot.com/2014/10/arduino-atmega8-arduino.html

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

http://razniepodelki.blogspot.com/2014/05/attiny13-arduino.html


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

https://vk.com/razniepodelkiblogspot

Или посети мой канал на youtube:

https://www.youtube.com/user/RazniePodelki а вдруг что-то ещё интересное для себя найдёшь или захочешь подписаться. На данный момент вас уже больше чем 700.

Комментариев нет:

Отправить комментарий