Arduino Uno R1 Я припаял резистор, но не могу запрограммировать DFU atmega8u2

arduino-uno usb programmer

У меня есть плата Arduino R1 (самая первая), и мне удалось впаять резистор в микроконтроллер Arduino Atmega8u2 (я обращался к специалисту). Затем я сбросил atmega8u2 и подключил пины, как указано в статье: https://www.arduino.cc/en/Hacking/DFUProgramming8U2

Я могу подтвердить это с помощью этого сообщения на моей машине GNU/Linux, запустив dmesg:

[ 1544.679504] usb 1-6: new full-speed USB device number 42 using xhci_hcd
[ 1544.808341] usb 1-6: New USB device found, idVendor=03eb, idProduct=2ff7
[ 1544.808350] usb 1-6: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 1544.808356] usb 1-6: Product: Arduino Uno DFU

Я также подтверждаю, что запустил lsusb и получил следующий результат:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 248a:8367  
Bus 001 Device 058: ID 03eb:2ff7 Atmel Corp. 
Bus 001 Device 003: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Это ещё раз указывает на то, что Arduino находится в режиме DFU на моём компьютере с Ubuntu 16.04. Также я проверяю это командой dfu-util -l:

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Found DFU: [03eb:2ff7] ver=0000, devnum=63, cfg=1, intf=0, alt=0, name="UNKNOWN", serial="UNKNOWN"

Я пытаюсь бежать:

sudo dfu-programmer atmega8u2 erasure

Но по какой-то причине я получаю следующую ошибку: dfu-programmer: устройство отсутствует.

Знаете ли вы, почему возникает эта ошибка и как ее исправить?

Редактировать 1

Я установил последнюю версию dfu-programmer и скомпилировал из исходников через https://sourceforge.net/projects/dfu-programmer/files/dfu-programmer/0.7.2/, но ошибка всё равно возникает. Я также пробовал компилировать с помощью libusb-1.0.0

Редактировать2

Я также попробовал эту версию с libusb-1.0.0, но ошибка всё равно возникает.

Редактировать 3

Как и многие советуют, я пробовал сделать это несколько раз, но все равно получаю эту ошибку.

Редактировать 4

Я также использовал dfu-util и пытаюсь вставить данные в atmega8u2 через:

 sudo dfu-util -d 03eb:2ff7 -D ./Arduino-usbserial-uno.hex -R

Но я получаю ошибку:

dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 03eb:2ff7
Run-time device DFU version 0100
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0100
Device returned transfer size 3072
Copying data from PC to DFU device
Download    [                         ]   0%            0 bytesdfu-util: Error during download
dfu-util: can't detach
Resetting USB to switch back to runtime mode

, 👍3


1 ответ


Лучший ответ:

1

Согласно https://gebloggendings.wordpress.com/category/elektronik/arduino/ иногда не следует предполагать, что atmega8u2 всегда является правильным значением. В моем случае это было at90usb82, что привело к использованию следующей последовательности команд:

sudo dfu-programmer at90usb82 erase
# Flashing the arduino provided .hex
sudo dfu-programmer at90usb82 /usr/share/arduino/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex
# reset the board 
sudo dfu-programmer at90usb82 reset

Дополнительную информацию вы можете найти здесь:

  • https://forum.arduino.cc/index.php?topic=53443.0
  • https://forum.arduino.cc/index.php?topic=542854.0
,