Помогите. Arduino Leonardo, не входит в режим bootloader.
- Войдите на сайт для отправки комментариев
Здравствуйте! Помогите разрешить ситуацию.
Дело вот в чем:
Моя задача - прошить плату Arduino Leonardo HEX файлом.
1. Подключаю Arduino Leonardo к компьютеру. В диспетчере задач ардуино отображается.
2. Запускаю Xloader для прошивки HEX файлом, произвожу настройки программы.
3. Чтобы войти в режим bootloader, нажимаю кнопку reset на плате. При этом режим bootloader не запускается, в диспетчере задач ничего нового не отображается (слышу звук отключения устройства, и сразу же звук подключения устройства, диспетчер задач обновляется, но показывает что Arduino в том же порту где и был). Xloader пишет - "Upload failed".
При этом через Arduino IDE скетчами плата прошивается, все хорошо. Пробовал делать reset замыкая пины reset и ground - не помогло.
Можно ли, и как добиться от платы режима bootloader?
Если через IDE заливаются - значит всё с платой хорошо. Что то не то с настройками программатора.
Можно ли скорректировать настройки программатора так чтобы все заработало и как это сделать?
Если через IDE заливаются - значит всё с платой хорошо. Что то не то с настройками программатора.
Можно ли скорректировать настройки программатора так чтобы все заработало и как это сделать?
AlexWolfson, тут весь секрет в том, какой ком-порт указать в настройках прошивалки. Тот что у вас на скриншоте -это порт _после_ загрузки бутлоадера. А в момент загрузки присваивается другой номер. Имено его нужно указывать как порт прошивки. Узнать его можно в Arduino IDE, если включить в настройках IDE вывод полного лога загрузки, и попробывать что угодно залить. Ну или можно попробовать узнать назначенный бутлоадеру порт каким нибудь USB-монитором, типа USBDeview, который запоминает все устройства, что были подключены даже кратковременно.
Да я знаю, что в программе прошивалке (я использую прогу Xloader), необходимо указать порт который присвоен режиму bootloader. Я узнал какой номер порта присвоен bootloader-у, когда прошивал плату прогой Arduino IDE, я смотрел в диспетчер устройств и увидел что это 10 порт, причем режим bootloader в момент прошивки родным софтом держится буквально долю секунды и сразу же закрывается.
Основная проблема состоит в том, что режим bootloader должен запускаться и длиться 8 секунд нажатием кнопки reset на самой плате Arduino, а у меня он этой кнопкой не запускается. Назначить правильный порт в программе прошивалке можно только после того как плата войдет в режим Bootloader, а она в него после нажатия кнопки не входит.
Я провел эксперимент, на тему - "будет, ли отображаться правильный порт для прошивки в программе прошивалке, если я буду прошивать плату прогой Arduino IDE", итог - в прошивалке правильный порт не отобразился. Но подчеркну что режим bootloader открылся и закрылся практически мгновенно, предполагаю что прога прошивалка не успела обновить список com портов. Скриншоты эксперимента прилагаю.
https://ibb.co/gFKz4ZB
https://ibb.co/3yPBfFP
Основная проблема состоит в том, что режим bootloader должен запускаться и длиться 8 секунд нажатием кнопки reset на самой плате Arduino, а у меня он этой кнопкой не запускается.
Я не самый большой знаток этого бутлоадера, поэтому могу ошибаться. Насколько я помню 8 секунд бутлоадер ожидает USB-хендшейка, т.е. просто ждёт ответа компа после своего сброса. Ответил компьютер через 10 миллисекунд - ожидание кончилось. Поэтому к заливке через бутлоадер эта цифра не имеет отношения.
Назначить правильный порт в программе прошивалке можно только после того как плата войдет в режим Bootloader, а она в него после нажатия кнопки не входит.
Ну вот, в правильно поставленном вопросе содержится 90% ответа. Не используйте эту программу. Я шью из командной строки. Сделайте вот такой батничек:
Этот батник перегрузит МК, и встанет на паузу. Как только винда трямкнет найдя порт бутлоадера жмёте любую кнопку, и начинается заливка. Я так заливал готовый хекс, это точно работает.
Сработало!!!)
Все получилось, только с одним нюансом:
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 файлы лежали в одной папке, если это имеет значение.
AlexWolfson , это надо смотреть сообщение дудки, на что она ругалась когда отказалась шить.
Видимо ваш лоадер был не на COM10 - вот батник и не сработал.
"сообщение дудки" - что это? Где это можно посмотреть?
Когда я прошивал плату через прогу Xloader, я указал порт COM10 - все прошилось. В коде батника, насколько я понимаю так же был указан именно COM10 порт, поправьте пожалуйста если я ошибаюсь, потому как в коде я пока что не сильно разбираюсь. https://ibb.co/Cb1g3QV
AlexWolfson, я уже написал же. -avrdude при работе всю информацию выводит в консоль, вам нужно просто прочитать чем он мотивирует отказ прошивать. Скорее всего просто не вовремя сняли с паузы, когда ком порт 10 ещё не был готов.
Я правильно вас понял: используя команду "avrdude -v" можно посмотреть лог выполненной программы прошивания?
AlexWolfson, ещё раз по буквам - при работе avrdude УЖЕ всё выводит. Т.е. вам не нужно делать абсолютно ничего, просто прочитать его сообщение.
То есть, вся информация выводится там же в командной строке? Если так - я не успеваю ее просмотреть, после запуска bat файла, открывается командная строка, происходит прошивка, и командная строка сразу же закрывается, это происходит очень быстро, не успеваю заметить что написано в консоли.
Разрешите задать еще один вопрос. Во первых благодарю, за ваш совет, он оказался действенным и реально мне помог, спасибо! Вопрос: Как только я прошил плату она перестала отображаться в COM порту, я могу ее увидеть в панели управления https://ibb.co/QfDFdbt и в диспетчере устройств https://ibb.co/604TrkP как USB устройство ввода (одно из устройств из списка), но теперь плату не видит Arduino IDЕ. Как сделать так чтобы плата снова отображалась в COM порту и чтобы ее увидел Arduino IDE, чтобы снова ее прошить?
AlexWolfson, (1) что бы окно не зарывалось сразу нужно в конце написать ещё один раз pause (2) судя по всему ваша прошивка затёрла бутлоалдер. Теперь только программатором перешивать.
1. Понял, спасибо!
2. Этого я опасался, ну да ладно, сделаю программатор при надобности.
Еще раз благодарю за ваши советы - они мне очень помогли!!!
Может кому-то мой ответ пригодится. Случайно нашел этот форум когда столкнулся с такой же проблемой, также пробовал замыкать rst и gnd, помогло быстрое двойное нажатие кнопки
Двойное нажатие ресет, тоже помогло, долго мучился