[elektro] C csodálkozás

zulu zulu at gmail.hu
Tue Oct 1 21:12:21 CEST 2013


2013-10-01 20:58 keltezéssel, Móczik Gábor írta:
> A main()-re gondolsz?
> Az is csak egy sima függvény. Ott is használható a return, de véget ér a program. PC-n. Mikrokontrolleren ez általában nem normális, többnyire 
> generál egy reset-et a startup kód, vagy végtelen ciklusban lefagy, ha a main() visszatérne.

Én anno avr-gcc-vel szaladtam a sűrűbe:

int main (void){
.
.
.
}

Lényegében volt egy inicializálás, és minden elindult (volna) interruptosan. Mielőtt az utolsó szál hajamat kitéptem volna
megnéztem az assembly listát. Ennek a programnak a vége végtelen ciklus, ez nem is lett volna baj. De hogy tuttira kifagyjon
minden, a gcc odabigyeszt még egy cli utasítást is:

0000291a <_exit>:
    291a:       f8 94           cli

0000291c <__stop_program>:
    291c:       ff cf           rjmp    .-2             ; 0x291c <__stop_program>

Ergo for(;;); kell a program végére, ha miden irq-val megy.

-zulu



More information about the Elektro mailing list