Не скачать бинарник из контроллера

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Здравствуйте!

Контроллеры Arduino Mega2560, Nano (CH340 Nano V3.0 ATMEGA328P-MU ATMEGA328)
USB-Serial - на чипе CH340.

Скетчи заливаются без проблем, отрабатывают корректно.

При попытке скачать бинарник скетча - выдает ошибки с разными адресами:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xf8
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xa2.

Синтаксисы такие:
avrdude -F -p m2560 -c arduino -b 19200 -P COM7 -v -U flash:r:flash.hex:r
avrdude -F -p m328p -c arduino -b 19200 -P COM7 -v -U flash:r:flash.hex:r

Не подскажете, в чем может быть дело?

N.B. Оригинальный бинарник необходимо скачать с другого "рабочего" Arduino Mega2560 и скопировать на второй экземпляр. Самих скетчей нет.
Эти модели - тестовые, чтобы случайно не "убить" рабочий экземпляр.

Спасибо.
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,953
624
44
Используй AVRDUDESS чтобы не мучаться с ключами. (GitHub - zkemble/AVRDUDESS: A GUI for AVRDUDE )

Если принципиально используешь консольный вариант, то у меня вот с такой строкой считывалось:
avrdude -u -c arduino -p m328p -P COM3 -U flash:r:"D:\AVR\test\12345.hex":i
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Используй AVRDUDESS чтобы не мучаться с ключами. (GitHub - zkemble/AVRDUDESS: A GUI for AVRDUDE )

Если принципиально используешь консольный вариант, то у меня вот с такой строкой считывалось:
avrdude -u -c arduino -p m328p -P COM3 -U flash:r:"D:\AVR\test\12345.hex":i
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xf6

при следующем запуске:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xb1
 
Изменено:

Геннадий П

★★★★★★✩
14 Апр 2021
1,953
624
44
Данная ошибка возникает когда МК не отвечает(или отвечает неправильно в USB-Serial.
Если что то висит на RX/TX - отключить. Желательно голую плату подключать чтобы ничего не мешало.
Если все равно не читается - попробовать напрямую через программатор.
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Данная ошибка возникает когда МК не отвечает(или отвечает неправильно в USB-Serial.
Если что то висит на RX/TX - отключить. Желательно голую плату подключать чтобы ничего не мешало.
Если все равно не читается - попробовать напрямую через программатор.
Ничего не висит, контроллер голый.
Какой программатор посоветуете?
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,953
624
44
Лично я USBAsp пользуюсь. Если будете брать - берите сразу с переходником на 6-pin. На Алике цена вопроса за весь комплект рублей 250.

Может с загрузчиком что то не то, поэтому и не считывает.
Через программатор все без загрузчика напрямую читает:
1624812105274.png
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Типа того?

Спасибо большое!
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,953
624
44
@Fred, Программатор - это первая вещь, которую нужно покупать после контроллера. :)
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Раньше заливал по USB напрямую из Arduino IDE, проблем не было.

Купил программатор, подключил.
Решил скачать hex для разных версий простенькой программы (мигание светодиодом с интервалом 1 и 3 сек) при помощи программатора и AVRDUDE_PROG - все ок.
Затем залить их обратно при помощи программатора - и вот тут началось...

1. Mega2560:

- при попытке записать hex при помощи программатора и AVRDUDE_PROG:
"ошибка верификации возможно установлены lock биты"

вот тут ударился во все тяжкие и решил "поиграться" с Lock Byte во вкладке "Fuses", в итоге:

"avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1"

- затем при попытке записать скетч через COM и Arduino IDE:
"avrdude: stk500v2_ReceiveMessage(): timeout
Произошла ошибка при загрузке скетча
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer"

2. Nano (328P):

- при попытке записать hex при помощи программатора и AVRDUDE_PROG на домашнем компе:
сначала - все ок, затем, после попыток работы с Mega2560:
"avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1"

- при попытке записать hex при помощи программатора и AVRDUDE_PROG на рабочем компе:
пока ок

- при попытке записать скетч через COM и Arduino IDE:
"avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x05"
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Да, спасибо, изучаю.
Получается, поиграв с lock-битами, я заблокировал свой Mega2560.
В итоге, программно его не вернуть к первоначальному виду, только используя внешнее тактирование?

Вот что странно - m328p - через программатор и AVRDUDE_PROG я только считывал и записывал hex, но он перестал работать через COM и Arduino IDE:
"avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x05"
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,953
624
44
Получается, поиграв с lock-битами, я заблокировал свой Mega2560.
Честно, я не доводил свои контроллеры до заблокированного состояния, поэтому подсказать особо не могу.
Найди стандартные фьюзы для контроллера, попробуй перезаписать их, ессвено через программатор.


через программатор и AVRDUDE_PROG я только считывал и записывал hex, но он перестал работать через COM и Arduino IDE
@Fred, Потому что записав прошивку через программатор затирается загрузчик, через который ArduinoIDE записывает прошивку.
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Потому что записав прошивку через программатор затирается загрузчик, через который ArduinoIDE записывает прошивку.
Забыл указать - потом я записывал загрузчик через ArduinoIDE и программатор, но работоспособность через ArduinoIDE и COM - не восстановилась
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Забыл указать - потом я записывал загрузчик через ArduinoIDE и программатор, но работоспособность через ArduinoIDE и COM - не восстановилась
Был невнимателен - записал загрузчик для ATmega328P, а надо было для ATmega328P (Old Bootloader)
Теперь все норм.

Буду восстанавливать Mega2560...
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,231
1,294
Москва
@Fred, Так если записать загрузчик для ATmega328P то и прошивать нужно так же , ATmega328P. Я менял загрузчик с олд на нью и все отлично работает.
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
@Fred, Так если записать загрузчик для ATmega328P то и прошивать нужно так же , ATmega328P. Я менял загрузчик с олд на нью и все отлично работает.
Да, точно, все так и получилось. Видимо, по запаре прошивал один загрузчик, а грузил с другого :)
Спасибо!
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
При попытке прописать загрузчик в Mega2560:

Arduino: 1.8.8 (Windows 7), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cusbasp -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD8:m -Ulfuse:w:0xFF:m

avrdude: Version 6.3-20171130
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 : usbasp
AVR Part : ATmega2560
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
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 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 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 : usbasp
Description : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
Ошибка при записи загрузчика.
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.
 

Fred

✩✩✩✩✩✩✩
27 Июн 2021
12
0
Купил новый микроконтроллер Arduino Mega2560.

При помощи Ardiuno IDE залил простенькую программу - мигание с интервалом в 1 секунду.

При помощи AVRDUDE считал Flash в файл m2560_blink_1.hex

При помощи Ardiuno IDE залил простенькую программу - мигание с интервалом в 3 секунды.

При помощи AVRDUDE считал Flash в файл m2560_blink_3.hex

Сверил получившиеся файлы - совершенно идентичные!

При помощи AVRDUDE решил залить файл m2560_blink_1.hex - выдал ошибку:

Cформированная командная строка:
avrdude.exe -p m2560 -c usbasp -P usb -U flash:w:"C:\Bin\Arduino\flash\m2560_blink_1.hex":a

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude.exe: Device signature = 0x1e9801
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "C:\Bin\Arduino\flash\m2560_blink_1.hex"
avrdude.exe: input file C:\Bin\Arduino\flash\m2560_blink_1.hex auto detected as Intel Hex
avrdude.exe: writing flash (261406 bytes):

Writing | ################################################## | 100% 152.98s

avrdude.exe: 261406 bytes of flash written
avrdude.exe: verifying flash memory against C:\Bin\Arduino\flash\m2560_blink_1.hex:
avrdude.exe: load data flash data from input file C:\Bin\Arduino\flash\m2560_blink_1.hex:
avrdude.exe: input file C:\Bin\Arduino\flash\m2560_blink_1.hex auto detected as Intel Hex
avrdude.exe: input file C:\Bin\Arduino\flash\m2560_blink_1.hex contains 261406 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 103.93s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x1e000
0xff != 0x0d
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: Fuses OK (E:FD, H:D8, L:FF)

avrdude.exe done. Thank you.

-------

запустил из командной строки (добавил опцию -D):

avrdude.exe -p m2560 -c usbasp -D -P usb -U flash:w:"C:\Bin\Arduino\flash\m2560_blink_1.hex":a

получил слегка другие значения ошибки:

avrdude.exe: verification error, first mismatch at byte 0x0000
0x06 != 0xff

причем все те же манипуляции провел для Arduino Nano - все ок, и файлы hex различаются

---------

Сегодня еще странное было:

скачал hex flash-памяти с "глючной" Arduino Mega2560 с тестовой программой - размер 600 кБ

скачал hex flash-памяти с "оригинальной" Arduino Mega2560 с рабочей программой - размер 57 кБ

залил hex flash-памяти с "оригинальной" на "глючную" - ок

скачал hex flash-памяти с "глючной" Arduino Mega2560 с рабочей программой - размер 300 кБ

Что это может быть?
 
Изменено: