Bufer pro seriovou linku-

jiri@bezstarosti.cz jiri@bezstarosti.cz
Čtvrtek Květen 20 20:00:58 CEST 2004


Zdravim.

V tom co pisete se to i zpracovava a treba prerusenim od prijmu se plni
buffer ? Pak bych to jinak nez kruhovym bufferem neresil. Chce to jen dva
ukazatele do pameti, tedy kam se aktualne ma zapisovat a kde se aktualne z
bufferu cte a pohlidat si vsechny stavy, jako zda je neco ke zpracovani, ze
se prechazi z konecne adresy bufferu na pocatek, az po mozne preteceni (jako
ze to tomu co to cte pro zpracovani nesmi zacit prepisovat pred nosem, ale
osetri se chyba, ze to prijmout nelze, ponevadz uz neni kam). Ovsem aplikace
musi byt bud odolna vuci tomu, ze ji neco proste nedojde, nebo ji nesmite
zarucene "prehltit" a nebo ke zpracovani dochazi tak casto a rychle, ze k
preteceni proste ani dojit nemuze a vi se, ze se maximalne nabufferuje x
neceho, co se jednou za pruchod treba hlavni smyckou stihne zpracovat.

Pokud je zpracovani po nejakych blocich (jako ze tady ano), muzete si jeste
pomoci dalsim smernikem posunujicim se po kazdem prijatem bajtu, kdy az po
prijeti nejakeho znaku (ci jak bloky rozlisujete) oznacujiciho konec bloku
teprve presunete smernik, ktery urcuje, kam az je to platne zapsano do
bufferu, tedy ten prijaty blok v tom bufferu "zplatnite" az po jeho uplnem
prijmu a pokud k preteceni dojde, pak ten pomocny vratite "k noze" toho co
urcuje, kam az jsou platna prijata data. Do dokonceni prijmu bloku, ktery se
uz jen po preteceni zahazuje (nikam neuklada) je fajn si nahodit nejaky
priznak ruseny ukoncenim toho bloku. Proste bud se prijme dobre a vsechno z
bloku a ten co rika kam az je platne prijato hodite k tomu pomocnemu, nebo
se to nepovedlo a vratite naopak zpet ten pomocny. Tim pokud dojde k
preteceni behem prijmu jen ten smernik urcujici kam az jsou platna data
nepresunete a tak nebudete mit nejaky blok "napul prijaty" kvuli preteceni
:). Co patri jakemu bloku s nejakym prikazem, tedy kolik toho vzdycky vycist
z bufferu pro zpracovani se postara ten kus kodu co to zpracovava. Pri
pouziti pomocneho smerniku tak mate jeste jistotu, ze pokud v bufferu neco
platneho je, pak je to minimalne jeden cely blok.

Pokud Vam ma selhavat processor, pak potes. Ten totiz musi za vsech
okolnosti delat presne co ma napsano v programu a ne si vymyslet - to je pak
kazda aplikace na nic, kdyz si processor dela co ho k tomu "donapadne".
Pokud je duvod se obavat, ze bude prostredi v nemz to pobezi opravdu znacne
silene, da se take ledacos skoro sileneho vymyslet, aby se moznost
nefunkcnosti ci chyb co nejvice minimalizovala, ale to uz jsme myslim trosku
jinde a spise predpokladam, ze jste se ptal na to pretekani bufferu a jak na
ty bloky.

Snad jsem Vas tim teoretickym rozborem moc neznechutil :).

--
Jiri Bezstarosti


-----Original Message-----
From: Michal G. [mailto:MichalGregor@seznam.cz]
Sent: Thursday, May 20, 2004 3:53 PM
To: HW-News
Subject: Bufer pro seriovou linku-


Ahoj,
mam zpravy vysilane seriovou linkou, mají promennou delku 5-80byte. Pro
zjednoduseni jsem si vytvoril kruhovy bufer 11 zprav po 81 byte (1 byte
delka).
Premyslim o bufru s promennou delkou zaznamu. Mozna by to slo
synchronizovat- zprava na konci bufru nesmi pokracovat na zacatku bufru.
(vynecham pamet).
Staticke reseni se mi ale  subjektivne jevi lepe odolne vuci chybam.
Ma vubec smysl pocitat se selhanim procesoru?

Michal Gregor

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
HW-list@mailman.nethouse.cz
http://nethouse.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list