Błąd podczas wgrywania programu

Błąd podczas wgrywania programu

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

R1
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 lata
  • Postów:18
0

Witam
Podczas wgrywania programu mam taki błąd:

Kopiuj
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

Kopiuj
{
    // 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
            }
        }
    ]
}
edytowany 1x, ostatnio: Riddle
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:4 minuty
0

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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22
R1
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 lata
  • Postów:18
0
Kopiuj

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ąć.

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:4 minuty
3

to jest problem:

Kopiuj
"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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: Riddle
R1
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 lata
  • Postów:18
0

ok rozwiązałem
w makefile

Kopiuj
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

edytowany 2x, ostatnio: Riddle
JV
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:242
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ść.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.