Chyba v programu
Josef Stengl
ok1ced@nagano.cz
Úterý Listopad 25 10:56:05 CET 2008
Tohle není dobrý přístup.
- jen s velkými problémy zjistíte všechny případy ve kterých se to může
stát.
- je to pracné
- není to řešení příčiny ale obcházení následku.
- v budoucnosti wse vám to vymstí, protože na to zapmenete. nebo někomu
jinému kdo bude modifikovat program.
- zpožďuje se tím obsluha přerušení, což může být problém, protože se
zpožďuje o obtížně definovatelnou dobu
Jak jsem se již zmiňoval, je zajištěno že v přerušení nedojde k přepsání
registru procesoru? S PICama jsem nikdy nedělal, ale předpokálám že to
je CISC procesor s málo registry, tak někdy můře dojít k přepsání ve
funkci ze které se to přerušení vyvolá. U malých osmibitů není pravidlem
že se před volámím funkce překladač uloží všechny registy zo dá
zásobníku a pak se zase obnoví, musí se mu to oznámit (např. parametrem
k funkci - reentrantí funkce - jak to říci česky?) nebo zajisti aby
přerušení pužívalo svojí a pouze svojí sadu registrů.
Jelikož se tazatel mikde nezmiňuje o tom co jak je kód vlstně přeložen
tak bych navrhoval (nepředpolkádám že to není, ale ať se máme od čeho
odrazit - za křišťál dnesk chtejí děsný prachy)
- je zakázáno přerušení v které vyvolalo funkci přerušení v dané obsluze
přerušení (první věc zakážu, podlední povolím)
- používá obsluha přerušení svoje vlastní registry? A pokud ne je
přeložena jako reentrant? (viz asm výpis kódu)
pokud jsou tyto věci zajištěny, můžeme pokročit dále, jinak je to
krafaní u piva. A na to mi chybí pivo.
ced
Richard Kaliciak wrote:
> Dobry den,
>
>
>>> V tomto duchu pracuji, ale chyba se vyskytuje obcas. Poustim tam ruzne data
>>> a prumer chyb je tak 1 za hodinu. Takze to zabira spostu casu.
>>>
>
> to vyzera na porusenie atomicity nejakej operacie s premennymi typu int
> tym prerusenim. Nedavno tu dokonca bezala jedna "piatkova sutaz" na tuto
> temu, zda sa mi, ze to spustil wek.
> Ak v tom preruseni citate alebo zapisujete do viacbytovych premennych,
> ktore sa pouzivaju aj v hlavnom programe, tak zakazte pred pristupom k
> tymto premennym v hlavom programe prerusenie (a potom samozrejme povolte).
>
> Richard Kaliciak
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list