Научите загрузке bootloader`a

Тема в разделе "Микроконтроллеры AVR", создана пользователем Desert Ops, 24 мар 2014.

  1. Desert Ops

    Desert Ops Нерд

    Пытался загрузить bootloader в "пустой" Mega328 камушек по инструкции с arduino.cc с помощью UNO. Убились оба. Осталась у меня единственная рабочая ардуинка и один 328 камушек. Спасите, что-ли...
     
  2. в чем сложность?
     
    Desert Ops нравится это.
  3. Desert Ops

    Desert Ops Нерд

    Все сделал по инструкции и вот что получил:

    Arduino: 1.5.6-r2 (Windows 7), Board: "Arduino Uno"

    avrdude: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
    processing.app.debug.RunnerException

    at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:305)

    at processing.app.Editor$47.run(Editor.java:2569)

    at java.awt.event.InvocationEvent.dispatch(Unknown Source)

    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

    at java.awt.EventQueue.access$200(Unknown Source)

    at java.awt.EventQueue$3.run(Unknown Source)

    at java.awt.EventQueue$3.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.awt.EventQueue.dispatchEvent(Unknown Source)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.run(Unknown Source)

    Caused by: processing.app.debug.RunnerException: Проблема загрузки на плату. Для достижения дзен, курить http://www.arduino.cc/en/Guide/Troubleshooting#upload .

    at cc.arduino.packages.Uploader.executeUploadCommand(Uploader.java:111)

    at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:298)

    ... 15 more
     
  4. что то тут неправильно.
     
    Desert Ops нравится это.
  5. Desert Ops

    Desert Ops Нерд

    Это свежая бета IDE, я теперь вообще всего боюсь.
     
  6. может стоит взять нормальный релиз, а не бету предназначенную для DUE

    может конечно не из за этого ошибка, но если у вас уна, то бету лучше не пользовать
     
    Последнее редактирование: 24 мар 2014
    Desert Ops и Megakoteyka нравится это.
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Говорят, для УНО 1.0.х нужно использовать.
    Где-то тут на форуме была речь об этом.
     
    Desert Ops нравится это.
  8. Desert Ops

    Desert Ops Нерд

    Вы правы, я много где накосячил и эту бету поставил потому, что со стабильным релизом (1.0.5 вроде) тоже не получилось "забутить" камушек. Коллеги, пожалуйста, распишите алгоритм действий записи bootloader`a в Mega328 подробно, как для чайника или, что лучше, для идиота. Заранее благодарен.
     
  9. так расписано в сети подробней некуда.
    в уну заливается ArduinoSPI
    из уны берется MOSI, MISO и SCK и втыкается в атмегу на её SPI (17,18,19 ноги), питание и общий в 7,8, ресет (1 нога) атмеги втыкаем в 10 выход уны.
    ну и про кварц на 16 мгц и два конденсатора на 10-22 пики не забываем..

    в блокноте выбираем программатор ArduinoSPI, выбераем плату, в которой используется 328 камень, компорт и заливаем загрузчик, всё
     
    Megakoteyka и Desert Ops нравится это.
  10. Airbus

    Airbus Радиохулиган Модератор

    Читайте НАШ форумЯ уже 100 раз писал во всех темах что и как например в соседней теме http://tinyurl.com/ooq894t
     
  11. acos

    acos Официальный гик Администратор

    Кстати, про кварц.
    Все хочу попробовать прошить сначала bootloader а затем фьюзы, напрямую батничком из дудки. При таком варианте вроде и кварц не нужен. После прошивке фьюзов может и ругнётся в конце, при проверке, но в итоге должно заработать. Или я не прав?
     
  12. Unixon

    Unixon Оракул Модератор

    Только без кварца он после прошивки фьюзов перестанет отзываться. А так да, можно.
     
  13. acos

    acos Официальный гик Администратор

    Вот мой батничек для записи бутлоадера с Arduino ISP. Сначала шьется бут, потом фьюзы. Кто будет пользоваться - обратите внимание на пути - у меня x86. Ну и ком порт естественно свой выставлять нужно.
    По сути — то же самое, что делает Arduino IDE при записи бута, за исключением того, что фьюзы пишутся в конце, поэтому кварц при записи не нужен.
    Попробовал залить на atmega328p без кварца - всё залилось, завелось на ардуине и даже не ругнулось почему-то
     

    Вложения:

    • avrdudeprog.zip
      Размер файла:
      1,4 КБ
      Просмотров:
      980
    Последнее редактирование: 26 мар 2014
  14. Airbus

    Airbus Радиохулиган Модератор

    Я так понял фьюзы отдельно прошивать не надо?Всё в НЕХ файле?
     
  15. acos

    acos Официальный гик Администратор

    Нет, фьюзы пишутся отдельно.
    Сам батник выглядит так:
    Код (Text):

    set comport=COM7

    "C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avrdude" -C "C:\Program Files (x86)\Arduino/hardware/tools/avr/etc/avrdude.conf" -p atmega328p -c avrisp -P %comport% -b 19200 -Uflash:w:optiboot_atmega328.hex:i -Ulock:w:0x0F:m

    "C:\Program Files (x86)\Arduino/hardware/tools/avr/bin/avrdude" -C "C:\Program Files (x86)\Arduino/hardware/tools/avr/etc/avrdude.conf" -p atmega328p -c avrisp -P %comport% -b 19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m


    ping -n 105 127.0.0.1 > NUL

     
    set comport=COM7 - это просто переменная, куда мы пишем свой номер COM-порта

    Вторая строчка, вот с этим «Uflash:w:eek:ptiboot_atmega328.hex» — шьёт сам hex, это отдельная операция. После неё дудка завершает работу, и запускается второй раз в третьей строчке
    Третья строчка - прошивка фьюзов. «-Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m» — это они и есть. Всё остальное - просто пути до дудки и её настройки. Про них можно тут почитать http://www.nongnu.org/avrdude/user-manual/avrdude_4.html#Option-Descriptions

    Arduino IDE при прожиге бутлоадера сначала шьёт фьюзы, затем хекс. (Дальше просто домыслы — лень досконально проверять, но как-то так всё и происходит) После прошивки фьюзов дудка завершает работу, отпускает reset и контроллер ребутится, запускаясь с новыми настройками - тактирование от внешнего кварца и всё такое. Если кварца нет, то мы приплыли - контроллер не запустится и ISP не будет работать, hex не прошить.
    (Лирическое отступление) Контроллер с завода идёт с тактированием от внутреннего генератора на 8 мГц с предделителем на 8, итого 1 мГц. Если сначала прошить hex, то всё ок - он прошьётся и всё хорошо. Фьюзы будут старые и второй раз для прошивки фьюзов он нормально запустится и ISP будет работать. После прошивки фьюзов (если всё ок) контроллер можно смело втыкать в плату Arduino Uno (где кварц уже есть)

    ну и пинг тут только для того, чтобы было время потупить в вывод сообщений avrdude, иначе терминал закроется сразу, и толком не узнать - успех или нет
     
    Последнее редактирование: 26 мар 2014
  16. Airbus

    Airbus Радиохулиган Модератор

    А! Ну я так и делал только прошивал программатором Громова сначала НЕХ потом фьюзы на Ардуинке уже с кварцем. С дудкой както сложно батники всякие.Я пишу нижний фьюз и верхний.
     
  17. Airbus

    Airbus Радиохулиган Модератор

    Кстати фьюзы можно и не шить оставить дефолтные (или магазинные или фабричные кому как :))И кварц не нужен Можно работать на внутреннем Гене.Только плату надо выбирать 8мГц.Две доп ножки выводов появятся.;)
     
  18. acos

    acos Официальный гик Администратор

    А опыт есть? нормально в этом случае скетчи заливаются? UART работает? А то на UNO например, IDE заливает постоянно на 115200 бод — не уверен, что внутренний генератор такую скорость осилит.
    И да, чтоб 8 мГц получить, всё равно нужно фьюзы перешивать - как минимум CKDIV8 сбросить.
     
  19. Airbus

    Airbus Радиохулиган Модератор

    Пробовал всё работает USART только иногда глючит вместо символов кракозяблы вылезают даже на 9600.Это от плохой термостабильности первый раз с таким столкнулся когда програмный USART на Тини13 гонял.Но если проц руками не трогать не дышать на него то работать будет.И конечно CKDIV8 сбросить.А логика нормально работает всё пищит мигает включается выключается.Но это если так-побаловаться.У меня просто кварца на 16 мГц сразу не нашлось вот и пришлось мутить теперь с кварцем всё как надо.
     
    Последнее редактирование: 28 мар 2014
  20. Desert Ops

    Desert Ops Нерд

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