[elektro] Szegmentálási hiba

Móczik Gábor pm_levlista at progzmaster.hu
Wed Feb 12 14:28:49 CET 2014


2014.02.12. 13:26 keltezéssel, Acs Gabor írta:
> Most még olyanokról nem beszélve, hogy XOR chksm van a protokollban, mi
> van akkor, ha két hiba miatt nem veszem észre a sérülést, plusz valahol
> beengedi egy hiba a szűrőmön.

Hát ne XOR-t használj, az csak nagyon korlátozottan jó.
Szerintem egy CRC16 minimum dukálna a rendszerbe, és nem annyira 
számításigényes.

Azt biztos, hogy legyen egy blokknak eleje meg vége, és legyen rajta 
ellenőrzőösszeg. Ha nincs eleje vagy vége, nem jó a hossza, vagy rossz a 
checksum, tovább ne is foglalkozz vele.

Ha részlegesen fér a bufferbe, és ez menet közben derül ki, ürítsd ki a 
bufferből a részlegesen betett holmit mikor eldobod.

Ha normális jelenség, hogy egy parancs és a paraméterei olyan nagyok, 
hogy csak fragmentálva továbbíthatók, akkor számold a fragment-eket, 
legyen sorszámozva, ha valami hiányzik, eldobni az egészet.

Ami nincs, azt ne próbáld kitalálni. Error és kész. Majd küldenek jót.

Amit KJ írt, minden állapotból legyen kiút, akkor is ha a várt adat nem 
jön, vagy nem várt jön.

Egyébként nem tudom milyen rendszer, de a versenyhelyzeteket nézd még 
meg, nem lehet-e, hogy bizonyos csillag-együttáláásnál több thread 
akarja ugyanazt piszkálni, pl. a buffert, és egymásnak bezavarnak.

Pl. tipikus példa, ha a circular buffert az ISR írja, és a main olvassa. 
Ha a main lemarad, az ISR írná a következő adatot, de nincs hely, és nem 
a bejövő adatot dobja el, hanem a legrégebbit a bufferben, úgy hogy a 
read pointert továbblöki, akkor a main kicsit bezavarodhat, ha éppen azt 
olvasta.

Ha a state machine atombiztos, szerintem ilyeneket keress.



More information about the Elektro mailing list