WinAVR - mensi problemek se starup kodem

Jan Matejka matejka@cat.cz
Středa Listopad 2 12:33:29 CET 2005


Snad by mohla byt cesta vytvorenim vlastni inicializacni rutiny stejneho
jmena jako ma ta knihovni. Linker by si mel vybrat tu vasi explicitne
linkovanou. (nezkousel jsem)
Co s vektory preruseni me nenapada. Pokud jste zatim neuspel, muzu zkusit
stesti a kouknout do zdrojaku standardni knihovny, ale to asi az vecer.

Jan Matejka

> Potreboval bych odstranit z programu napsanem ve winavr pro 
> ATmega16 tabulku vektoru preruseni (program zadne nepouziva) 
> a implicitni inicializaci pokud mozno bez zasahu do scriptu linkeru
> 
> Tak nejak jsem se domnival, ze parametry -nostartfiles 
> -nodefaultlibs mi umozni zbavit se defaultni inicializace 
> primo v Cckovem fajlu, jenze se mi nejak nedari a nejsem 
> schopen to nikde dohledat :-((((
> 
> Vlastni inicializaci mam udelanou zjednodusene takto:
> 
> void __MyInit(void) __attribute__ ((naked)) __attribute__ 
> ((section (".init0")));
> 
> void __MyInit(void){
>   asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); ............
> ............
> ............
>   asm volatile ( "rjmp main");                         // 
> jump to main()
> }
> 
> a opravdu je na ni nesmerovan vektor resetu a provede se, 
> jenze WinAVR si klidne vedle toho nacpe do kodu svou vlastni 
> standardni inicializaci, ktëra se nikdy neprovede a zabira 
> jen drahocene misto.
> To same plati o vektorech preruseni - tech se mi zatim take 
> nepodarilo zbavit .
> 
> Vse by melo byt reseno pouze na urovni Cckoveho kodu, 
> pripadne parametry prekladace. Nehohu si z jistych duvodu 
> udelat zasah do scripru linkeru, tam to poresit dokazu
> 
> Byl bych vdecen za dobre nakopnuti :-)))
> 
> S pozdravem
> MK
>  
> 
> 
> 




Další informace o konferenci Hw-list