logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8] makefile & kod od LCD

jobberwalker 06 Lip 2008 00:18 2735 11
  • #1 5315816
    jobberwalker
    Poziom 2  
    Witam Serdecznie,
    Zaczynam z AVR i mam problem na poczatek [niestety ;(] z kompilacja kodu ze strony Mikrokontrolery do obslugi LCD. Blad jak ponizej, korzystam ze standardowego makefile dostarczonego razem z winavr. Kod z migajacymi diodami dziala na tym makefile ale w/w nie.

    Z gory dzieki za pomoc.


    Cytat:

    Compiling C: main.c
    avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=2000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -IC:/WinAVR-20080430/avr/include -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c -o main.o
    main.c: In function 'waitms':
    main.c:108: internal compiler error: Illegal instruction
    Please submit a full bug report,
    with preprocessed source if appropriate.
    See <URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=browse> for instructions.
    make.exe: *** [main.o] Error 1
    > Process Exit Code: 2
    > Time Taken: 00:04
  • #2 5316116
    ZbeeGin
    Poziom 39  
    U mnie wszystko ładnie się kompiluje:

    Cytat:
    -------- begin --------
    avr-gcc (WinAVR 20080610) 4.3.0
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    Compiling C: lcdtest.c
    avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=2000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./lcdtest.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/lcdtest.o.d lcdtest.c -o lcdtest.o

    Linking: lcdtest.elf
    avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=lcdtest.o -std=gnu99 -Wundef -MMD -MP -MF .dep/lcdtest.elf.d lcdtest.o --output lcdtest.elf -Wl,-Map=lcdtest.map,--cref -lm

    Creating load file for Flash: lcdtest.hex
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock lcdtest.elf lcdtest.hex

    Creating load file for EEPROM: lcdtest.eep
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
    --change-section-lma .eeprom=0 --no-change-warnings -O ihex lcdtest.elf lcdtest.eep || exit 0

    Creating Extended Listing: lcdtest.lss
    avr-objdump -h -S -z lcdtest.elf > lcdtest.lss

    Creating Symbol Table: lcdtest.sym
    avr-nm -n lcdtest.elf > lcdtest.sym

    Size after:
    AVR Memory Usage
    ----------------
    Device: atmega8

    Program: 394 bytes (4.8% Full)
    (.text + .data + .bootloader)

    Data: 16 bytes (1.6% Full)
    (.data + .bss + .noinit)

    -------- end --------


    Skasuj z makefile parametry przekazane przez EXTRAINCDIRS =. Po prostu zostaw tą linię tak jak jest w template:

    Cytat:
    # List any extra directories to look for include files here.
    # Each directory must be seperated by a space.
    # Use forward slashes for directory separators.
    # For a directory that has spaces, enclose it in quotes.

    EXTRAINCDIRS =
  • #3 5316250
    jobberwalker
    Poziom 2  
    czesc,
    dzieki za odpowiedz. Sprawdzilem usuniecie "extraincdirs" ale niestety blad ten sam. Wywolanie avr-gcc mam w tej chwili takie samo jak Twoje.

    Czy ktos z Was ma moze jakis pomysl na to?

    Pozdr,
    Jabberwalker
  • #4 5316301
    JmL(TM)
    Poziom 24  
    A zrob tak:

    - uruchom AVR Studio;
    - z menu wybierz: [Project] > [New Project];
    - z listy: [Project type] wybierz [AVR GCC];
    - wpisz nazwe projektu: [Project File];
    - ewentualnie zmien lokacje projektu: [Location];
    - wcisnij: [Finish]!
    - teraz w otwartym oknie projektu wklej kod ze strony, ktora podales;
    - z menu wybierz: [Project] > [Configuration Options];
    - w polu: [Device] zmien: [atmega128] na [atmega8];
    - w polu: [Frequency] wpisz swoja wartosc kwarca, np. 20000000 dla 20MHz;
    - zatwierdz zmiany wciskajac przycisk [OK];
    - z menu wybierz: [Build] > [Build];
    - i to wszystko!

    Program musi sie ladnie skompilowac!
  • #5 5316333
    ZbeeGin
    Poziom 39  
    jobberwalker napisał:
    Czy ktos z Was ma moze jakis pomysl na to?

    Może po prostu odkryłeś jakiegoś buga w kompilatorze. Ja używam wersji WinAVR 20080610 a Twoja to WinAVR 20080430. Zaraz spróbuje to skompilować w tej wersji.
  • #7 5316372
    ZbeeGin
    Poziom 39  
    Rezulat jest inny, ale jednak wykłada się:

    Cytat:
    -------- begin --------
    avr-gcc (WinAVR 20080430) 4.3.0
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


    Compiling C: lcdtest.c
    avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=2000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./lcdtest.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/lcdtest.o.d lcdtest.c -o lcdtest.o
    cc1.exe: error: lcdtest.c: Invalid argument
    make.exe: *** [lcdtest.o] Error 1
  • #8 5316395
    JmL(TM)
    Poziom 24  
    A niech mnie kule bija! :D Wlasnie czytam na AVRFreaks, ze z ta wersja faktycznie jest troche problemow. Ciekaw jestem czy w wersjach poprzedzajacych wszystko kompiluje sie poprawnie i czy tylko z ta konkretna wersja wystepuje ten problem - BUG?
  • #9 5316454
    dawid512
    Poziom 32  
    Załatw sobie starsza wersje winavr i zobacz czy sie skompiluje.
  • #10 5316459
    ZbeeGin
    Poziom 39  
    A jednak się skompilowało:

    Cytat:
    -------- begin --------
    avr-gcc (WinAVR 20080430) 4.3.0
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


    Compiling C: lcdtest.c
    avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=2000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./lcdtest.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/lcdtest.o.d lcdtest.c -o lcdtest.o

    Linking: lcdtest.elf
    avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=2000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=lcdtest.o -std=gnu99 -Wundef -MMD -MP -MF .dep/lcdtest.elf.d lcdtest.o --output lcdtest.elf -Wl,-Map=lcdtest.map,--cref -lm

    Creating load file for Flash: lcdtest.hex
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock lcdtest.elf lcdtest.hex

    Creating load file for EEPROM: lcdtest.eep
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
    --change-section-lma .eeprom=0 --no-change-warnings -O ihex lcdtest.elf lcdtest.eep || exit 0

    Creating Extended Listing: lcdtest.lss
    avr-objdump -h -S -z lcdtest.elf > lcdtest.lss

    Creating Symbol Table: lcdtest.sym
    avr-nm -n lcdtest.elf > lcdtest.sym

    Size after:
    AVR Memory Usage
    ----------------
    Device: atmega8

    Program: 394 bytes (4.8% Full)
    (.text + .data + .bootloader)

    Data: 16 bytes (1.6% Full)
    (.data + .bss + .noinit)

    -------- end --------


    Z tym że uruchomiłem na wirtualnej maszynie pod Win98SE.

    Teraz to już nic nie wiadomo :(
  • #11 5316966
    jobberwalker
    Poziom 2  
    Witam,
    Problem rozwiazany, z avr-gcc pracowalem na "starszym" laptopie z Windows Millenium. Chyba nie lubia sie nawzajem bo ten sam projekt (z tym samym makefile) kompiluje sie bez problemow na innym lapie z WinXP.

    Dzieki wielkie za pomoc i sugestie.
    Pozdr,
    Jobberwalker
  • #12 5316976
    JmL(TM)
    Poziom 24  
    Nie sadzilem, ze jeszcze ktokolwiek korzysta z tego systemu :D

    Teraz tylko kliknij ta klodke na dole zeby zamknac temat.
    Pozdrawiam!
REKLAMA