Chyba v programu
Michal Gregor
michalgregor@centrum.cz
Úterý Listopad 25 20:26:24 CET 2008
V tom to asi nebude. Mam oddelene promenne pro ISR a hlavni program.
Zatim jsou dve moznosti:
- v preruseni se zatoula pointer a zkopiruje data kam nema
- spatne se vypocte adresa pro skok (Hi-Tech to podle vseho dela pres
zasobnik adres) a spusti se program ktery nema.
Ted premyslim nad vypisem zasobniku adres.
Michal Gregor
----- Original Message -----
From: "Jan Kral" <kral@fortech.cz>
To: "HW-news" <hw-list@list.hw.cz>
Sent: Tuesday, November 25, 2008 6:37 PM
Subject: RE: Chyba v programu
V pripade podezreni na problem s atomicitou operaci s vicebajtovymi
promennymi skutecne muze dochazet k ruzne podivnym zmenam v datech. Popsane
reseni je funkcni, ale ne jako reseni problemu, ale jako metoda na nalezeni
toho zda je toto skutecne problemem. Jestli ano, tak je to pak potreba
vyresit nejakym makrem ci jinak (napr. kdyz to podporuje prekladac).
Podle symptomu to skutecne vypada na nejaky takovyto problem a s vetsi
cetnosti preruseni se zvysi pravdepodobnost toho, ze se preruseni vyvola
uprostred operace s vicebytovou promennou. Jeste vetsi legrace muze nastat v
pripade, ze by jste s takovouto promennou bez osetreni na atomicitu nekde
pracoval bez ukladani (pouzil ve vyrazu pripadne v podmince) a pak se divil
jak je mozny obcasny vysledek napr. 257, kdyz mozne stavy jsou napr. jen 256
a 1. Kdyz to napisete takto, tak je to jasne, ale je-li to v hotovem
programu, tak se pak clovek jen divi.
S pozdravem JK
>
> 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
> >
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
_______________________________________________
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