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

Atmega8 [C] - Błędy kompilacji: Przepełnienie sekcji .text o 14298 bajtów

Fabian77 23 Paź 2013 13:17 2265 11
REKLAMA
  • #1 12872598
    Fabian77
    Poziom 13  
    Posty: 117
    Ocena: 17
    Witam. Mam problem z kompilacją programu. Chciałbym delikatnie zmienić program w C na Atmege8. Próbuje juz dziesiątki razy ale mi nie wychodzi bo cały czas są jakieś błędy. W załączniku przedstawiłem pliki które posiadam. Czy może ktoś mi pojaśnić jak to wszystko zgrać żeby to poprawnie skompilować?

    Moje ostatnie błędy:

    avr-gcc -Wl,-Map,TermP.map -mmcu=atmega8 -o"TermP.elf" ./main.o ./LCD/lcd44780.o ./1Wire/crc8.o ./1Wire/ds18x20.o ./1Wire/onewire.o
    c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: TermP.elf section .text will not fit in region text
    c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: region text overflowed by 14298 bytes
    make: *** [TermP.elf] Error 1
    Załączniki:
    • Program_uC.rar (16.71 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 12872698
    PROXAQQ
    Poziom 14  
    Posty: 30
    Pomógł: 10
    U mnie skompilowało bez błędu (Eclipse Ganymede):

    Device: atmega8
    Program: 4150 bytes (50.7% Full)
    (.text + .data + .bootloader)
    Data: 67 bytes (6.5% Full)
    (.data + .bss + .noinit)


    Robiłeś CLEAN?
  • #3 12872838
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Skompilowałem w AVR Studio 4.18 + GCC 4.3.3 + optymalizacja -Os
    Bez błędów.

    Cytat:
    Build started 23.10.2013 at 14:43:27
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd44780.o -MF dep/lcd44780.o.d -c ../LCD/lcd44780.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT onewire.o -MF dep/onewire.o.d -c ../1Wire/onewire.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT crc8.o -MF dep/crc8.o.d -c ../1Wire/crc8.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT ds18x20.o -MF dep/ds18x20.o.d -c ../1Wire/ds18x20.c
    avr-gcc -mmcu=atmega8 -Wl,-Map=Program-uC.map main.o lcd44780.o onewire.o crc8.o ds18x20.o -o Program-uC.elf
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature Program-uC.elf Program-uC.hex
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex Program-uC.elf Program-uC.eep || exit 0
    avr-objdump -h -S Program-uC.elf > Program-uC.lss

    AVR Memory Usage
    ----------------
    Device: atmega8

    Program: 4310 bytes (52.6% Full)
    (.text + .data + .bootloader)

    Data: 67 bytes (6.5% Full)
    (.data + .bss + .noinit)


    Build succeeded with 0 Warnings...



    @PROXAQQ
    Kompilowałeś dla ATmega8? Jaka optymalizacja? Jaki kompilator GCC?
    Spor różnica w zajętości pamięci.
  • #4 12872849
    Fabian77
    Poziom 13  
    Posty: 117
    Ocena: 17
    Robiłem ale coś mi nie wychodzi :/
    Możesz opisać co robisz krok po kroku, bo może o czymś zapominam...
  • REKLAMA
  • REKLAMA
  • #6 12872888
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    dondu napisał:

    @PROXAQQ
    Kompilowałeś dla ATmega8? Jaka optymalizacja? Jaki kompilator GCC?
    Spor różnica w zajętości pamięci.

    Posiadam 'zestaw kompilujący' jak Ty, a wynik mi wyszedł jak koledze PROXAQQ

    Spoiler:
    Build started 23.10.2013 at 15:04:38
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd44780.o -MF dep/lcd44780.o.d -c ../LCD/lcd44780.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT onewire.o -MF dep/onewire.o.d -c ../1Wire/onewire.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT crc8.o -MF dep/crc8.o.d -c ../1Wire/crc8.c
    avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT ds18x20.o -MF dep/ds18x20.o.d -c ../1Wire/ds18x20.c
    avr-gcc -mmcu=atmega8 -Wl,-Map=test.map main.o lcd44780.o onewire.o crc8.o ds18x20.o -o test.elf
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature test.elf test.hex
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex test.elf test.eep || exit 0
    avr-objdump -h -S test.elf > test.lss

    AVR Memory Usage
    ----------------
    Device: atmega8

    Program: 4150 bytes (50.7% Full)
    (.text + .data + .bootloader)

    Data: 67 bytes (6.5% Full)
    (.data + .bss + .noinit)


    Build succeeded with 0 Warnings...
  • #7 12872913
    PROXAQQ
    Poziom 14  
    Posty: 30
    Pomógł: 10
    @dondu

    Tak, dla ATmega8.
    Kompilator WinAVR-20100110. Optymalizacja "-Os".
  • REKLAMA
  • #9 12872932
    Fabian77
    Poziom 13  
    Posty: 117
    Ocena: 17
    Używam Eclipse Ganymede i mam dołączone pliki .c i .h projektu. Robie Clean ale dalej problemy.


    **** Build of configuration Debug for project ProjektT ****
    
    make all 
    Building target: ProjektT.elf
    Invoking: AVR C Linker
    avr-gcc -Wl,-Map,ProjektT.map -mmcu=atmega8 -o"ProjektT.elf"  ./main.o  ./LCD/lcd44780.o  ./1Wire/crc8.o ./1Wire/ds18x20.o ./1Wire/onewire.o   
    c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: ProjektT.elf section .text will not fit in region text
    c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: region text overflowed by 13900 bytes
    make: *** [ProjektT.elf] Error 1
  • Pomocny post
    #10 12872991
    PROXAQQ
    Poziom 14  
    Posty: 30
    Pomógł: 10
    Utwórz jeszcze raz projekt i zaimportuj same pliki. Przy tworzeniu projektu wyłącz w konfiguracji opcję "Debug". Ma być tylko "Release".
  • #11 12873056
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Różnica w zajętości pamięci wynikała z ustawienia przeze mnie zegara 8MHz, podczas gdy Wy kompilowaliście dla 1MHz.

    Załączam plik Hex (dla 1MHz), bo autor tematu prosił. Czy to właściwy zegar nie wiem:
    Załączniki:
    • Program-uC.zip (4.42 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #12 12873089
    Fabian77
    Poziom 13  
    Posty: 117
    Ocena: 17
    Dzieki :) Chyba chodziło o to debagowanie :)
    Pozdrawiam !

    Zamykam.
    Dar.El

Podsumowanie tematu

✨ Użytkownik ma problem z kompilacją programu w C dla mikrokontrolera ATmega8, otrzymując błędy związane z przepełnieniem sekcji .text o 14298 bajtów. Inni uczestnicy dyskusji sugerują różne podejścia, takie jak użycie różnych IDE (Eclipse, AVR Studio, WinAVR) oraz optymalizacji kompilatora. Wskazówki obejmują utworzenie nowego projektu, importowanie plików oraz wyłączenie opcji "Debug" na rzecz "Release". Użytkownik zauważa, że różnice w zajętości pamięci mogą wynikać z ustawienia zegara, co potwierdzają inni uczestnicy. Ostatecznie, problem został rozwiązany poprzez zmianę ustawień kompilacji.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA