Не могу загружать шестнадцатеричные файлы вне Arduino IDE на Pro Micro
У меня странная проблема. Я пытаюсь загрузить файл .hex в свой прекрасный Arduino Pro Micro, но не могу этого сделать. Если я использую Arduino IDE, он отлично работает и загружает скетч. Однако, если я попытаюсь использовать avrdude из терминала, я получу:
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: programmer did not respond to command: leave prog mode
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: programmer did not respond to command: exit bootloader
Моя командная строка:
avrdude -patmega32u4 -cavr109 -P/dev/ttyACM0 -t
и полный вывод:
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Found programmer: Id = ""; type =
Software Version = .; Hardware Version = .
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Found programmer: Id = ""; type =
Software Version = .; Hardware Version = .
avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: programmer did not respond to command: leave prog mode
avrdude: butterfly_recv(): programmer is not responding
avrdude: error: programmer did not respond to command: exit bootloader
Спасибо за любую помощь, это очень ценится.
--Доминик
@KilowattLaser, 👍1
Обсуждение2 ответа
Лучший ответ:
В отличие от 328P и подобных плат, 32U4 не имеет аппаратного метода запуска сброса для входа в загрузчик.
На платах с интерфейсом UART -> USB микросхема интерфейса USB вручную переключает контакт RESET для активации загрузчика. Без этого чипа сброс невозможен.
Поэтому пришлось изобрести другой метод. Этот метод предполагает открытие последовательного порта на скорости 1200 бод и немедленное его закрытие. Это вызывает перезагрузку загрузчика.
Среда разработки Arduino вручную выполняет эту задачу, когда вы нажимаете кнопку загрузки. Это не то, что avrdude умеет делать.
Поэтому вам придется придумать какой-нибудь способ открытия последовательного порта на скорости 1200 бод непосредственно перед запуском avrdude. Конечно, это означает, что устройство последовательного интерфейса исчезает на короткое время, пока чип перезагружается и входит в загрузчик, поэтому вам необходимо обеспечить задержку между методом сброса и вызовом avrdude — задержку, достаточную для вашего ОС переопределяет чип, но не настолько долго, чтобы время ожидания загрузчика истекло.
Отличный! Спасибо. Я перезагрузил плату вручную, чтобы проверить ее, и я смог нормально загрузить свой шестнадцатеричный файл., @KilowattLaser
У меня была странная проблема с платами Leonardo и Uno. Я даже использовал Arduino IDE (v1.8.5) для загрузки кода. В некоторых экстремальных обстоятельствах один из платы даже не были указаны в списке последовательных портов (Инструменты->Порт)
После многих попыток я просто записал загрузчик с помощью другого Uno, и это решило проблему!
Мне до сих пор неясно, что произошло, но проблема была вызвана считывателем RFID-карт, использующим SPI (выводы ICSP на плате). Устройство чтения карт (PN532) отправляло данные в Arduino, когда либо я загружал код, либо плата загружалась.
ОБНОВЛЕНИЕ, январь 2020 г.
По прошествии времени и многих попыток я понял, что доступ к Arduino UNO через интерфейс ISP во время загрузки кода невозможен. Модуль PN532 произвольно массировал UNO, когда я очистил микроконтроллер, который испортил код.
Какой загрузчик и какая версия? Есть несколько загрузчиков. Можете ли вы уточнить? Вы пользовались официальными? Или [Optiboot](https://www.instructables.com/id/Atmega328P-PU-Bootloader-Optiboot-Burning-Guide/)?, @Peter Mortensen
@PeterMortensen, я не помню, какой загрузчик был самым последним в 2017 году, но это точно была официальная версия, доступная в то время в Arduino IDE., @Adam Bubela
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Загрузить код на Arduino Leonardo с помощью командной строки
- Arduino Pro Micro не распознается ПК
- Arduino Nano (клон) не распознается
- Где параметры avrdude определяются в Arduino IDE?
- Проблема с загрузкой скетча в Леонардо
- Ошибка загрузки OSX: avrdude: ser_open(): can't open device "/dev/cu.mydev" : Resource Busy
Программист ошибается. У вас нет загрузчика avr109, включите подробную загрузку из IDE и скопируйте и вставьте использованную команду., @Avamander
Это то, что я сделал. Кроме того, на микросхеме моего Arduino прямо написано «MEGA32u4»…, @KilowattLaser
К сожалению, я прочитал это как Pro Mini, а не как Pro Micro., @Avamander