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

[Rozwiązano] Sekcja pliku makefile: znaczenie i konieczność, błąd kompilacji

Mirek_1 16 Sty 2021 20:24 558 3
REKLAMA
  • #1 19188561
    Mirek_1
    Poziom 4  
    Witam

    Proszę o wyjaśnienie starszych kolegów za co odpowiada poniższa sekcja pliku makefile:
    %.cof: $(TARGET).elf
    $(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 $< $@

    Problem z tym mam taki że jak mam załączoną tą sekcję to wyskakuje mi błąd podczas kompilacji. Jak ją "zaremuję" to kompilacja przechodzi bez problemu i jest tworzony plik .hex. W załączniku zamieszczam plik makefile oraz plik .txt z błędem podczas kompilacji. Gdyby się ktoś mądrzejszy znalazł i mógł mi trochę rozwiać wątpliwości co jest nie tak i czy ta sekcja jest konieczna.
    Pozdrawiam
    MP
  • REKLAMA
  • Pomocny post
    #2 19188730
    maciej_333
    Poziom 38  
    Coś takiego odpowiada za stworzenie mapy pamięci. Z pewnością jednak takiej przestrzeni adresowej nie ma w AVR. Tutaj przestrzeń adresowa jest tylko 16-bitowa. Stąd jest komunikat "never used". Wygląda na to, że jest to jakaś kompilacja do debugowania tego kodu, ale pod inną platformą (np. Windows). Biorąc to pod uwagę myślę, że zmienić trzeba też coś w kodzie źródłowym programu. Najpewniej jest tam jakaś kompilacja warunkowa na podstawie stałej w stylu "PLATFORM". Powinno się raczej odpowiednio zmienić te adresy.
  • REKLAMA
  • #3 19191729
    abant
    Poziom 12  
    Ten fragment makefile odpowiada za konwersję pliku wynikowego typu *.elf do pliku typu *.coff (format starszy, coraz rzadziej używany)

    Jeśli taki plik jest Ci potrzebny, to ta sekcja też. Jeśli nie, to masz coś źle poustawiane we własnościach projektu.

    Ostrzeżenia z mbport.h:91 i porttimer.c:41 są z winy programu, i nie mają nic wspólnego z tematem.
    4 ostrzeżenia "never used" są w porządku, bo pewnie w programie nie używasz eeprom ani zmiennych z attrybutem "noinit"

    Pozostaje problem że według konwertera plik *.coff nie pozwala na używanie w kodzie typu "int constant"
    Poszukaj gdzie masz taką deklarację i sprawdź czy tak miało być.

    Albert
  • #4 19200991
    Mirek_1
    Poziom 4  
    Jak w wiadomościach powyżej
REKLAMA