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

MPLAB - XC8 - konfiguracja linkera aby ROM był wypełniany od malejących adresów

marcukr 06 Cze 2018 23:08 198 1
  • #1 06 Cze 2018 23:08
    marcukr
    Poziom 9  

    Witam,
    zauważyłem, że w wygenerowanych u mnie plikach hex (CPU PIC18F..., kompilator/linker XC8), jest programowany obszar ROM od adresu 0x0000 powiedzmy 1kB do adresu 0x0400, a następnie ostatnie obszary ROM np. 0xF000-0xFFF8, pozostały obszar nietknięty (czyli 0xFF po erase).
    Dodawanie nowych funkcji, powoduje że kod "ląduje" głównie w obszarze końcowym ROM procesora np. od 0xE000-0xFFF8, a nie jest dodawany do początkowych sektorów, np. 0x0400-0x1400.
    Szukałem w ustawieniach MPLAB, specyfikacji kompilatora/linkera XC8, googlałem ale niestety nie trafiłem na wzmiankę czym to jest spowodowane, i czy da się wymusić aby linker 'umieszczał' kod od początku dostępnej przestrzeni ROM.
    Czy ktoś z was zauważył że linker podobnie umieszcza wygenerowany kod i czy może znalazł informację jak zmienić te 'zachowanie', czyli wybrać inne modele linkowania?

    Pozdrawiam
    Mariusz

    0 1
  • #2 07 Cze 2018 11:31
    trol.six
    Poziom 30  

    Nie wiem na jakiej zasadzie umieszcza linker program, ale zauważyłem że w zależności od tego czy używane są przerwania czy nie, rzeczywiście ma takież tendencje. Adres skoku przerwania jest na początku w 8-bitowcach.

    Możesz pobawić się ustalaniem adresu funkcji w ten sposób:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    U mnie działa, ale uprzedzam, nie wiem jakie to ma reperkusje na działanie programu.

    Ja używam darmowej wersji xc8 która w zasadzie wiele rzeczy nie potrafi ;)
    Stąd nie mam nadmiernych wymagań.

    0