[avr-gcc] Programowy reset procesora

Spinacz biurowy, Saper/nolin11 <nolin11_USUNT snipped-for-privacy@interia.pl!

Chyba nie zrozumiałeś :)

Wywołanie funkcji odkłada na stos adres powrotu. Jeżeli funkcja nigdy się nie kończy i rekurencyjnie się wywołuje (tak jak u ciebie), to stos się prędzej czy później przepełni i zacznie mazać po pamięci, którą sobie zaalokowałeś (AVRy nie mają sprzętowej ochrony pamięci) i mogą być niezłe jaja (na początku nowe próby alokacji pamięci przestaną się udawać, bo libc będzie próbowała uratować co się da, a potem już zaalokowana pamięć zostanie zamazana).

Więc teraz działa, ale po jakimś czasie (odpowiedniej liczbie wywołań main()) przestanie.

Reply to
Adam Wysocki
Loading thread data ...

Adam Wysocki przemówił ludzkim głosem:

Akurat main w swoim prologu ustawia wierzchołek stosu (przynajmniej w dotychczasowych wersjach avr-gcc), więc przepełnienie raczej nie grozi.

Reply to
Zbych

In the darkest hour on Fri, 02 Mar 2007 21:20:20 +0100, Zbych snipped-for-privacy@onet.pl screamed:

A sprawdzałeś, czy ręczne wywołanie main wykona inicjalizację czy może tylko będzie skokiem do pierwszej instrukcji w body? Będę musiał to sprawdzić...

Reply to
Artur M. Piwko

Po jmp 0 pewnie tez zadzialaja :-)

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.