Помогите. Arduino Leonardo, не входит в режим bootloader.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

Здравствуйте! Помогите разрешить ситуацию.
Дело вот в чем:
Моя задача - прошить плату Arduino Leonardo HEX файлом.

1. Подключаю Arduino Leonardo к компьютеру. В диспетчере задач ардуино отображается.

2. Запускаю Xloader для прошивки HEX файлом, произвожу настройки программы.

3. Чтобы войти в режим bootloader, нажимаю кнопку reset на плате. При этом режим bootloader не запускается, в диспетчере задач ничего нового не отображается (слышу звук отключения устройства, и сразу же звук подключения устройства, диспетчер задач обновляется, но показывает что Arduino в том же порту где и был). Xloader пишет - "Upload failed". 

При этом через Arduino IDE скетчами плата прошивается, все хорошо. Пробовал делать reset замыкая пины reset и ground - не помогло. 

Можно ли, и как добиться от платы режима bootloader?

https://ibb.co/CH6kDHD

https://ibb.co/JzkP7NX

https://ibb.co/X7f6XqQ

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Если через IDE заливаются - значит всё с платой хорошо. Что то не то с настройками программатора.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

Можно ли скорректировать настройки программатора так чтобы все заработало и как это сделать?

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

Komandir пишет:

Если через IDE заливаются - значит всё с платой хорошо. Что то не то с настройками программатора.

Можно ли скорректировать настройки программатора так чтобы все заработало и как это сделать?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

AlexWolfson, тут весь секрет в том, какой ком-порт указать в настройках прошивалки. Тот что у вас на скриншоте -это порт _после_ загрузки бутлоадера. А в момент загрузки присваивается другой номер. Имено его нужно указывать как порт прошивки.  Узнать его можно в Arduino IDE,  если включить в настройках IDE вывод полного лога загрузки, и попробывать что угодно залить. Ну или можно попробовать узнать назначенный бутлоадеру порт каким нибудь USB-монитором, типа USBDeview, который запоминает все устройства, что были подключены даже кратковременно.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

Да я знаю, что в программе прошивалке (я использую прогу Xloader), необходимо указать порт который присвоен режиму bootloader. Я узнал какой номер порта присвоен bootloader-у, когда прошивал плату прогой Arduino IDE, я смотрел в диспетчер устройств и увидел что это 10 порт, причем режим bootloader в момент прошивки родным софтом держится буквально долю секунды и сразу же закрывается.

Основная проблема состоит в том, что режим bootloader должен запускаться и длиться 8 секунд нажатием кнопки reset на самой плате Arduino, а у меня он этой кнопкой не запускается. Назначить правильный порт в программе прошивалке можно только после того как плата войдет в режим Bootloader, а она в него после нажатия кнопки не входит.

Я провел эксперимент, на тему - "будет, ли отображаться правильный порт для прошивки в программе прошивалке, если я буду прошивать плату прогой Arduino IDE", итог - в прошивалке правильный порт не отобразился. Но подчеркну что режим bootloader открылся и закрылся практически мгновенно, предполагаю что прога прошивалка не успела обновить список com портов. Скриншоты эксперимента прилагаю.

https://ibb.co/gFKz4ZB

https://ibb.co/3yPBfFP

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

AlexWolfson пишет:

Основная проблема состоит в том, что режим bootloader должен запускаться и длиться 8 секунд нажатием кнопки reset на самой плате Arduino, а у меня он этой кнопкой не запускается.

Я не самый большой знаток этого бутлоадера, поэтому могу ошибаться. Насколько я помню 8 секунд бутлоадер  ожидает USB-хендшейка, т.е. просто ждёт ответа компа после своего сброса.  Ответил компьютер через 10 миллисекунд - ожидание кончилось.  Поэтому к заливке через бутлоадер эта цифра  не имеет отношения.

AlexWolfson пишет:

Назначить правильный порт в программе прошивалке можно только после того как плата войдет в режим Bootloader, а она в него после нажатия кнопки не входит.

Ну вот, в правильно поставленном вопросе содержится 90% ответа. Не используйте эту программу. Я шью из командной строки. Сделайте вот такой батничек:

mode COM8 BAUD=1200
echo >>COM8
pause
avrdude -v -patmega32u4 -cavr109 -PCOM10 -b57600 -D -Uflash:w: c:\temp\test.hex:i

Этот батник перегрузит МК, и встанет на паузу. Как только винда трямкнет найдя порт бутлоадера жмёте любую кнопку, и начинается заливка. Я так заливал готовый хекс, это точно работает.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

Сработало!!!)

Все получилось, только с одним нюансом:
1. Я сделал bat файл как вы и сказали, только в конце кода указал путь к моему hex файлу (я правильно понял, в конце вашего кода c:\temp\test.hex - это путь к hex файлу? я заменил его на свой)

2. Запустил bat файл -> открылась командная строка -> услышал сигнал windows о подключении устройства -> увидел в диспетчере задач что плата вошла в режим bootloader -> нажал любую клавишу и командная строка закрылась, при этом плата не прошилась, но режим bootloader длился как и должен - 8 секунд.

В итоге bat файлом плата не прошилась, НО, я поступил следующим образом:
1. Запустил bat файл -> открылась командная строка -> услышал сигнал windows о подключении устройства -> увидел в диспетчере задач что плата вошла в режим bootloader -> Запустил прошивалку Xloader, в ней назначил правильный порт для прошивки и все прошилось и заработало как надо!!!)

Скажите пожалуйста что я сделал не так, прошивая плату вашим методом, почему она не прошилась bat файлом?

Скриншот кода прилагаю https://ibb.co/Lkx1nqC П.С. Bat и hex файлы лежали в одной папке, если это имеет значение.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

AlexWolfson , это надо смотреть сообщение дудки, на что она ругалась когда отказалась  шить.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Видимо ваш лоадер был не на COM10 - вот батник и не сработал.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

"сообщение дудки" - что это? Где это можно посмотреть? 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018
avrdude -v

 

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

Когда я прошивал плату через прогу Xloader, я указал порт COM10 - все прошилось. В коде батника, насколько я понимаю так же был указан именно COM10 порт, поправьте пожалуйста если я ошибаюсь, потому как в коде я пока что не сильно разбираюсь. https://ibb.co/Cb1g3QV

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

AlexWolfson, я уже написал же. -avrdude при работе всю информацию выводит в консоль, вам нужно просто прочитать чем он мотивирует отказ прошивать. Скорее всего просто не вовремя сняли с паузы, когда ком порт 10 ещё не был готов.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

BOOM пишет:

avrdude -v

 


Я правильно вас понял: используя команду "avrdude -v" можно посмотреть лог выполненной программы прошивания?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

AlexWolfson, ещё раз по буквам - при работе avrdude  УЖЕ всё выводит. Т.е. вам не нужно делать абсолютно ничего, просто прочитать его сообщение.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

То есть, вся информация выводится там же в командной строке? Если так - я не успеваю ее просмотреть, после запуска bat файла, открывается командная строка, происходит прошивка, и командная строка сразу же закрывается, это происходит очень быстро, не успеваю заметить что написано в консоли.

Разрешите задать еще один вопрос. Во первых благодарю, за ваш совет, он оказался действенным и реально мне помог, спасибо! Вопрос: Как только я прошил плату она перестала отображаться в COM порту, я могу ее увидеть в панели управления https://ibb.co/QfDFdbt и в диспетчере устройств https://ibb.co/604TrkP как USB устройство ввода (одно из устройств из списка), но теперь плату не видит Arduino IDЕ. Как сделать так чтобы плата снова отображалась в COM порту и чтобы ее увидел Arduino IDE, чтобы снова ее прошить?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

AlexWolfson, (1) что бы окно не зарывалось сразу нужно в конце написать ещё один раз pause (2) судя по всему ваша прошивка затёрла бутлоалдер. Теперь только программатором перешивать.

AlexWolfson
Offline
Зарегистрирован: 05.09.2019

1. Понял, спасибо!
2. Этого я опасался, ну да ладно, сделаю программатор при надобности.

Еще раз благодарю за ваши советы - они мне очень помогли!!!

Vovanes20
Offline
Зарегистрирован: 06.01.2021

Может кому-то мой ответ пригодится. Случайно нашел этот форум когда столкнулся с такой же проблемой, также пробовал замыкать rst и gnd, помогло быстрое двойное нажатие кнопки

Faeb
Offline
Зарегистрирован: 08.04.2021

Двойное нажатие ресет, тоже помогло, долго мучился