c: hi-tech 9,80, interrupt asm

Hynek Sladky econf na centrum.cz
Pondělí Březen 31 12:53:05 CEST 2014


No vidite, uz je to dlouho a mnoho detailu jsem si nevzpomnel... Tohle 
jsem nasel na konci kodu:-)
   do {
     ....
   } while (1);
   // dummy call to prevent removing vectors function by optimizer
   vectors ();
Samozrejme se to misto nikdy neprojde, takze se funkce nezavola, ale 
zustane v kodu zachovana.

Diky za odkaz na PDF. Kdyz jsem psal prvni bootloader, tak zrejme jeste 
prezentace nebyla k dispozici, nicmene to mam resene dost podobne. Pak 
to uz fungovalo, tak uz jsem to nemenil :-)

Hynek Sladky



Dne 31.3.2014 12:30, Miroslav Draxal napsal(a):
>
> No a jak řešíte, aby vám překladač neoptimalizoval tu vaší funkci? 
> Udělejme nejjednodušší možnou funkci ve tvaru:
>
> static void vectors (void) @ 4 {
> #asm
>   goto 0x804 & 0x7FF
> #endasm
> }
>
> potom, pokud jí někde v kódu nevoláte, tak ji překladač zoptimalizuje 
> a nepřeloží ji.
>
> XC8 to skutečně schroupe správně 9.80 nikoli.
>
> Tohle Vám skutečně chodilo pod 9.83?
>
> Jak to dělat správně s bootloaderem po XC8 je tady 
> http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en558478.pdf
>
>

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140331/45a55ff9/attachment.html>


Další informace o konferenci Hw-list