Официальный сайт компании Arduino по адресу arduino.cc
Прошивка 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пс за полезную темку.
как для новичка - самое оно.
не желающим парить мосг странным:
Клап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 байт и различий в файлах быть не должно. Сделаю другой программатор, отпишусь.