Прошивка hex файлов при помощи Arduino и SinaProg
- Войдите на сайт для отправки комментариев
Ср, 10/12/2014 - 02:47
В первом сообщении будет только ссылка на видео ролик:
https://www.youtube.com/watch?v=cVogb2HtLO4
Потому как его нельзя редактировать, а вдруг чего изменится.
Итак в двух словах что за видео, там я рассказываю как я щью ATmega8 и ATtiny13 hex файлы, изменяю фьюзы и рассказываю немного про прожку SinaProg, которая к стати является графической оболочкой avrdude(AVRЧувака).
Пока что-то подготую для второго сообщения, под "что-то" текстовую часть видео, то есть ту же информацию только в другом виде, как сказал Гагарин, поехали...
Взято из моего блога:
ВНИМАНИЕ, пробовал зашить в китайский Arduino Pro Mini загрузчик от версии на 8 МГц 3.3 В после чего я так и не смог нормально прошиться обратно, ардуино беспомочно мигала светодиодом и никание "Записать загрузчик" не помогали.
Одного прекрасного дня я наткнулся на отличный проект на 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\):
Как видите есть всё популярные микроконтроллеры фирмы ATmel, в частности ATmega328P, ATmega8, ATtiny13, 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, только выбери его в списке и больше ничего не изменяй. Полный список поддерживаемых программаторов:
Есть твой? 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
Ну что, вроде как всё, как говорил один известный персонаж из шедеврального советского мультика "Ты... это, заходи, если что" (с) Жил был пёс.
Заходи, делись мыслями, может какие-то будут предложения или ещё что?
Привет!
Извини, но я что-то не могу найти какие именно файлы нужно скопировать из IDE в SinaProg 2.1.1\data\
Загуглив на тему SinaProg я скачал SinaProg 2.1.1.RUS но он работать отказывался с ардуино, потому я закинул парочку тройку файлов из Arduino IDE в папку SinaProg 2.1.1\data\ и всё заработало.
Полистал форумы, там где были ссылки - уже нет доступа к файлам.
Повтори пжл.
Спасибо.
Полистал форумы, там где были ссылки - уже нет доступа к файлам.
Повтори пжл.
Спасибо.
Привет. avrdude.conf avrdude.exe и ещё какие-то, уже не помню...
cпс за полезную темку.
как для новичка - самое оно.
не желающим парить мосг странным:
1
avrdude -p atmega8 -c usbasp -U flash:w:blink.hex
Клапaуций, можно подробнее? а то я тут пытаюсь понять как залить *.hex в ATiny13
купил программатор, начал читать по теме(пока посылка идёт) и наткнулся на возможность Ардуины.
ну, это у тебя программатор usbasp
вот тебе дудка - в архиве найдёшь рабочий файлег примеров cmd.txt, с помощью которых я сам себе шил, разберёшся на примерах.
запускаешь командную строку (CMD) из папки с дудкой, копируешь адаптированную строку в окно консоли жмёшь ентер - всё.
https://dl.dropboxusercontent.com/u/3671035/avrdude-5.11-Patch7610.rar
*в файл avrdude.conf можно заглянуть - там интересное написано.
Есть еще вот такая штука http://khazama.com/project/programmer/
Есть еще вот такая штука http://khazama.com/project/programmer/
ну, оно и есть обёртка дудки - some avrdude GUI, но нахрена? потом будете спрашивать, как я так фьюзы не так прошил.
GUI для слабаков!
...
GUI для слабаков!
Админь.
Оно опять свои какахи пиарит :(
Интересно, бот на ардуине работает или по-быдлячьи на пыхе? :)
Я тоже не сразу разобрался вот еще один ролик на эту тему https://www.youtube.com/watch?v=GBHmHq_TqMs там тож через arduino pro mini шьют hex файлы.
Всем привет! подскажите почему не заливается hex ?
в качестве программатора китайская arduino uno, оболочка программы - sinaprog? взятая отсюда же.
программа говорит что programming flash OK, и при этом выдает что 0 bytes of flash written
при этом eeprom записывается нормально
вот лог
эта строка
Termometr-x2_16x2_ATMega8.cpp.hex contains 0 bytes
ни о чем не говорит?
knight4roads - дудка, она ж по определению глупая. Сама ничего не выдумывает. Сколько программист написал - столько и записывает. Вам надо поднять скиллы, чтобы программы получались длиннее...
DedSimen - c возвращением!
Вообще нет) я чайник) типа сам файл пустой? но он не пустой, 13 байт в нем есть. да и я этот файл прошивал - у меня есть рабочий термометр с этой прошивкой. опять же с другими hex такая же история.
knight4roads - дудка, она ж по определению глупая. Сама ничего не выдумывает. Сколько программист написал - столько и записывает. Вам надо поднять скиллы, чтобы программы получались длиннее...
DedSimen - c возвращением!
программу писал не я, и еще раз повторюсь - hex не пустой, и рабочий. и проблема не только с этим, но и с другими
DedSimen - c возвращением!
я пока с планшета, во вторник домой отпустют. Ну хоть капельница теперь текст набирать не мешает
13 байт в нем есть.
это всёравно, что пустой.
такая фигня - лежал файл на диске С - показывает размер, все нормально. Скопировал на D - говорит у файла есть размер, но на диске он места не занимает вообще! Перекачал файл, все залилось нормально!
Спасибо за помощь!!
такая фигня - лежал файл на диске С - показывает размер, все нормально. Скопировал на D - говорит у файла есть размер, но на диске он места не занимает вообще! Перекачал файл, все залилось нормально!
почитайте про файловые системы - очень позначательно.
Не кто не в курсе почему считанная прошивка не совпадает с оригиналом залитым в контроллер???
нет, не в курсе.
Заливаю прошивку 14562b а считываю 12431b. При этом при верификации пишет OK
Похоже здесь уже никто не живет (
Фьюзы на шифрование прошивки какие стоят?
Приветствую. Фьюзы стоят такие
Ну что вы хотите. Прошивка защищена от считывания. При считывании часть бит будет возвращаться неправильно. Верификацию делают до установки фьюзов.
Может подскажите, какие из этих битов защищают от считывания?
Защищают lockbyte. Но я не понял вопроса. Вы имели ввиду длину а я контрольную сумму. С локами у вас всё в порядке. Считывается только запрограмированная часть наверное. Может быть гдето есть галочка считать всю прошивку. Но часто для экономии места незапрограмированные ячейки просто отбрасываются и пишется реальная длина программы. Кроме того сам вывод hex чисел может быть разный.
Извиняюсь за долгий ответ. Скорее всего так и есть, что вывод hex разный. Потому как открываю текстовым редактором, они отличаются (можно посмотреть по ссылкам в 24 сообщении). В программе не нашел считывания всей прошивки. Просто всегда полагал что если записал 10 байт данных в контроллер, то и считать должен эти же 10 байт и различий в файлах быть не должно. Сделаю другой программатор, отпишусь.
Считываю SinaProg вижу это:
01
:2000000009C088C087C087C085C084C083C082C0AEC080C011241FBECFE9CDBF20E0A0E6A9
02
:20002000B0E001C01D92A337B207E1F700E401BD789401D0ADC083E083BF82E089BF12BE4A
03
:20004000789481E087BBC098B998C19A47EC51E021E030E087B18C7F816087B946B9369946
04
:20006000FECF84B195B116B89093690080936800E199FECF5EBBE09A8DB38733D1F08091BD
05
:20008000660090916700892BA1F48091640090916500892B71F4C09A63D0809360009093F2
06
:2000A0006100A0936200B093630030936700209366008091680090916900892B31F0809178
07
:2000C000660090916700892B99F44AD0C0906000D0906100E0906200F09063008C199D0966
08
:2000E000AE09BF098038994AA340B10508F4B2CF1092670010926600309365002093640080
09
:200100002FD08093600090936100A0936200B0936300A0CF75CF1F920F920FB60F9211240E
10
:200120008F939F93AF93BF9380916A0090916B00A0916C00B0916D000196A11DB11D80934F
11
:200140006A0090936B00A0936C00B0936D00BF91AF919F918F910F900FBE0F901F90189511
12
:20016000EEE6F89481919191A191B1911895EF93EFB7EF930F93EEE600810D5E02C000817B
13
:140180000F4F0193E0F70F91EF91EFBFEF911895F894FFCF4D
14
:00000001FF
В папке с компилированным скетчем это:
01
:1000000009C088C087C087C085C084C083C082C043
02
:10001000AEC080C011241FBECFE9CDBF20E0A0E656
03
:10002000B0E001C01D92A337B207E1F700E401BDC3
04
:10003000789401D0ADC083E083BF82E089BF12BE57
05
:10004000789481E087BBC098B998C19A47EC51E099
06
:1000500021E030E087B18C7F816087B946B936995D
07
:10006000FECF84B195B116B8909369008093680073
08
:10007000E199FECF5EBBE09A8DB38733D1F08091DA
09
:10008000660090916700892BA1F4809164009091A3
10
:100090006500892B71F4C09A63D0809360009093BF
11
:1000A0006100A0936200B0936300309367002093D7
12
:1000B00066008091680090916900892B31F08091F1
13
:1000C000660090916700892B99F44AD0C090600037
14
:1000D000D0906100E0906200F09063008C199D095F
15
:1000E000AE09BF098038994AA340B10508F4B2CFE0
16
:1000F00010926700109266003093650020936400B0
17
:100100002FD08093600090936100A0936200B09321
18
:100110006300A0CF75CF1F920F920FB60F921124DC
19
:100120008F939F93AF93BF9380916A0090916B00E0
20
:10013000A0916C00B0916D000196A11DB11D80933E
21
:100140006A0090936B00A0936C00B0936D00BF9118
22
:10015000AF919F918F910F900FBE0F901F901895A8
23
:10016000EEE6F89481919191A191B1911895EF9358
24
:10017000EFB7EF930F93EEE600810D5E02C00081B2
25
:100180000F4F0193E0F70F91EF91EFBFEF911895AB
26
:04019000F894FFCF11
27
:00000001FF
Attiny13, расширенной панели вывода:
01
avrdude -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
05
avrdude: please define PAGEL and BS2 signals
in
the configuration file
for
part ATtiny13
06
avrdude: AVR device initialized and ready to accept instructions
07
avrdude: Device signature = 0x1e9007
08
avrdude: reading flash memory:
09
avrdude: writing output file
"C:\Users\User\Documents\1.hex"
10
11
avrdude: safemode: Fuses OK
12
13
avrdude done. Thank you.
В чём косяк???
ua6em, а в чём проблема? Записи идентичны вроде. Просто строки 16/32 бит
а можно настроить, чтобы и SinaProg хекс делал 16 битный?
а можно настроить, чтобы и SinaProg хекс делал 16 битный?
Вряд ли. А вот AVRDUDE_PROG сохраняет 16-битные хексы
а можно настроить, чтобы и SinaProg хекс делал 16 битный?
Вряд ли. А вот AVRDUDE_PROG сохраняет 16-битные хексы
Это как?
Зашиваю это:
01
:1000000009C088C087C087C085C084C083C082C043
02
:10001000AEC080C011241FBECFE9CDBF20E0A0E656
03
:10002000B0E001C01D92A337B207E1F700E401BDC3
04
:10003000789401D0ADC083E083BF82E089BF12BE57
05
:10004000789481E087BBC098B998C19A47EC51E099
06
:1000500021E030E087B18C7F816087B946B936995D
07
:10006000FECF84B195B116B8909369008093680073
08
:10007000E199FECF5EBBE09A8DB38733D1F08091DA
09
:10008000660090916700892BA1F4809164009091A3
10
:100090006500892B71F4C09A63D0809360009093BF
11
:1000A0006100A0936200B0936300309367002093D7
12
:1000B00066008091680090916900892B31F08091F1
13
:1000C000660090916700892B99F44AD0C090600037
14
:1000D000D0906100E0906200F09063008C199D095F
15
:1000E000AE09BF098038994AA340B10508F4B2CFE0
16
:1000F00010926700109266003093650020936400B0
17
:100100002FD08093600090936100A0936200B09321
18
:100110006300A0CF75CF1F920F920FB60F921124DC
19
:100120008F939F93AF93BF9380916A0090916B00E0
20
:10013000A0916C00B0916D000196A11DB11D80933E
21
:100140006A0090936B00A0936C00B0936D00BF9118
22
:10015000AF919F918F910F900FBE0F901F901895A8
23
:10016000EEE6F89481919191A191B1911895EF9358
24
:10017000EFB7EF930F93EEE600810D5E02C00081B2
25
:100180000F4F0193E0F70F91EF91EFBFEF911895AB
26
:04019000F894FFCF11
27
:00000001FF
Читаю это:
01
:2000000009C088C087C087C085C084C083C082C0AEC080C011241FBECFE9CDBF20E0A0E6A9
02
:20002000B0E001C01D92A337B207E1F700E401BD789401D0ADC083E083BF82E089BF12BE4A
03
:20004000789481E087BBC098B998C19A47EC51E021E030E087B18C7F816087B946B9369946
04
:20006000FECF84B195B116B89093690080936800E199FECF5EBBE09A8DB38733D1F08091BD
05
:20008000660090916700892BA1F48091640090916500892B71F4C09A63D0809360009093F2
06
:2000A0006100A0936200B093630030936700209366008091680090916900892B31F0809178
07
:2000C000660090916700892B99F44AD0C0906000D0906100E0906200F09063008C199D0966
08
:2000E000AE09BF098038994AA340B10508F4B2CF1092670010926600309365002093640080
09
:200100002FD08093600090936100A0936200B0936300A0CF75CF1F920F920FB60F9211240E
10
:200120008F939F93AF93BF9380916A0090916B00A0916C00B0916D000196A11DB11D80934F
11
:200140006A0090936B00A0936C00B0936D00BF91AF919F918F910F900FBE0F901F90189511
12
:20016000EEE6F89481919191A191B1911895EF93EFB7EF930F93EEE600810D5E02C000817B
13
:140180000F4F0193E0F70F91EF91EFBFEF911895F894FFCF4D
14
:00000001FF
AVRDUDEPROG_33
Это как?
Блин, сам попутал - там тоже 32 бита ))
Это как?
Блин, сам попутал - там тоже 32 бита ))
это ерунда, я тут пока игрался с GUI и фьюзами залотил 5 штук )))