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