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

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

В первом сообщении будет только ссылка на видео ролик:

https://www.youtube.com/watch?v=cVogb2HtLO4

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

Итак в двух словах что за видео, там я рассказываю как я щью ATmega8 и ATtiny13 hex файлы, изменяю фьюзы и рассказываю немного про прожку SinaProg, которая к стати является графической оболочкой avrdude(AVRЧувака).

Пока что-то подготую для второго сообщения, под "что-то" текстовую часть видео, то есть ту же информацию только в другом виде, как сказал Гагарин, поехали...

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Взято из моего блога:

ВНИМАНИЕ, пробовал зашить в китайский Arduino Pro Mini загрузчик от версии на 8 МГц 3.3 В после чего я так и не смог нормально прошиться обратно, ардуино беспомочно мигала светодиодом и никание "Записать загрузчик" не помогали.

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

 

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

 

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

 

 

Fsoyln0ZJDw.jpg

 

 

В блоке 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, ATmega8, ATtiny13, ATtiny2313 и всякие другие.

 

 

Fsoyln0ZJDw.jpg

 

 

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

 

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

 

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

 

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

 

dMwqgBS63Ss.jpg

 

Так тааак, что мы тут видим...

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

 

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

 

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

 

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

 

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

 

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

 

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

 

Fsoyln0ZJDw.jpg

 

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

 

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

 

https://vk.com/doc256435878_344306532

 

 

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

 

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

 

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

 

http://pastebin.com/Aw5BD0zy
Пробуй, отписывайся. 

 

 

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

 

http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie

 

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

Заходи, делись мыслями, может какие-то будут предложения или ещё что?

birdtlt
Offline
Зарегистрирован: 19.01.2015

Привет!

Извини, но я что-то не могу найти какие именно файлы нужно скопировать из IDE в SinaProg 2.1.1\data\

HWman пишет:

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

 

 

Полистал форумы, там где были ссылки - уже нет доступа к файлам.

Повтори пжл.

Спасибо.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

birdtlt пишет:

Полистал форумы, там где были ссылки - уже нет доступа к файлам.

Повтори пжл.

Спасибо.

Привет. avrdude.conf avrdude.exe и ещё какие-то, уже не помню...

karl2233
Offline
Зарегистрирован: 05.07.2015

cпс за полезную темку.

как для новичка - самое оно.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

не желающим парить мосг странным:

1avrdude -p atmega8 -c usbasp -U flash:w:blink.hex

 

karl2233
Offline
Зарегистрирован: 05.07.2015

Клапaуций, можно подробнее? а то я тут пытаюсь понять как залить *.hex в ATiny13 

купил программатор, начал читать по теме(пока посылка идёт) и наткнулся на возможность Ардуины.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

ну, это у тебя программатор usbasp

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

запускаешь командную строку (CMD) из папки с дудкой, копируешь адаптированную строку в окно консоли жмёшь ентер - всё.

https://dl.dropboxusercontent.com/u/3671035/avrdude-5.11-Patch7610.rar

*в файл avrdude.conf можно заглянуть - там интересное написано.

Radjah
Offline
Зарегистрирован: 06.08.2014

Есть еще вот такая штука http://khazama.com/project/programmer/

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Radjah пишет:

Есть еще вот такая штука http://khazama.com/project/programmer/

ну, оно и есть обёртка дудки - some avrdude GUI, но нахрена? потом будете спрашивать, как я так фьюзы не так прошил.

GUI для слабаков!

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Клапауций 999 пишет:

...
GUI для слабаков!


Админь.

Radjah
Offline
Зарегистрирован: 06.08.2014

Оно опять свои какахи пиарит :(

Интересно, бот на ардуине работает или по-быдлячьи на пыхе? :)

johnl
Offline
Зарегистрирован: 30.01.2017

Я тоже не сразу разобрался вот еще один ролик на эту тему https://www.youtube.com/watch?v=GBHmHq_TqMs там тож через arduino pro mini шьют hex файлы.

knight4roads
Offline
Зарегистрирован: 10.08.2018

Всем привет! подскажите почему не заливается hex ?

в качестве программатора китайская arduino uno, оболочка программы - sinaprog? взятая отсюда же.

программа говорит что programming flash OK, и при этом выдает что 0 bytes of flash written

при этом eeprom записывается нормально

вот лог

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Users\Ðîìàí\Desktop\Termometr-x2_16x2_ATMega8.cpp.hex"
avrdude: input file C:\Users\Ðîìàí\Desktop\Termometr-x2_16x2_ATMega8.cpp.hex auto detected as Intel Hex
awritivrdude: ng flash (0 bytes):
avrdude: 0 bytes of flash written
avrdude: verifying flash memory against C:\Users\Ðîìàí\Desktop\Termometr-x2_16x2_ATMega8.cpp.hex:
avrdude: load data flash data from input file C:\Users\Ðîìàí\Desktop\Termometr-x2_16x2_ATMega8.cpp.hex:
avrdude: input file C:\Users\Ðîìàí\Desktop\Termometr-x2_16x2_ATMega8.cpp.hex auto detected as Intel Hex
avrdude: input file C:\Users\Ðîìàí\Desktop\Termometr-x2_16x2_ATMega8.cpp.hex contains 0 bytes
avrdude: reading on-chip flash data:
avrdude: verifying ...
avrdude: 0 bytes of flash verified
 
avrdude: safemode: Fuses OK
 
avrdude done.  Thank you.
 
заранее спасибо!
 
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

эта строка 

Termometr-x2_16x2_ATMega8.cpp.hex contains 0 bytes

ни о чем не говорит?

b707
Offline
Зарегистрирован: 26.05.2017

knight4roads - дудка, она ж по определению глупая. Сама ничего не выдумывает. Сколько программист написал - столько и записывает. Вам надо поднять скиллы, чтобы программы получались длиннее...

DedSimen - c возвращением!

knight4roads
Offline
Зарегистрирован: 10.08.2018

Вообще нет) я чайник) типа сам файл пустой? но он не пустой, 13 байт в нем есть. да и я этот файл прошивал - у меня есть рабочий термометр с этой прошивкой. опять же с другими hex  такая же история.

knight4roads
Offline
Зарегистрирован: 10.08.2018

b707 пишет:

knight4roads - дудка, она ж по определению глупая. Сама ничего не выдумывает. Сколько программист написал - столько и записывает. Вам надо поднять скиллы, чтобы программы получались длиннее...

DedSimen - c возвращением!

программу писал не я, и еще раз повторюсь - hex не пустой, и рабочий. и проблема не только с этим, но и с другими

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

DedSimen - c возвращением!

я пока с планшета, во вторник домой отпустют.   Ну хоть капельница теперь текст набирать не мешает

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

knight4roads пишет:

13 байт в нем есть.

это всёравно, что пустой. 

knight4roads
Offline
Зарегистрирован: 10.08.2018

такая фигня - лежал файл на диске С - показывает размер, все нормально. Скопировал на D - говорит у файла есть размер, но на диске он места не занимает вообще! Перекачал файл, все залилось нормально! 

Спасибо за помощь!!

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

knight4roads пишет:

такая фигня - лежал файл на диске С - показывает размер, все нормально. Скопировал на D - говорит у файла есть размер, но на диске он места не занимает вообще! Перекачал файл, все залилось нормально! 

почитайте про файловые системы - очень позначательно.

kinpavel
Offline
Зарегистрирован: 08.02.2019

Не кто не в курсе почему считанная прошивка не совпадает с оригиналом залитым в контроллер???

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

нет, не в курсе.

kinpavel
Offline
Зарегистрирован: 08.02.2019

Заливаю прошивку 14562b а считываю 12431b. При этом при верификации пишет OK

kinpavel
Offline
Зарегистрирован: 08.02.2019

Похоже здесь уже никто не живет (

nik182
Offline
Зарегистрирован: 04.05.2015

Фьюзы на шифрование прошивки какие стоят? 

kinpavel
Offline
Зарегистрирован: 08.02.2019

Приветствую. Фьюзы стоят такие

nik182
Offline
Зарегистрирован: 04.05.2015

Ну что вы хотите. Прошивка защищена от считывания. При считывании часть бит будет возвращаться неправильно. Верификацию делают до установки фьюзов.

kinpavel
Offline
Зарегистрирован: 08.02.2019

Может подскажите, какие из этих битов защищают от считывания?

nik182
Offline
Зарегистрирован: 04.05.2015

Защищают lockbyte. Но я не понял вопроса. Вы имели ввиду длину а я контрольную сумму. С локами у вас всё в порядке. Считывается только запрограмированная часть наверное. Может быть гдето есть галочка считать всю прошивку. Но часто для экономии места незапрограмированные ячейки просто отбрасываются и пишется реальная длина программы. Кроме того сам вывод hex чисел может быть разный.

kinpavel
Offline
Зарегистрирован: 08.02.2019

Извиняюсь за долгий ответ. Скорее всего так и есть, что вывод hex разный. Потому как открываю текстовым редактором, они отличаются (можно посмотреть по ссылкам в 24 сообщении). В программе не нашел считывания всей прошивки. Просто всегда полагал что если записал 10 байт данных в контроллер, то и считать должен эти же 10 байт и различий в файлах быть не должно. Сделаю другой программатор, отпишусь.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Считываю SinaProg вижу это:
 

 

В папке с компилированным скетчем это:
 

Attiny13, расширенной панели вывода:
 

01avrdude -C avrdude.conf -c avrisp -P com2 -b 19200 -p t13 -U flash:r:"C:\Users\User\Documents\1.hex":i -q
02 
03 
04 
05avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13
06avrdude: AVR device initialized and ready to accept instructions
07avrdude: Device signature = 0x1e9007
08avrdude: reading flash memory:
09avrdude: writing output file "C:\Users\User\Documents\1.hex"
10 
11avrdude: safemode: Fuses OK
12 
13avrdude done.  Thank you.

В чём косяк???

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ua6em, а в чём проблема? Записи идентичны вроде. Просто строки 16/32 бит

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

dimax пишет:
ua6em, а в чём проблема? Записи идентичны вроде. Просто строки 16/32 бит

а можно настроить, чтобы и SinaProg хекс делал 16 битный?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

ua6em пишет:

dimax пишет:
ua6em, а в чём проблема? Записи идентичны вроде. Просто строки 16/32 бит

а можно настроить, чтобы и SinaProg хекс делал 16 битный?

Вряд ли. А вот AVRDUDE_PROG сохраняет 16-битные хексы

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

v258 пишет:

ua6em пишет:

dimax пишет:
ua6em, а в чём проблема? Записи идентичны вроде. Просто строки 16/32 бит

а можно настроить, чтобы и SinaProg хекс делал 16 битный?

Вряд ли. А вот AVRDUDE_PROG сохраняет 16-битные хексы


Это как?
Зашиваю это:
 

Читаю это:
 

AVRDUDEPROG_33

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

ua6em пишет:

Это как?

Блин, сам попутал - там тоже 32 бита ))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

v258 пишет:

ua6em пишет:

Это как?

Блин, сам попутал - там тоже 32 бита ))

это ерунда, я тут пока игрался с GUI и фьюзами залотил 5 штук )))