XC8 pro PIC a problem __section

Libor Konečný support na mikrovlny.cz
Středa Říjen 27 14:57:29 CEST 2021


Dobry den vsem

Hledam radu od zdejsich expertu.

Presedlal jsem na XC8 a novy MPLAB.

Ten nepouziva linker script a ja diky tomu bobuji s velkym problemem.


Mam  funkce:

boot1(); boot2(); az bootN()


a pak funkce main(); debug(); a dalsi();


potrebuji kompilatoru dat vedet, aby mi veskere funkce zkompiloval do 
programove pameti ale vyhrazene  napriklad od 1B000h-1BFFFh

Ale tak, aby se v teto sekci nachazely jen funkce ktere urcim, zadne jine.

Zkousel jsem nastaveni pomoci sekci -Wl,-aBootAdresa=1B000h-1BFFFh -Wl, 
-pBOOTSekce=SpodniAdresy

tedy

__section("BOOTSekce") boot1();

__section("BOOTSekce") boot2();

__section("BOOTSekce") bootN();

A pak vsechno ostatni do sekce  MAIN, ktera ma vyhrazene adresy od 0xc0 
az 0x10000h


Coz funguje, ale..... do techto sekci konkretne do BOOT tam kompilator 
nacpe i takove funkce, ktere nemohu ovlivnit jako jsou

__end_of___aldiv                             text79        01D4F8
__end_of___awdiv                             text130       01D6BA
__end_of___awmod                             text126       01D7AC
__end_of___lbdiv                             text145       01DB6A
__end_of___lbmod                             text176       01DBCA
__end_of___lldiv                             text206       01D73C
__end_of___lmul                              text201       01D8C8
__end_of___lwdiv                             text252       01D96E
__end_of___lwmod                             text202       01DAEE
__end_of___wmul                              text255       01DBF4
__end_of__fassert                            text121       01DC1C

__end_of_strcat                              text225       01D818
__end_of_strcpy                              text209       01D91C
__end_of_strlen                              text254       01DA0E

__pidataBANK2                                idataBANK2    01DC4E
__pidataBANK3                                idataBANK3    01DC46
__pidataBANK4                                idataBANK4    01DA0E
__pidataBANK5                                idataBANK5    01DAEE
__pidataBANK6                                idataBANK6    01D5AA
__pidataBANK7                                idataBANK7    01D96E

a dokonce __pcinit cinit         01D2DE  coz nevim co je ,asi nejaka 
interni startovaci funkce,

a co nechapu, proc se mi to snazi narvat do te bootsekce na konec 
programu, kdyz ma sakra misto na nizsich adresach.


Ma otazka je, jak donutit linker k tomu aby sekci BOOT  mel jako najeky 
PROTECT, do ktere by nacpal jen funkce oznacene __section.


Velke diky tomu, kdo me vytahne ze .... ehm z bahna noveho XC8 :-)


Libor






Další informace o konferenci Hw-list