c: hi-tech 9,80, interrupt asm

Miroslav Draxal evik na volny.cz
Pondělí Březen 31 13:13:37 CEST 2014


Já to pro vyzkoušení udělal podobne , jenom mě zajímalo, jestli není
nějaké"volatile" pro funkce..

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Hynek Sladky
Sent: Monday, March 31, 2014 12:53 PM
To: HW-news
Subject: Re: c: hi-tech 9,80, interrupt asm

 

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/en5
58478.pdf

 

 

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


Další informace o konferenci Hw-list