[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