Optiboot не пишет скетч
Отказ от ответственности, я новичок во всей этой встроенной маларки.
Привет,
У меня есть изготовленная на заказ плата с ATmega328 U-TH на ней.
плата была загружена с версией optiboot и демонстрационным скетчем, который был загружен с помощью arduino IDE и serial over usb, так что в какой-то момент я знаю, что то, что я пытаюсь сделать, работает.
я использую avrdude и USB UART.
то, что кажется, происходит, это загрузка скетча "ОК", но не проходит проверку.
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin>avrdude -C"../etc/avrdude.conf" -v -patmega328p -carduino -PCOM5 -b38400 -D -Uflash:w:test.hex:i
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 "../etc/avrdude.conf"
Using Port : COM5
Using Programmer : arduino
Overriding Baud Rate : 38400
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 : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 8.0
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading input file "test.hex"
avrdude: writing flash (4 bytes):
Writing | ################################################## | 100% 0.04s
avrdude: 4 bytes of flash written
avrdude: verifying flash memory against test.hex:
avrdude: load data flash data from input file test.hex:
avrdude: input file test.hex contains 4 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.04s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x14 != 0x74
avrdude: verification error; content mismatch
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
я пробовал Arduino IDE и avrdude direct.
при осмотре с использованием -
avrdude -C"../etc/avrdude.conf" -v -patmega328p -carduino -PCOM5 -b38400 -D -Uflash:r:C:\.../uploaded.ino.hex:i
Я вижу, что память заполнена 1414 вплоть до загрузчика.
:20000000141414141414141414141414141414141414141414141414141414141414141460
:20002000141414141414141414141414141414141414141414141414141414141414141440
...
:207DC000141414141414141414141414141414141414141414141414141414141414141423
:207DE000141414141414141414141414141414141414141414141414141414141414141403
:207E000001C0CEC0112484B7882361F0982F9A70923041F081FF02C097EF94BF282E80E012
:207E2000AAD0EEC082E08093C00088E18093C10086E08093C20089E18093C40088E29BD057
:207E400093E0E92EDD24D39425E0C22E31E1B32E86D0813479F483D0182F93D0123811F484
:207E600080E004C088E0113809F083E071D080E16FD0EECF823419F484E18BD0F8CF853430
:207E800011F485E0FACF853541F469D0C82F67D0D82FCC0FDD1F75D0EACF863519F484E051
:207EA00078D0DECF843609F034C059D058D0F82E56D0A82E00E011E048018FEF881A980AD7
:207EC0004ED0F80180838401F810F6CF5AD0F5E4AF1201C0FFCFFE01E7BEE89507B600FC09
:207EE000FDCFFE01A0E0B1E0CD0102962D913C910901D7BEE89511243296DC01F812F4CFF2
:207F0000FE01C7BEE89507B600FCFDCFB7BEE895AECF843771F423D022D0F82E20D031D050
:207F20008E01F80185918F0113D0FA94F110F9CF9ECF853739F425D08EE10AD085E908D0FF
:207F40008FE094CF813509F0A6CF88E014D0A3CF9091C00095FFFCCF8093C60008958091A6
:207F6000C00087FFFCCF8091C00084FD01C0A8958091C6000895E0E6F0E098E19083808307
:207F80000895EDDF803219F088E0F5DFFFCF84E1DFCFCF93C82FE3DFC150E9F7CF91F1CF74
:207FA000FC010A0167BFE895112407B600FCFDCF667029F0452B19F481E187BFE89508952E
:207FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
:207FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000897
:00000001FF
я могу подтвердить, что загрузчик байт за байтом совпадает с файлом, который был загружен с помощью ICSP парнем, который его построил, за исключением этого бита -
:0400000300007E007B
который, как я предполагаю, был перезаписан, когда ранее рабочий скетч был загружен.
это прилагаемая конфигурация платы
.upload.protocol=arduino
.upload.maximum_size=32256
.upload.speed=38400
.bootloader.low_fuses=0xE2
.bootloader.high_fuses=0xDE
.bootloader.extended_fuses=0xFF
.bootloader.file=atmega/optiboot_atmega328.hex
.bootloader.unlock_bits=0x3F
.bootloader.lock_bits=0x0F
.build.mcu=atmega328p
.build.f_cpu=8000000L
.build.core=arduino:arduino
.build.variant=arduino:standard
.bootloader.tool=arduino:avrdude
.upload.tool=arduino:avrdude
У меня нет программатора ICSP или другого Arduino для перезапуска загрузчика.
Может ли кто-нибудь предложить какие-либо пути расследования?
спасибо
@user2983931, 👍0
Обсуждение0
- avrdude ser_open() can't set com-state
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Не удается снова загрузиться после смены платы
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Arduino UNO для получения подписи чипа ATmega328P-PU
- Где параметры avrdude определяются в Arduino IDE?
- SIM800C, CPIN: НЕ ГОТОВ (КОД ОШИБКИ: +CME ОШИБКА: 10)
- Что означает avrdude: Device signature = 0x000000? Неисправная проводка? Проблема с программным обеспечением? Неправильная инструкция?
загрузчик пришел от парня, который построил плату, он настроил ее на 38400, потому что - "это самый быстрый uart, который может работать, сохраняя точное время с системными часами 8 МГц (из памяти)", @user2983931
Я мог бы придраться к этому, но не буду. Когда вы говорите "используя avrdude и UART USB", вы имеете в виду последовательный адаптер/кабель USB-логического уровня? И если да, то соответствует ли этот адаптер правильному логическому уровню вашей платы?, @timemage
Я полагаю, что да, идентично этому - https://www.makerfabs.com/usb-uart-convertor-cp2102.html , также поддержал ваш комментарий за то, что вы не сорвали вопрос с аргументами о том, может ли он идти быстрее :) ценю это., @user2983931
Что ж, это половина ответа. Я вижу, что это будет долгий, затяжной процесс. Итак, я просто оставлю вас с: проверьте проводку, уровни напряжения, биты блокировки, значения предохранителей и время работы внутреннего osc. (или производные последовательные биты)., @timemage
проверить проводку? - загрузчик, по-видимому, взаимодействует биты блокировки/биты предохранителя - приведенные значения кажутся правильными, и, похоже, в какой-то момент что-то было написано (1414) уровни напряжения - я полагаю, UART и время - я думаю, мне нужен какой-то логический анализатор. Вы предполагаете, что в этом может быть виноват дешевый UART?, @user2983931
Я видел, как люди получали в основном хорошую связь от последовательного, когда GND не был подключен, из-за емкостной связи и достаточно высокой скорости передачи данных. Я не собираюсь просматривать все диагностическое дерево в комментариях. Но да, за этими предложениями *стоят* причины. Вы можете найти меня на freenode, если хотите обсудить это в разговорной форме., @timemage