Не работает optiboot-подобные загрузчики на Arduino Mini Pro 328 16МГц/5в
- Войдите на сайт для отправки комментариев
Здравствуйте.
Проблема с optiboot подобными загрузчиками на Arduino Mini Pro 328 16МГц/5в
У меня есть 2 платы, купленные примерно в одно время у разных продавцов на ebay.
В одну из них заливается скетч ArduinoISP, флаг USE_OLD_STYLE_WIRING установлен. Эту плату я буду называть программатор, вторую - пациент. Если платы поменять ролями, то все полностью воспроизводится так же. К компу это все подключается через FTDI-usb конвертер.
Платы соедины по классической схеме SPI-SPI, питание, земля, D10 - Rst.
К программатору подключены LED-ы. Выглядит так:
После прошивки загрузчика optiboot через программатор, через программатор же в пациента успешно загружаются и работают скетчи, но невозможно загрузить напрямик, через UART - FTDI-usb, ошибка:
...
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x43
...
Разные скорости пререпробованы на всякий случай (115200, 57600 и т.д.).
Залитые через программатор скетчи работают, в том числе пишут успешно в Serial сообщения на любой скорости.
Если прошить загрузчик "Arduino Pro or Pro Mini" из IDE, то пациент снова прошивается непосредственно через UART на 57600.
Поиск, в том числе на английском языке, не дал результатов. Данная ошибка гуглится во множестве проблем, но такой же как будто ни у кого не было.
Испробованы загрузчики:
- последний optiboot 6.2
- minicore
- a328p_16MHz_ff_de_5.hex из конструктора
- свежескомпилированный optiboot из исходников с github
- Arduino Nano из IDE
- Arduino/Genuino Uno из IDE
- Arduino Ethernet из IDE
Фьюзы перепроверены через калькулятор http://www.engbedded.com/fusecalc/
- lock у Pro Mini 0x3F у optiboot 0x2f - попробованы оба
- low у Pro Mini 0xFF у optiboot 0xF7, разница в сбросе CKSEL3 - попробованы оба
- high у Pro Mini 0xDA у optiboot 0xDE, изменен размер загрузчика на 256 слов, оставляем
- ext у Pro Mini 0xFD у optiboot 0x05, одинаковы в задействованных 3-х битах и эквивалентны,
на всякий случай попробованы оба
Как я говорил, две платы менялись местами, то есть подопытная становилась программатором и наоборот, все воспроизводится в точности.
Тоже самое под Windows и под linux, версия IDE последняя на текеущий момент 1.8.5
была похожая проблема, но на Arduino Nano, прошил загрузчик optiboot_atmega328.hex через AVRDUDE.
попробуйте.
Все указанные загрузчики прошивал и через IDE, и через коммандную строку, и в Linux, и в Windows. Все тоже самое.
Например вот так:
avrdude ... -U flash:w:a328p_16MHz_ff_de_5.hex -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
И вот так:
avrdude ... -e -Ulock:w:0x3F:m -Uefuse:w:0x5:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m
avrdude ... -U flash:w:a328p_16MHz_ff_de_5.hex:i -Ulock:w:0x0F:m
я вот так грузил через UsbASP - есть у вас такой? попробуйте
1. Получается ли загрузить и использовать какой-либо другой загрузчик?
2. если нет на 1, то загрузи через программатор какой-либо пример работы с сериал и проверь работу своего юсб-сериал конвертера.
расскажи о результате.
я вот так грузил через UsbASP - есть у вас такой? попробуйте
оффтоп:
смешной ты! ТС написал, что умеет пользоваться командной строкой и Линухом, а ты ему суешь какую-то убогую виндусятную муть.... гы!
Все загрузчики, которые я пробовал перечислены в первом посте. Проблема на всех optiboot-подобных, в том числе комплектные из IDE, бинарник с гитхаба, свеже-скомпиленный оттуда же, из форка minicore.
При optiboot в пациенте, любые скетчи загружаются в пациента через программатор, запускаются и работают. Но не загружаются через конвертер и UART непосредственно, без программатора. Через подключенный конвертер работает вывод в Serial 115200 и 57600, все отображается в монитторе порта.
С загрузчиком из IDE для "Arduino Pro or Pro Mini" проблемы нет, я могу залить его через программатор в любое время после экспериментов с optiboot, а после этого загружать любые скетчи через UART.
оффтоп:
смешной ты! ТС написал, что умеет пользоваться командной строкой и Линухом, а ты ему суешь какую-то убогую виндусятную муть.... гы!
а вдруг поможет :)
в командной троке тоже можно допустить ошибку....
Спасибо, но эту прогу я попробовал между IDE и коммандной строкой, просто не стал о ней писать, т.к. это просто надстройка над avrdude. Единственно, мне не понятно зачем считываются калибровочные ячейки генератора, если они потом нигде не используются.
С заменой загрузчика проблем нет, он прошивается успешно через программатор любым способом. Проблема в том, что в пациента с замененным загрузчиком я не могу загружать скетчи без программатора.
bettisar - смешное спрошу - вы помните, что прошивка программатором стирает загрузчик? - то есть после любой прошивки скетча через программатор пробовать загрузчик бессмысленно, его там уже нет
Точно помню, что с оптибутом проблем очобых небыло.
заливался в ардуинку файл optiboot_atmega328.hex из сборки и в boards.txt только менял частоту.
единственное, что было неудобно использовать ардуинки со старым бутлоадером.
но все решалось созданием нового пункта в boards.txt
Вы закрали в меня сомнения) Сейчас снова перепроверил, нет, все правильно.
Я записываю загрузчик optiboot, вынимаю пациента из монтажки, подключаю к FTDI-usb - не заливаются (скорость 115200)
Если я записываю загрузчик MiniPro из IDE, вынимаю, подключаю, скетчи заливаются (57600).
Скетчи через программатор я заливал просто для проверки работоспособности.
Я записываю загрузчик optiboot, вынимаю пациента из монтажки, подключаю к FTDI-usb - не заливаются (скорость 115200)
Если я записываю загрузчик MiniPro из IDE, вынимаю, подключаю, скетчи заливаются (57600).
для чистоты эксперимента напрашивается и для оптибута установить скорость загрузки 57600. Насколько я помню, для этого надо перекомпилировать загрузчик, в готовом скорость не поменять.
В инетах люди жаловались, что на 115200 загрузка неустойчива.
тоже были проблемы с оптибутом, залил загрузчик от UNO и проблем нет
тоже были проблемы с оптибутом, залил загрузчик от UNO и проблем нет
"загрузчик от Уно" = оптибут, в чем легко убедиться, заглянув внутрь boards.txt
тоже были проблемы с оптибутом, залил загрузчик от UNO и проблем нет
"загрузчик от Уно" = оптибут, в чем легко убедиться, заглянув внутрь boards.txt
оптибут брал на гихабе, почему он криво встает или чем отличается от UNO не знаю
bettisar, а когда вы заливали все эти загрузчики, то какую плату потом выбирали при последующей попытке работать через бутлоадер?
для чистоты эксперимента напрашивается и для оптибута установить скорость загрузки 57600. Насколько я помню, для этого надо перекомпилировать загрузчик, в готовом скорость не поменять.
В инетах люди жаловались, что на 115200 загрузка неустойчива.
К сожалению не помогло. Коротко:
Компиляция: make BAUD_RATE=57600 atmega328
Полученный optiboot_atmega328.hex переименовал в optiboot_atmega328_57600.hex
Загрузчик:
avrdude -Cavrdude.conf -v -patmega328p -cstk500v1 -PCOM51 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x5:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m
avrdude -Cavrdude.conf -v -patmega328p -cstk500v1 -PCOM51 -b19200 -Uflash:w:optiboot_atmega328_57600.hex:i -Ulock:w:0x0F:m
успешно
Вынимаю пациента, подключаю напрямую к FTDI-usb, заливка скетча:
avrdude -Cavrdude.conf -v -patmega328p -carduino -PCOM51 -b57600 -D -Uflash:w:Blink.ino.hex:i
Результат тот же,
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x43
тоже были проблемы с оптибутом, залил загрузчик от UNO и проблем нет
UNO из IDE тоже пробовал, еще в самом начале.
Из коммандной строки удобнее, если через IDE, то в boards.txt добавил свою секцию, ее и выбираю при записи загрузчика и потом при заливке скетча:
Из коммандной строки удобнее, если через IDE, то в boards.txt добавил свою секцию, ее и выбираю при записи загрузчика и потом при заливке скетча:
А если в IDE выбрать ARDUINO NANO?
А если в IDE выбрать ARDUINO NANO?
Проблема полностью воспроизводится.
Добрый день!
Optiboot уже 8.0 и он работает на ArduinoProMini 8Mhz и 16Mhz один и тот-же бинарник, только профили в boards.txt разные, на 57600bps и 115200bps соответственно. Прошиваю успешно через USBASP v2.0 со стоковым firmware с JP3 slowClock замкнутым, через AVRDuess 2.6 ( avrdude 6.3 ) игнорируя warning: cannot set sck period. please check for usbasp firmware update.
У кого-нить получалось заставить 8Mhz на 115200bps заливаться?
Спасибо. Попробовал новую версию. Проблема полностью воспроизводится. Видимо у меня какие-то кривые экземпляры.
bettisar, вряд ли дело в экземплярах. Очевидно, что каждый раз вы совершаете одну и ту же ошибку. (1) Поставьте чистую IDE, если работаете под виндой, то нужно обязательно стереть папки ардуино в юзер профиле, иначе все старые настройки подтянутся снова. (2) Убедитесь, что у вас именно 16-мегагерцовая плата, есть масса вариантов как это сделать самый достоверный - включить фьюз CKOUT, и на PB0 измерить тактовую частотометром (2) выберите при заливке лоадера "Уно", и попробуйте загрузить в плату что-то через бутлоадер именно как в "уно".
Это делал в первую очередь, на 2-х разных компьютерах под Windows и 2-х под linux.
подумаю, как это можно сделать, спасибо за наводку. единственное, что обе платы после любых экспериментов возвращаются в исходное рабочее состояние прошивкой загрузчика Arduino Pro or Pro Mini ATmega328P (5V, 16 MHz) из комплекта IDE.
Тут не совсем понял, что и в какой последовательности сделать.
обе платы после любых экспериментов возвращаются в исходное рабочее состояние прошивкой загрузчика Arduino Pro or Pro Mini ATmega328P (5V, 16 MHz) из комплекта IDE.
Это красноречиво говорит о том, что с МК всё в порядке. Но нужно точно знать что это именно мега328p и что она завелась именно на 16 МГц. Именно эти 2 факта позволяют залить стандартный оптибут.
Тут не совсем понял, что и в какой последовательности сделать.
Забудьте что у вас промини, делайте всё, словно у вас Уно.
Только что попробовал, все работает.
оптибут установил отсюда https://github.com/Optiboot/optiboot/releases
через usbasp залил файл optiboot_atmega328.hex
плата такая
При заливке скетчей из Arduino IDE настройки такие:
скетч проверки wdt теперь работает корректно
фьюзы не трогал и они установлены так:
Я поправил скетч проверки, чтобы без танцев с бубном можно было перешить при неправильном лодыре
Загадочно, что Optiboot у вас заработал на ProMini c High Fuse = 0xDA ( я 0xDE выставлял )
Еще раз перепроверил другой оболочкой. Так и стоят фьюзы.
И ардуинку можно теперь шить как arduino uno. Только что проверил.
Еще раз перепроверил другой оболочкой. Так и стоят фьюзы.
И ардуинку можно теперь шить как arduino uno. Только что проверил.
Вы у себя 1,5К флэша украли. DE правильный для оптибута.
Еще раз перепроверил другой оболочкой. Так и стоят фьюзы.
И ардуинку можно теперь шить как arduino uno. Только что проверил.
Вы у себя 1,5К флэша украли. DE правильный для оптибута.
Да, верно :) Не обратил на это внимание.
https://github.com/MCUdude/MiniCore
всё отлично работает. Установите и будет Вам счастье.
Согласно документации на ATMega при скорости 115200 кол-во ошибок =0.
(рекомендую вкл. внутренний подтягивающий резистор на RX для исключения ложного срабатывания при отсутствии модуля ТТL com-USB)
Best regards.
Может кому полезно будет, но у меня была аналогичная проблемма как и у ТС (точно 1 в 1), и с pro mini и с nano...
Все решилось просто, обновлением прошивки usbasp до последней версии, затем после прошивки в ардуино загрузчика optiboot - заработала загрузка через usbttl переходник прямо из ардуины.
Если у вас при прошивке avrdude пишет: warning: cannot set sck period. please check for usbasp firmware update. - у вас старая прошивка.
Последнюю прошивку можно взять тут: https://www.fischl.de/usbasp/
И да, я в отличии от ТС - прошивал китайским usbasp программатором и проблема была такая же как и у автора, видимо ArduinoISP - не совсем корректно прошивает optoboot. Лучше пользоваться usbasp программатором с последней прошивкой.
Для тех, кто наткнется на тему, проблема решена.
Все дело оказалось в преобразователе UART - FTDI - usb
Купил другой на основе CH340G, все сразу получилось.
Тему можно переименовывать в [Решено]
Здравствуйте!
Поделитесь пожалуйста восьмым optiboot_atmega328_57600.hex
Спасибо!
Поделитесь пожалуйста восьмым optiboot_atmega328_57600.hex
Загрузчики лежат тут:
https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders
Если там нет того Хекса, что вам надо - там есть исходник, скомпилируйте сами
Я не умею компилировать. Поэтому и попросил.
Ссылки я могу и сам найти.
Ссылки я могу и сам найти.
это вместо благодарности?
Может я должен был скомпилироать этот оптибут для вашей светлости?
Спасибо за попытку, но вы мне ничем не помогли, сказав очевидные вещи. В ветке есть люди у которых есть этот бутлоадер, я обращался к ним, а не к вам. Мне нужен файл, а не ссылки и советы, если бы мне нужны были ссылки, я бы попросил ссылки.
Вы считаете, что я сам могу откомпилировать бутлоадер, но при этом не могу найти где взять исходники? Это несколько абсурдно, на мой взгляд. Ситуация, ровно противоположная. Набрать в Гугле "оптибут", я точно догадаюсь самостоятельно.
Здравствуйте!
Поделитесь пожалуйста восьмым optiboot_atmega328_57600.hex
Спасибо!
Восьмым это имеется ввиду на 8MГц ?
нижний вроде оно 8 мегагерц 57к
Вы считаете, что я сам могу откомпилировать бутлоадер, но при этом не могу найти где взять исходники? Это несколько абсурдно, на мой взгляд. Набрать в Гугле "оптибут", я точно догадаюсь самостоятельно.
не более абсурдно, чем иметь исходник и не найти в гугле инструкции, как его скомпилировать.
Несмотря на свой апломб, пользоваться поиском вы все-таки не умеете, иначе нашли бы вот это:
https://github.com/Optiboot/optiboot/wiki
где есть и нужная вам восьмая версия. и инструкции по компиляции
Хотя думаю, что дело не в поиске - вы просто типичный халявщик, ждете того, кто все сделает за вас.
Восьмым это имеется ввиду на 8MГц ?
нет, это восьмая версия, кмк
Восьмым это имеется ввиду на 8MГц ?
нет, это восьмая версия, кмк
восьмой версии у меня нету, только та, что в MiniCore )))
Поискал тщательнее, оказалось, что есть )))
Да, имел в виду восьмую версию.
Izvekoff Спасибо большое. Вопрос закрыт!
Вы считаете, что я сам могу откомпилировать бутлоадер, но при этом не могу найти где взять исходники? Это несколько абсурдно, на мой взгляд. Набрать в Гугле "оптибут", я точно догадаюсь самостоятельно.
не более абсурдно, чем иметь исходник и не найти в гугле инструкции, как его скомпилировать.
Несмотря на свой апломб, пользоваться поиском вы все-таки не умеете, иначе нашли бы вот это:
https://github.com/Optiboot/optiboot/wiki
где есть и нужная вам восьмая версия. и инструкции по компиляции
Хотя думаю, что дело не в поиске - вы просто типичный халявщик, ждете того, кто все сделает за вас.
Вы простите, но вы пишите полную чушь.
В следующий раз, когда придете к врачу, надеюсь он вам тоже скажет - вы типичный халявщик, идите домой и нагуглите инструкцию как вылечить ваш энцефаломиелит.
Совершенный идиотизм, предлагать кому-то компилить что-то, когда человек не имеет ни малейшего отношения к этой тематике.
Удачи.
восьмой версии у меня нету, только та, что в MiniCore )))
Поискал тщательнее, оказалось, что есть )))
уверены, что она на 57600 ? - по умолчанию оптибут собирается на 115200. А то ведь этот вежливый товарищ сейчас вернется с воплями, что ему бракованый товар подсунули :))
Совершенный идиотизм, предлагать кому-то компилить что-то, когда человек не имеет ни малейшего отношения к этой тематике.
Удачи.
если вы "не имеете ни малейшего отношения к тематике" - откуда такие точные запросы. что вам нужно - именно восьмая версия и именно 57600 ? я вот только при поиске ответа на ваш вопрос узнал. что у оптибута несколько версий - а так бы и жил в неведении. пользуя первый попавшийся :)
а ведь я как раз "имею отношение к тематике"...
Видимо потому, что умею пользоваться поиском лучше вас )))))
На восьмую версию, даже в этой ветке есть ссылка, вы бы почитали внимательно.
Обстоятельства бывают разные. Мне помогает опытный товарищ с тем что нужно делать, но компилить бутлоадеры, он тоже не готов.