WinAVR - mensi problemek se starup kodem

MK info@mcu.cz
Úterý Listopad 1 18:22:16 CET 2005


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