Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Как "прошить" AVR? (fuse? , .hex?)

Как "прошить" AVR? (fuse? , .hex?) 28 окт 2016 23:49 #1

  • Oto
  • Oto аватар
  • Не в сети
  • Moderator
  • Сообщений: 920
  • Спасибо получено: 269
Вопрос этот в принципе простой, но количество различных программ для "заливки" программы в МК таково что это вопрос возникает вновь и вновь, смысл действий всегда один и тот же но только на вид все немного разное, вот например , процитирую такой вопрос со страниц форума, повторяется он не один раз, поэтому давайте аналогичные вопросы писать здесь
У меня для AVR контролеров программатор USBASP V2.0 программа которой пользуюсь avrdudeprog, не могу разобраться как выставить FUSE биты.
Вот картинка как нужно и скрин как у меня, как мне правильно выставить?
Выставляйте так же, как на картинке.
Ориентиром в таких ситуациях может служить бит SPIEN. Если Ваш программатор видит его, как отмеченный галочкой, тогда если в FUSE он отмечен галочкой - FUSE выставляются один в один. Ежели в FUSE он без галочки, тогда их все нужно инвертировать.
Как видите в данном примере на картинках одно и тоже, только разный интерфейс , на первый взгляд по картинкам все сложно, но если взять ориентир SPIEN , все становится понятно, и т.д..
#StopRussianAggression
Администратор запретил публиковать записи гостям.
Спасибо сказали: wolf2000, Стайгер

Как "прошить" AVR? 29 окт 2016 07:30 #2

  • Сергей 78
  • Сергей 78 аватар
  • на форуме
  • I'm here long time
  • Сообщений: 106
  • Спасибо получено: 6
Ничего для новичков там не понятно. Количество FUSE отличается более чем в два раза, по сравнению с Пони Прог.
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? 29 окт 2016 08:09 #3

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4069
  • Спасибо получено: 1393
Сергей 78 пишет:
Ничего для новичков там не понятно.
Наверно, как в любом деле и любой программе.

Лично мне PONYPROG тоже больше нравится, но увы, у нее есть свои недостатки.
Что касается FUSE, то у PONYPROG на первый взгляд интерфейс более дружественный. Но если вникнуть, то в AVRDUDE ненужные для данного МК FUSE не активны (у PONYPROG не показываются). Но зато у AVRDUDE справа есть значение FUSE в байтах. Эти числа не зависят от того, программа считает FUSE прямыми или инверсными. Если взять, например, калькулятор, то там эти числа приводятся. Что значительно упрощает установку как раз для новичков. Отсутствие такой опции считаю недостатком PONYPROG в случае миграции от одной программы к другой...

AVRDUDE предупреждает про инверсию FUSE - тоже очень хорошо для новичков, да и не только...
Администратор запретил публиковать записи гостям.
Спасибо сказали: Vakula, Стайгер

Как "прошить" AVR? 29 окт 2016 09:57 #4

  • Oto
  • Oto аватар
  • Не в сети
  • Moderator
  • Сообщений: 920
  • Спасибо получено: 269
Сергей 78 пишет:
....Количество FUSE отличается более чем в два раза, по сравнению с Пони Прог.
Кстати да FUSE на первый взгляд больше количество, новички действительно могут на этом зациклится.
Для того чтобы повторять схемы достаточно иметь дело с двумя средними блоками бит, крайние всегда по умолчанию.

И совершено справедливо Soir отметил про цифровое значение старшего и младшего FUSE-бит (на картинке обведено зеленым)
Soir пишет:
у AVRDUDE справа есть значение FUSE в байтах. Эти числа не зависят от того, программа считает FUSE прямыми или инверсными. Если взять, например, калькулятор, то там эти числа приводятся. Что значительно упрощает установку как раз для новичков. Отсутствие такой опции считаю недостатком PONYPROG в случае миграции от одной программы к другой...
Вот кстати и могу по этому поводу тоже недавний собственный пример.

Понадобилось прошить ATtiny24а, естественно PONYPROG с таким кристалом не работает, и обнаружил что и AVRDUDE мой не может его прошить, зато SinaProg без проблем шьет ATtiny24а через "свисток".
Однако интерфейс ...? никаких галок!

И о чем писали выше
Если взять, например, калькулятор, то там эти числа приводятся. Что значительно упрощает установку ...
С калькулятором фьюз действительно оказалось проще установить нужные FUSE
#StopRussianAggression
Администратор запретил публиковать записи гостям.
Спасибо сказали: Стайгер

Как "прошить" AVR? 29 окт 2016 10:50 #5

  • Стайгер
  • Стайгер аватар
  • Не в сети
  • Harness is online
  • Сообщений: 35
  • Спасибо получено: 2
Oto пишет:
обнаружил что и AVRDUDE мой не может его прошить
Тоже прошиваю в AVRDUDE. Но у меня в выпадающем списке ATtiny24 есть. Или тут другая причина?
Администратор запретил публиковать записи гостям.
Спасибо сказали: Oto

Как "прошить" AVR? 29 окт 2016 11:32 #6

  • Oto
  • Oto аватар
  • Не в сети
  • Moderator
  • Сообщений: 920
  • Спасибо получено: 269
Стайгер пишет:
Но у меня в выпадающем списке ATtiny24 есть. Или тут другая причина?
Очень интересно, у меня все вроде 6ы тоже самое, только ATtiny24 нет.



На вид AVRDUDE_PROG 3.3 и у вас и у меня, хм... не знал, пожалуй обновляться надо .)
#StopRussianAggression
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? 29 окт 2016 12:44 #7

  • Vakula
  • Vakula аватар
  • на форуме
  • Moderator
  • ich bin Ukrainian
  • Сообщений: 692
  • Спасибо получено: 65
Oto пишет:
Но у меня в выпадающем списке ATtiny24 есть. Или тут другая причина?
24 тинька есть.

Soir пишет:
Но зато у AVRDUDE справа есть значение FUSE в байтах. Эти числа не зависят от того, программа считает FUSE прямыми или инверсными....
Всегда стараюсь пользоваться этими числами. Никогда не промахнешся.
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? 29 окт 2016 18:37 #8

  • wolf2000
  • wolf2000 аватар
  • Не в сети
  • Moderator
  • Слава Україні !!! Смерть ворогам
  • Сообщений: 598
  • Спасибо получено: 88
Soir пишет:
Наверно, как в любом деле и любой программе.
Тут Вы правы. Дело привычки тоже, или все на автомате или 10-ть раз все перепроверить.
Вопрос: как все таки правильнее, сразу шить hex а потом Fuse?
Или все таки сразу Fuse, а затем программу?
Это если мы берем чистый кристалл.
Вопрос НЕ риторический. Чуть позже объясню почему задаю его
Save Ukraine! Stop Putin!
Не купуй товари окупантів! На початку штрих-коду від 460 до 469
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 29 окт 2016 21:44 #9

  • Сергей 78
  • Сергей 78 аватар
  • на форуме
  • I'm here long time
  • Сообщений: 106
  • Спасибо получено: 6
Я всегда заливаю прошивку а потом выставляю FUSE. Если работа контролера будет от внешнего кварца, то мой программатор его просто перестает видеть. Следовательно, если сперва выставить FUSE, то потом нельзя будет залить прошивку.
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? 30 окт 2016 07:00 #10

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4069
  • Спасибо получено: 1393
wolf2000 пишет:
сообщение № 44
Не могу комментировать чужие прошивки. Да и опыта работы с загрузчиками мало.
Где-то мои Arduino застряли в дороге, скоро придется спор с китайцами открывать...

Но, теоретически, порядок прошивки может быть любой. Сначала прошивка загрузчика потом FUSE. Или наоборот - FUSE, а потом загрузчик... С точки зрения физики процесса - главное чтобы FUSE соответствовали конкретному загрузчику, а в каком порядке шла запись - без разницы.

Какая-то конкретная программа-прошивальщик может блокировать запись в область загрузчика, если видит установленный BOOTRST и что эта часть памяти выделена под загрузчик. Это опять же, теоретически такое может быть, но практически я не исследовал программы в этой части. Может даже в программе где-то в настройках можно задать...
Вот PONYPROG, например, все равно. Пишет не задумываясь и не предупреждая.

Так что однозначного ответа я все равно не дам, не считая 2-го абзаца этого сообщения.

Сергей 78 пишет:
Если работа контролера будет от внешнего кварца, то мой программатор его просто перестает видеть.
А если понадобится перешить? Через Доктора?
Поставьте кварц в программаторе... Это же стандартная жизненная ситуация. Проблем здесь не должно быть никаких.
Проблемы, и вот тут важна последовательность записи, могут возникнуть только при конфигурации вывода Reset, как вывода общего назначения. Потом только Доктор или параллельный программатор.
Последнее редактирование: 30 окт 2016 07:09 от Soir.
Администратор запретил публиковать записи гостям.
Спасибо сказали: wolf2000, Стайгер

Как "прошить" AVR? 30 окт 2016 10:10 #11

  • wolf2000
  • wolf2000 аватар
  • Не в сети
  • Moderator
  • Слава Україні !!! Смерть ворогам
  • Сообщений: 598
  • Спасибо получено: 88
Soir пишет:

Какая-то конкретная программа-прошивальщик может блокировать запись в область загрузчика, если видит установленный BOOTRST и что эта часть памяти выделена под загрузчик.
Fuse для прошивки загрузка

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Save Ukraine! Stop Putin!
Не купуй товари окупантів! На початку штрих-коду від 460 до 469
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? 30 окт 2016 20:44 #12

  • grisha3109
  • grisha3109 аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 120
  • Спасибо получено: 4
У меня тоже есть несколько вопросов:
С помощью чего лучше прошивать, какой программой, каким программатором?
В чем разница между дешевым и дорогим программатором кроме списка чипов, как это влияет на работоспособность?
Почему очень часто можно на форумах прочитать что микроконтроллер одним программатором прошить не смогли а с помощью другого без проблем?
Почему лично у меня некоторые атмеги 8а шьются только несколько раз и все, ни стереть ни прошить не получается не смотря на то что устройство работает выдает ошибку?
В каких случаях при прошивке нужен кварц, только если в устройстве используется внешний кварц?
Как определить какие нужно выставить FUSE имея только схему и прошивку?
В добро верят лишь те немногие, кто его творит.
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? 01 нояб 2016 13:47 #13

  • Oto
  • Oto аватар
  • Не в сети
  • Moderator
  • Сообщений: 920
  • Спасибо получено: 269
Кстати, как то сделал себе еще такой "конфуз".
Когда первый раз взял в руки ATmega128 , как обычно по фьюзам все понял , прошил и ....
схема с моей ATmega128 "умерла"
оказалось неправильно выбран источник тактирования,
сразу паника, что делать с впаяными 60ю ногами?
доктора фьюзов и паралельного программатора у меня нет и не было никогда.
Слава гуглу , подсказал что на ногу XTAL1 нужно подать внешний сигнал (я подал 1МГц от своего генератора)
и МК стал опять виден програматору.

И так я умудрился сделать два раза :-) ,
так что способ с ногой XTAL1 нужно всегда держать на примете..
#StopRussianAggression
Администратор запретил публиковать записи гостям.
Спасибо сказали: Стайгер

Как "прошить" AVR? (fuse? , .hex?) 01 нояб 2016 14:14 #14

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4069
  • Спасибо получено: 1393
Тоже была такая ситуация. Для памяти оставил себе запись:

"При прошивке ATMEGA8 ошибочно установлен внешний RC генератор.
Прошивается нормально, дальше не читается, не пишется, не стирается.
Восстановил, удалив из программатора кварц и подключив RC-цепочку генератора R=100 кОм, С=45pF. Дальше стер МК программой PONYPROG. В одном случае после установки правильных FUSE МК прошился сразу. Во втором после возвращения кварца."
Из даташит...
Администратор запретил публиковать записи гостям.
Спасибо сказали: Oto, Стайгер

Как "прошить" AVR? (fuse? , .hex?) 01 нояб 2016 17:05 #15

  • diod
  • diod аватар
  • Не в сети
  • new member
  • Сообщений: 2
Если я всё правильно понимаю то это ветка форума рассчитана на новичка (такого как я), по себе могу сказать не маловажным фактором тут выступает не только программа но и сам программатор, к примеру программатор USBASP V2.0 (а он на мой взгляд самый доступный, а в паре с ISP AVR очень удобно) подружить с PONYPROG не удалось ( причём пробовал на разных пк) зато с AVRDUDE всё заработало сразу , если не считать пару залоченых мк (( .
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 02 нояб 2016 09:02 #16

  • pavel1965
  • pavel1965 аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 262
  • Спасибо получено: 10
программатор USBASP V2.0 (а он на мой взгляд самый доступный, а в паре с ISP AVR очень удобно) подружить с PONYPROG не удалось ( причём пробовал на разных пк) зато с AVRDUDE всё заработало сразу
программатор USBASP V2.0 насколько я понимаю работает через юсби, понипрог через ком порт.
Последнее редактирование: 02 нояб 2016 09:06 от pavel1965.
Администратор запретил публиковать записи гостям.

Термостат- таймер 18 нояб 2016 14:44 #17

  • gleco1
  • gleco1 аватар
  • Не в сети
  • Harness is online
  • Сообщений: 30
Последние штрихи перед прошивкой: Я буду шить посредством "USBASP" через "Khazama AVR" последней прошивкой из 100-поста. Чем шили ВЫ и какие есть подводные камни?
Прошивка фьюзов по файлу "Fuse_8MHz_Int.png". Отмечены птичками Активированные (Enable) или
Деактивированные (Desable) Ведь это зависит от прогрммы ( в Пони-Прог там же всё наоборот). На картинке "Fuse_8MHz_Int.png" фьюз SPIEN затенён, но с птичкой. Не хочу залочить камень.
Я задал вопрос не просто так. На картинке, приложенной к Протеус, фьюз SPI не просто чистый или отмечен галочкой он ещё и затемнён.
Нужно знать, какой прогой камень прошивался. Soir and Sergey9301 это реально проделали и знают как . Мне нет смысла повторять те ошибки (возможно) которые могли быть допущены. И ещё. Обычно при прошивке AVR кроме Flesh прошивается и EEPROM. Но файла еер нет. Я так понимаю, что всё что нужно заложено в hex файле. Не так ли?
Последнее редактирование: 19 нояб 2016 10:54 от Oto. Причина: перенес в "Как "прошить" AVR? (fuse? , .hex?)"
Администратор запретил публиковать записи гостям.

Термостат- таймер 18 нояб 2016 15:30 #18

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4069
  • Спасибо получено: 1393
gleco1 пишет:
фьюз SPI не просто чистый или отмечен галочкой он ещё и затемнён.
FUSE я привел как скрин с PONYPROG. В этой программе SPIEN затенен и недоступен к изменению. Если Ваша программа позволяет его редактировать - не советую менять. Повторная прошивка МК будет недоступна. Это называется залочить. Еще есть и другие способы этого добиться... Лечить можно, но не так просто.
С завода изготовителя SPIEN всегда включен. Разные программы по разному интерпретируют включен/выключен (или по-другому: прямые или инверсные FUSE). Вот этот бит и может служить для идентификации прямой/инверсный. Если Ваш программатор при считывании FUSE видит его с галочкой - FUSE следует выставлять как в PONYPROG (см. скрин). Если без галочки - все инвертировать по отношению к PONYPROG.
Есть онлайн калькуляторы FUSE - задайте в поиск. В этом устройстве FUSE должны быть настроены для работы от внутреннего тактового генератора с частотой 8 МГц.

gleco1 пишет:
Обычно при прошивке AVR кроме Flesh прошивается и EEPROM. Но файла еер нет. Я так понимаю, что всё что нужно заложено в hex файле. Не так ли?
Я бы не сказал, что обычно. Я например, почти никогда не создаю файл EEPROM. Это дело вкуса разработчика, но иногда есть и необходимость в том или ином решении.
Последнее редактирование: 19 нояб 2016 10:52 от Oto. Причина: перенес в "Как "прошить" AVR? (fuse? , .hex?)"
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 18 нояб 2016 21:15 #19

  • Sergey9301
  • Sergey9301 аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 109
  • Спасибо получено: 4
Любопытно еще какой бит и за что отвечает, есть к примеру атмега записаная, я хочу ее защитить от чтения не нарушая ее работы, чем? идем от обратного, есть таже атмега записаная и защищенная , как ее считать? доктором не выйдет я так понимаю, а парапрогом?, он показывает какие биты и как выставлены, могу я снять какой то бит не нарушив ее работу?
Последнее редактирование: 18 нояб 2016 21:26 от Sergey9301.
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 18 нояб 2016 21:52 #20

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4069
  • Спасибо получено: 1393
Для защиты информации есть несколько бит. Все описывать смысла не вижу, зададите поиск - информации много.
А из наиболее востребованных это Lock1 и Lock2 (или Lb1 и Lb2).
Из даташит (1 и 0 оттуда же, уточняйте для своего программатора, тоже бывают прямые и инверсные):
---
Lock1=1; - защита отключена. По умолчанию.
Lock2=1;
---
Lock1=0; - защита от программирования flash, EEPROM и FUSE.
Lock2=1;
---
Lock1=0; - защита от программирования и чтения тех же областей памяти.
Lock2=0;

Если биты защиты установлены (здесь равны 0), то изменить содержимое памяти невозможно, в т.ч. и FUSE, в том числе и биты защиты. Ни последовательным программатором, ни параллельным (в народе - доктором).
Убрать защиту можно только стерев весь МК, естественно, вместе с информацией...
Администратор запретил публиковать записи гостям.
Спасибо сказали: Oto

Как "прошить" AVR? (fuse? , .hex?) 18 нояб 2016 23:51 #21

  • grisha3109
  • grisha3109 аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 120
  • Спасибо получено: 4
Soir пишет:
Lock1=0; Lock2=0- защита от программирования и чтения тех же областей памяти.
Попала мне когда то плата терморегулятора на два канала и решил я ее скопировать, срисовал схему, скопировал прошивку и FUSE с помощью пони прог. Но до железа так и руки не дошли, но прошивка на вид правдоподобная несмотря на установленную защиту. Могут ли быть исключения когда прошивку можно скопировать не смотря на FUSE-Lock1, Lock2.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Вложенный файл:

Имя файла: prog.rar
Размер файла:1 KB
В добро верят лишь те немногие, кто его творит.
Последнее редактирование: 18 нояб 2016 23:51 от grisha3109.
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 19 нояб 2016 06:14 #22

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4069
  • Спасибо получено: 1393
grisha3109 пишет:
Могут ли быть исключения когда прошивку можно скопировать не смотря на FUSE-Lock1, Lock2.
Исключений нет. И Ваша скопированная прошивка ни разу не правдоподобная...
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 19 нояб 2016 07:18 #23

  • Sergey9301
  • Sergey9301 аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 109
  • Спасибо получено: 4
grisha3109 пишет:
Попала мне когда то плата терморегулятора на два канала и решил я ее скопировать,
Таже самая картина, был у медиков, отдали они мне плату с терморегулятора с убитым контролером, на вопрос такой же шкаф но рабочий есть что бы скопировать?, посмеялись и сказали есть, но контролер защищен и прошивка только на заводе. вот и смотрю на него, первая мысль выдрать оттуда индикаторы, ( а больше там ничего и нет, с десяток транзисторов и столько же резистроров) но жалко курочить рабочий девайс
Администратор запретил публиковать записи гостям.

Как "прошить" AVR? (fuse? , .hex?) 26 нояб 2016 19:32 #24

  • Sergey9301
  • Sergey9301 аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 109
  • Спасибо получено: 4
Soir пишет:
Ваша скопированная прошивка ни разу не правдоподобная...
Спрортивного интереса ради взял на атмеге термостата в понипрог отметил чебоксы Loc 1 и Loc2 , контролер после этого работает, видится в программаторе, читается, но считаное ересь .
Последнее редактирование: 26 нояб 2016 19:37 от Sergey9301.
Администратор запретил публиковать записи гостям.
Модераторы: wolf2000, Vakula, Айнцвайдрайченко