Запись загрузчика завершается словами "avrdude done. Thank you.". но загрузчик на самом деле не прошивался
Я собрал урезанную версию Arduino Nano, в которой удалены некоторые периферийные устройства и три разъема для аналоговых датчиков, которые я хочу использовать. Я пытаюсь записать загрузчик Arduino Nano на эту специальную плату с помощью программатора SparkFun AVR Pocket Programmer, и из консоли Arduino IDE, кажется, говорится, что он был успешно записан. Но когда я снова подключаю плату к компьютеру, она все равно отображается как COM-порт, а не как устройство Arduino. Это вывод, который я получаю в консоли после того, как нажимаю «Записать загрузчик» с «USBtinyISP», выбранным в качестве программатора, и Arduino Nano в качестве платы.
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : usb
Using Programmer : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\\.\libusb0-0001--0x1781-0x0c9f
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : USBtiny
Description : USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp
avrdude: programmer operation not supported
avrdude: Using SCK period of 10 usec
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: Using SCK period of 10 usec
avrdude: reading input file "C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):
Writing | ################################################## | 100% -0.00s
avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
Запись практически мгновенно завершается, и вы можете видеть, что чтение и запись занимают 0,00 с, это должно быть ближе к минуте, а не мгновенно. Это быстрее, чем загружать простой скетч в Arduino. Когда я отключаю программатор и снова подключаю устройство через USB, он просто отображается как COM-порт вместо «Arduino Nano», что не позволяет мне программировать его через Arduino IDE.
Что для меня очень странно, так это то, что я могу запрограммировать устройство через командную строку. Если я следую инструкциям AVR Pock Programmer "Использование AVRDUDE через командную строку" и используйте шестнадцатеричный файл, сгенерированный из Arduino IDE, код загружается и работает нормально. Я написал скетч, который выводит значения АЦП через командную строку, и после прошивки через командную строку он работает, как и ожидалось.
Я пытался загрузить загрузчик Arduino через командную строку, как показано в это руководство в разделе "Загрузка кода - Сложный способ", и на этот раз для записи во флэш-память требуется более 43 секунд, а для чтения из флэш-памяти - 30 секунд, поэтому я подумал, что это сработало. Однако, когда я снова подключаю его, он ВСЕ ЕЩЕ появляется на моем компьютере и в Arduino IDE как COM9.
Вот что я получаю при попытке прошить загрузчик через командную строку:
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : usb
Using Programmer : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\\.\libusb0-0001--0x1781-0x0c9f
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : USBtiny
Description : USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp
avrdude: programmer operation not supported
avrdude: Using SCK period of 10 usec
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: Using SCK period of 10 usec
avrdude: reading input file "C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):
Writing | ################################################## | 100% -0.00s
avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
Я просматривал свою схему несколько раз, сравнивая ее с настоящим Nano. схематично, но я не вижу ничего, что могло бы привести к сбою - это почти идентично! Я построил две такие платы, и они ведут себя одинаково. Схема показана ниже.
@VanGo, 👍0
Обсуждение1 ответ
Лучший ответ:
«Устройство» Arduino идентифицируется по коду USB-устройства последовательного порта USB-TTL на Arduino или по коду ядра в случае MCU с родным USB. Идентификаторы USB записываются в чип USB на заводе или являются частью прошивки/ядра, и они перечислены в файле boards.txt, чтобы IDE знала, какой Arduino подключен. Если вы используете обычный FTDI, у него нет кодов Arduino vid и pid, которые идентифицируют устройство как Arduino.
Примечание: я думаю, что вы задали другой вопрос, чем ваша настоящая проблема, потому что вы предположили, что имя порта, не отображающее Arduino, является причиной того, что загрузка не работает. Это так называемая проблема X->Y. У вас есть проблема X, но вы спросили о проблеме Y. Я ответил на заданный вопрос.
Я понимаю. Означает ли это, что эту плату нельзя будет прошить через Arduino IDE? Мне просто нужно продолжать мигать через командную строку?, @VanGo
@VanGo, если у вас есть правильный COM-порт в меню «Инструменты», вы можете загрузить. не обязательно говорить «Arduino», @Juraj
Я пробовал это, но в итоге получаю кучу этих сообщений «avrdude: stk500_getsync(), попытка 10 из 10: не синхронизировано: resp=0x00», а затем происходит сбой. Я пробовал нажимать сброс во время загрузки, но безрезультатно..., @VanGo
Существуют разные загрузчики, реализующие разные протоколы. Возможно, вам потребуется выбрать другой протокол/загрузчик., @the busybee
@VanGo, это другой вопрос, @Juraj
@Juraj спасибо за подсказки. Это была действительно другая проблема - я подключил Arduino Tx / Rx к другому устройству. Когда я попытался загрузить код через Arduino IDE с выводами Rx/Tx, отключенными от другого устройства, это позволило мне успешно загрузить, хотя устройство по-прежнему просто отображается как COM-порт. Спасибо !, @VanGo
- avrdude ser_open() can't set com-state
- Не удается снова загрузиться после смены платы
- Ошибка при записи загрузчика
- Что означает avrdude: Device signature = 0x000000? Неисправная проводка? Проблема с программным обеспечением? Неправильная инструкция?
- Ошибка проверки Avrdude
- Не удается заставить "Burn Bootloader" работать - Arduino Nano
- Загрузчик на ATmega328p (3.3V/8MHz), чувак не закончит свое дело
- Разница в загрузчике между Atmel328p (сквозное отверстие) и Atmel328p au (smd)
ваш пост не имеет смысла ... вы используете чип FTDI, который представляет собой последовательный порт, @jsotola
Но FR32RL — это тот же чип, который использует Arduino Nano, и Nano отображается как устройство Arduino, когда оно подключено. Вы можете запрограммировать его напрямую с помощью Arduino IDE., @VanGo
Нужно ли мне это делать, чтобы использовать Arduino IDE для перепрошивки?, @VanGo
Я не совсем понимаю, что это значит - не могли бы вы объяснить немного больше?, @VanGo
старые ПК имели параллельный порт DB25, используемый для принтеров ... также называемый портом Centronics ... он имел 8 двунаправленных контактов данных и несколько контактов подтверждения ...
LPT1
обычно называется параллельным портом, а не последовательным. портCOM1
, @jsotolaПочему он находит устройство и считывает/записывает во флэш-память, если порт неправильный?, @VanGo
Я не знаю ... просто
lpt1
выскочило, когда я посмотрел на распечатку, @jsotolaКороткое время прошивки имеет смысл, если учесть размер загрузчика. Он не должен занимать все 32 КБ! Обычно он намного меньше, чем типичный скетч. Если avrdude говорит вам, что прошито 32 КБ, то большая часть содержимого должна быть 0xFF — пожалуйста, проверьте это. Поскольку 0xFF — это стертое значение байта флэш-памяти, для этих байтов ничего не нужно делать, что приводит к очень короткому времени флэш-памяти., @the busybee
попробуйте ручной сброс, пока avrdude пытается загрузить, @Juraj