Помогите понять, как avrdude работает с ArduinoISP и почему он не работает у меня.

avr avrdude atmega2560 isp arduinoisp

Я пытаюсь использовать avrdude с Mega2560 под управлением ArduinoISP

Примечание. У меня есть конденсатор 10 мкФ на линии RESET Mega2560, как описано Ardunio.

Кроме того, я использую avrdude/6.3 в Windows 10. Mega2560 (ArduinoISP) подключается к ПК с помощью USB-кабеля — соединение COM8.

У меня есть пара задач, которые я хочу выполнить

  1. Обновите прошивку на моем USBASP
  2. Загрузите загрузку Arduino на плату разработчика ATTINY85.

Я начал с Arduino IDE, но перешел на avrdude, чтобы лучше понять проблему

Для №1: Подключил через https://www.arduino.cc/en/Tutorial/ArduinoISP

AVR-ISP pin     MEGA-ISP pin
6/10 (name)

1/9 (MISO)      50  
2/2 (VCC)       VCC
3/7 (SCK)       52
4/1 (MOSI)      51
5/5 (RESET)     53
6/10 (GND)      GND

Я попытался использовать команду:

avrdude -c arduino -p m8 -P COM8

Я получаю сообщение об ошибке

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xed
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0

avrdude done.  Thank you.

--ОБНОВЛЕНИЕ-- Вышеупомянутая ошибка была вызвана тем, что не была установлена скорость передачи данных. Теперь я получаю:

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.

Что я действительно хочу узнать, так это то, как работает этот процесс, чтобы лучше понять его и иметь возможность отлаживать проблемы.

  1. Это ошибка связи с интернет-провайдером (Arduino) или проблема с интернет-провайдером, взаимодействующим с целью (ATMega8B на USBAVR)?
  2. Что означает "stk500"? Это протокол программирования, протокол интернет-провайдера или что-то другое?
  3. Это все где-нибудь задокументировано?

, 👍0

Обсуждение

скорость передачи, предохранители? используйте IDE для записи ботлоадера, @Juraj

Я получаю аналогичные ошибки, когда пытаюсь использовать IDE (которая, как я полагаю, использует avrdude на заднем плане. Вот почему я сосредоточен на понимании avrdude. Примечание: обычно я использую IDE, но не с провайдером., @markshancock

Пожалуйста, добавьте информацию о проводке., @Mikael Patel

Добавлена информация о проводке, @markshancock

1. «Программист не отвечает», кажется, проблема в программаторе, а не в цели. 2. stk500 — это протокол, который Arduino использует для программирования. Я не думаю, что этот протокол следует использовать при использовании Arduino-as-ISP, но это было давно. 3. Не совсем. Вся информация есть, но не в одном месте., @Gerben

Я думаю, что «-c arduino» должно быть «-c avrisp -b 19200»., @Gerben

Скорость передачи данных @Gerben, похоже, была причиной «не отвечает». Теперь он отвечает, но я получаю «Неверная подпись устройства»., @markshancock

Какую подпись вы получите?, @Gerben

команда для Uno в качестве цели и «Arduino в качестве интернет-провайдера»: avrdude -C avrdude.conf -v -patmega328p -cstk500v1 -P/dev/ttyACM0 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD :m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m, как вы можете видеть в консоли IDE при использовании «Записать загрузчик», @Juraj

@Juraj Это почти то же самое, что я использую, но 1) моя цель другая, и я не пишу о предохранителях и блокировках., @markshancock

@Gerben 'avrdude: подпись устройства = 0x000000', @markshancock

@MikaelPatel Я добавил подробную информацию о проводке в ОП., @markshancock

@Gerben Re: «Не совсем. Вся информация есть, но не в одном месте: я нахожу кое-что, собираю и добавляю в качестве ответа, чтобы она могла быть хотя бы в этом _одном месте_., @markshancock

на странице Arduino как ISP не отображается проводка для USBASP или ATiny, @Juraj

Страница @Juraj Arduino ISP показывает номера контактов на каждом типе платы ISP по имени сигнала AVR-ISP. Я просто подключаю их к одному и тому же имени сигнала на цели (USPASP/ATTINY). Для одного примера (USPASP) я добавил конкретные соединения., @markshancock

«Подпись устройства = 0x000000» означает, что оно не может видеть/общаться с целью., @Gerben

Вы используете правильный контакт сброса на USBasp. Вы не можете использовать контакт «сброс» в заголовке программирования на USBasp, так как это всего лишь выходной контакт GPIO на A TMega8. Кажется, на некоторых платах есть перемычка для подключения этого контакта к сбросу на ATMeag8. Неправильный сброс цели может привести к ошибке неправильной подписи., @Gerben


1 ответ


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

3

Целевая плата не была сброшена.

Скетч «Arduino as ISP» использует контакт 10 для сброса цели, а не контакт SS. Так что даже на Mega проводной сброс цели на контакт 10, а не на контакт 53.

Является ли это ошибкой при обмене данными с провайдером (Arduino) или проблема связана с подключением провайдера к цели (ATMega8B на USBAVR)?

первая ошибка "не синхронизирована" - проблема со связью с программатором. это было вызвано неправильной скоростью передачи данных. "неверная подпись" - это ответ программиста о цели. если бы подпись могла быть прочитана, avrdude напечатал бы целевой тип MCU. подпись "все нули" - это когда цель не отвечает. так что проверяй проводку.

Что означает "stk500"? Это протокол программирования, протокол интернет-провайдера или что-то другое?

да, это протокол программирования интернет-провайдера. «Arduino as ISP» реализует только этот протокол

Это все где-нибудь задокументировано?

это мир микроконтроллеров AVR, а не Arduino. вы можете погуглить ссылку на avrdude, ссылку на stk500 и т. д.

,

Это заставило его работать. Как вы узнали, что это сброс?, @markshancock

Я использую «Arduino как интернет-провайдер» довольно часто. Вы можете принять ответ, чтобы отметить вопрос как решенный, @Juraj

Только вспомните, что вопрос был не только в том, чтобы решить насущный вопрос; но, чтобы знать, как проследить симптомы до причины. Если вы можете добавить, как симптомы указали вам на соединение RESET, это будет более полный ответ. Также мне нужно проверить это с другим тестовым случаем., @markshancock

правило «проверить проводку». я расширил ответ, @Juraj