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