Wątek przeniesiony 2023-03-07 09:24 z C/C++ przez ŁF.

Błąd podczas wgrywania programu

0

Witam
Podczas wgrywania programu mam taki błąd:

avrdude done.  Thank you.

make: *** [Burn] Error 1

 *  Działanie procesu terminalu „C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command & 'c:/Program Files/WinAVR-20100110/utils/bin/make.exe' -Wall” zostało zakończone z kodem zakończenia: 1. 
 *  Terminal zostanie ponownie użyty przez zadania. Naciśnij dowolny klawisz, aby go zamknąć. 

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Kompilacja i wgranie programu>>>",
            "type": "shell",
            "command": "c:/Program Files/WinAVR-20100110/utils/bin/make.exe",
            
            "args": [
            "-Wall"
            ],
            "problemMatcher": [
                "$gcc"
            ],
            "group"{
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
0

Za mało przekleiłeś.
Logów błędów jest zapewne dużo więcej, a to co istotne jest powyżej.

0

avr-objcopy.exe -j .text -j .data -O ihex linijka_BMW_Atmega8.elf linijka_BMW_Atmega8.hex
avrdude -p atmega8  -c usbasp -P usb -V  -u -U flash:w:D:\LinijkaBMW\Linijka_BMW_atmega8\linijka_BMW_Atmega8.hex:i -U lfuse:w:0xE4:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lock:w:0x3F:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "D:\LinijkaBMW\Linijka_BMW_atmega8\linijka_BMW_Atmega8.hex"
avrdude: writing flash (6808 bytes):

Writing | ################################################## | 100% 3.74s



avrdude: 6808 bytes of flash written
avrdude: reading input file "0xE4"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
"efuse" memory type not defined for part "ATMEGA8"

avrdude done.  Thank you.

make: *** [Burn] Error 1

 *  Działanie procesu terminalu „C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command & 'c:/Program Files/WinAVR-20100110/utils/bin/make.exe' -Wall” zostało zakończone z kodem zakończenia: 1. 
 *  Terminal zostanie ponownie użyty przez zadania. Naciśnij dowolny klawisz, aby go zamknąć.

3

to jest problem:

"efuse" memory type not defined for part "ATMEGA8"

Nie dłubie przy arduino, więc nie mogę za bardzo pomóc. Google wypluło mi coś do czego nie mam zaufania, więc nie podam dalej.

0

ok rozwiązałem
w makefile

DUDEFLAGS += -V 
DUDEFLAGS += -u
DUDEFLAGS += -U flash:w:$(MAIN_HEX_PATH):i
DUDEFLAGS += -U
DUDEFLAGS += lfuse:w:0xE2:m
DUDEFLAGS += -U
DUDEFLAGS += hfuse:w:0xD9:m
DUDEFLAGS += -U
DUDEFLAGS += efuse:w:0xFF:m
DUDEFLAGS += -U
DUDEFLAGS += lock:w:0x3F:m

za dużo DUDEFLAGS += efuse:w:0xFF:m

1

Starsze wersje Arduino miały μC oparty o ATmega8 a ten miał tylko 2 bajty dla Fuse bitów. Nowsze Arduino oparte są o ATmega328 a te mają 3 bajty. Ten Makefile jest jakiś wadliwy i nie powinien zawierać -U efuse.... W przypadku ATmega328 ma to jak najbardziej sens.


Ps. Chciałbym zwrócić uwagę na to że WinAVR jest lekko przeterminowany. Na stronie producenta jest chyba nowszy toolchain avr-gcc ale ma wersję też nie najnowszą bo 5.4.0. Jakby co to można w internecie znaleźć działającą z gcc w wersji 12. Jeżeli używasz np. MSYS2 po windowsem to w nim można zainstalować avr-toolchain właśnie w tej wersji i ustawić IDE tak żeby go używał.

Piszę o tym bo ktoś kiedyś na elektrodzie miał problem z firmwarem, który po skompilowaniu nie mieścił się we Flashu ATmega8. O dziwo avr-gcc w wersji 12 potrafił wyprodukować kod o mniejszym rozmiarze. To tak na przyszłość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1