Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

błąd podczas kompilacji w WinAVR

21 Paź 2007 16:17 2012 6
  • Poziom 13  
    otrzymuję taki błąd podczas konfiguracji
    Code:
    warning: implicit declaration of function 'CopyStringToLCD'


    funkcja CopyStringtoLCD
    Code:

    void CopyStringtoLCD(const uint8_t *FlashLoc, uint8_t x, uint8_t y)
    {
       uint8_t i;
       lcd_gotoxy(x,y);
       for(i=0;(uint8_t)pgm_read_byte(&FlashLoc[i]);i++)
       {
          lcd_putc((uint8_t)pgm_read_byte(&FlashLoc[i]));
       }
    }
  • Poziom 19  
    To nie błąd tylko ostrzeżenie. Kompilator to przepuszcza, ale z uwagi na standardowe opcje kompilacji GCC w WinAVR, generowane jest ostrzeżenie. Natomiast prawdopodobnie linker Ci nie przepuszcza i zabawa kończy się na błędzie "undefined reference to ...".

    Problemem jest literówka: w definicji funkcji masz małą literę "t", w wyrazie "To", a w wywołaniu dużą.
  • Poziom 13  
    niestety to nie literówka.. zmieniłem tak że wszędzie jest tak samo
    tzn CopyStringtoLCD i dalej to samo
  • Poziom 18  
    skoro *FlashLoc jest wskaźnikiem do napisu w pamięci programu to deklaracje tego wskaźnika powinna wyglądać: prog_char* FlashLoc

    Zamiast pgm_read_byte(&FlashLoc[i]) użyj:
    pgm_read_byte(FlashLoc+i)

    Pokaż jak wywolujesz tą funkcję.
  • Poziom 19  
    Ale program się kompiluje czy nie? Bo to co podajesz, to tylko ostrzeżenie o funkcji implikowanej, oznaczające, że brak definicji lub deklaracji zapowiadającej przed jakimś wywołaniem tej funkcji. W większości przypadków nie stanowi to problemu, a ostrzeżenie możesz wyeliminować umieszczając prototyp funkcji:
    Code:
    void CopyStringtoLCD(const uint8_t *FlashLoc, uint8_t x, uint8_t y);

    przed pierwszym jej wywołaniem w danym pliku.

    Jeśli jednak są jakieś błędy i kompilacja nie udaje się, to zacytuj pełną treść wyjścia kompilatora.
  • Poziom 13  
    prototyp był i jest... już rozwiązałem problem. temat można zamknąć.
  • Poziom 18  
    Witam.
    Poniżej pozwoliłem sobie zamieścić błąd jaki otrzymuję podczas kompilacji programu za pomocą Win AVR. Jeśli to możliwe może mi ktoś napisać co oznacza ten błąd i co zrobić aby go wyeliminować.
    Serdecznie dziękuję i Pozdrawiam







    "make.exe" all

    -------- begin --------
    avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
    Copyright (C) 2006 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.


    Size before:
    AVR Memory Usage
    ----------------
    Device: attiny2313

    Program: 108 bytes (5.3% Full)
    (.text + .data + .bootloader)

    Data: 0 bytes (0.0% Full)
    (.data + .bss + .noinit)




    Compiling C: cwicz1.c
    avr-gcc -c -mmcu=attiny2313 -I. -gstabs -DF_CPU=4000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./cwicz1.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/cwicz1.o.d cwicz1.c -o cwicz1.o
    In file included from cwicz1.c:2:
    c:/avrgcc/bin/../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."

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

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

    Creating load file for EEPROM: cwicz1.eep
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
    --change-section-lma .eeprom=0 --no-change-warnings -O ihex cwicz1.elf cwicz1.eep || exit 0
    c:\avrgcc\bin\avr-objcopy.exe: there are no sections to be copied!

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

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

    Converting to AVR COFF: cwicz1.cof
    avr-objcopy --debugging --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000 -O coff-avr cwicz1.elf cwicz1.cof
    Warning: no "data" section found in output file
    Warning: file C:/WINDOWS/TEMP/cc6xiE3j.s not found in symbol table, ignoring
    Warning: ignoring function __vectors() outside any compilation unit
    Warning: ignoring function __bad_interrupt() outside any compilation unit
    avr-objcopy: --change-section-vma .eeprom+0xff7f0000 never used
    avr-objcopy: --change-section-lma .eeprom+0xff7f0000 never used
    avr-objcopy: --change-section-vma .noinit+0xff800000 never used
    avr-objcopy: --change-section-lma .noinit+0xff800000 never used
    avr-objcopy: --change-section-vma .bss+0xff800000 never used
    avr-objcopy: --change-section-lma .bss+0xff800000 never used
    avr-objcopy: --change-section-vma .data+0xff800000 never used
    avr-objcopy: --change-section-lma .data+0xff800000 never used

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

    Program: 108 bytes (5.3% Full)
    (.text + .data + .bootloader)

    Data: 0 bytes (0.0% Full)
    (.data + .bss + .noinit)



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


    > Process Exit Code: 0
    > Time Taken: 00:00