Помогите понять, как avrdude работает с ArduinoISP и почему он не работает у меня.
Я пытаюсь использовать avrdude с Mega2560 под управлением ArduinoISP
Примечание. У меня есть конденсатор 10 мкФ на линии RESET Mega2560, как описано Ardunio.
Кроме того, я использую avrdude/6.3 в Windows 10. Mega2560 (ArduinoISP) подключается к ПК с помощью USB-кабеля — соединение COM8.
У меня есть пара задач, которые я хочу выполнить
- Обновите прошивку на моем USBASP
- Загрузите загрузку 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.
Что я действительно хочу узнать, так это то, как работает этот процесс, чтобы лучше понять его и иметь возможность отлаживать проблемы.
- Это ошибка связи с ISP (Arduino) или проблема с ISP, взаимодействующим с целью (ATMega8B на USBAVR)?
- Что означает "stk500"? Это протокол программирования, протокол ISP или что-то другое?
- Это все где-нибудь задокументировано?
@markshancock, 👍0
Обсуждение1 ответ
Лучший ответ:
Целевая плата не была сброшена.
Скетч «Arduino as ISP» использует контакт 10 для сброса цели, а не контакт SS. Так что даже на Mega проводной сброс цели на контакт 10, а не на контакт 53.
Является ли это ошибкой при обмене данными с провайдером (Arduino) или проблема связана с подключением провайдера к цели (ATMega8B на USBAVR)?
первая ошибка "не синхронизирована" - проблема со связью с программатором. это было вызвано неправильной скоростью передачи данных. "неверная подпись" - это ответ программиста о цели. если бы подпись могла быть прочитана, avrdude напечатал бы целевой тип MCU. подпись "все нули" - это когда цель не отвечает. так что проверяй проводку.
Что означает "stk500"? Это протокол программирования, протокол ISP или что-то другое?
да, это протокол программирования ISP. «Arduino as ISP» реализует только этот протокол
Это все где-нибудь задокументировано?
это мир микроконтроллеров AVR, а не Arduino. вы можете погуглить ссылку на avrdude, ссылку на stk500 и т. д.
Это заставило его работать. Как вы узнали, что это сброс?, @markshancock
Я использую «Arduino как интернет-провайдер» довольно часто. Вы можете принять ответ, чтобы отметить вопрос как решенный, @Juraj
Только вспомните, что вопрос был не только в том, чтобы решить насущный вопрос; но, чтобы знать, как проследить симптомы до причины. Если вы можете добавить, как симптомы указали вам на соединение RESET, это будет более полный ответ. Также мне нужно проверить это с другим тестовым случаем., @markshancock
правило «проверить проводку». я расширил ответ, @Juraj
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Atmega328p загружает через ISP, но не через загрузчик
- Arduino UNO для получения подписи чипа ATmega328P-PU
- Как запрограммировать чип ATmega328 au tqfp32 (SMD)?
- Странное явление с avrdude: stk500v2_ReceiveMessage(): таймаут только с ATmega250 на windows 7x64
- Восстановление всех fuse-битов на AtMega328P-PU
- Программирование пользовательских Arduino Mega с Arduino Uno
- Использование Arduino Nano для программирования (как ISP) автономного 328p
скорость передачи, предохранители? используйте 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