Я не могу загрузить шестнадцатеричные файлы за пределы 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

Спасибо за любую помощь, мы очень благодарны.

- Доминик

1 голос | спросил KilowattLaser 7 MarpmMon, 07 Mar 2016 20:35:53 +03002016-03-07T20:35:53+03:0008 2016, 20:35:53

2 ответа


2

В отличие от 328P и подобных плат 32U4 не имеет аппаратного метода для запуска сброса для входа в загрузчик.

На досках с UART -> USB-интерфейс микросхемы интерфейса USB вручную переключает вывод RESET для активации загрузчика. Без этого чипа сброс не может быть выполнен.

Поэтому нужно было изобрести другой метод. Этот метод предполагает открытие последовательного порта на скорости 1200 бод и немедленное его закрытие. Это вызывает перезагрузку в загрузчике.

Средство ID Arduino вручную выполняет эту задачу при нажатии кнопки загрузки. Это не то, что avrdude знает, как это сделать.

Итак, вам придется придумать способ открытия последовательного порта на скорости 1200 бод сразу перед запуском avrdude. Конечно, это означает, что устройство последовательного интерфейса исчезает в течение короткого времени, в то время как чип перезагружается и входит в загрузчик, поэтому вам нужно обеспечить задержку между методом сброса и вызовом avrdude - задержка, которая достаточно длинна для вашего OS для повторной установки чипа, но не так долго, что загрузчик не работает.

ответил Majenko 7 MarpmMon, 07 Mar 2016 21:49:54 +03002016-03-07T21:49:54+03:0009 2016, 21:49:54
0

У меня была эта странная проблема с моими досками Леонардо и Уно. Я даже использовал Arduino IDE (v1.8.5) для загрузки кода. В некоторых экстремальных обстоятельствах одна из плат даже не была указана в последовательных портах (Tools> Port)

После многих попыток я просто сжег загрузчик с помощью другого Uno, и это решило вопрос!

Мне все еще не ясно, что произошло, но проблема была вызвана считывателем карт RFID с использованием SPI (выводов ICSP на плате). Считыватель карт (PN532) отправлял данные в Arduino, когда загружался код или плата загружалась.

ответил Adam Bubela 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 19:38:05 +0300 2017, 19:38:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132