Stránka 1 z 1

Softwarove rizeni toku

Napsal: 19 zář 2009, 00:40
od goody
Mam nasledujici problem, resp. muj pritel. Do vseho co delam, davam rizeni toku. Kdyz je to na ARM, tak hardware, kdyz PIC,ATMEL,51,Freescale atd, tak software a zde je jadro pudla. Zatim mi to pokazde fungovalo ok, ale ted jsem se setkal s tim, ze kdyz dojde k naplneni bufferu odeslu xoff a nasledne xon, dojde k vynechani prvniho znaku v okamziku ukonceni. Nekdo by rekl ze jsem vul a posilam xoff az na konci. Ne nejsem. Mam jeste 20bytes rezervu, aby do me mohl pitomy PC vyprasit svuj buffer, protoze na PC se to dela opravdu softwarove a jak je buffer toho UARTu plny, tak xoff osetri az SW a stejne do me ten buffer vypraska. Nutno rict ze zatim to bylo pokazde OK, ale on ma chipset NVIDIA a tam se tohle deje. Vypnuti bufferu ve widlich funguje, nic mene neblahou vlastnosti widli je ze po xon si daji nacas, nez zacnou sypat data. Resp. nez se ta zprava dostane k ridici aplikaci ta posle data. Takze docela brzdeni provozu.

Moje otazka zni. Lze to resit nejak inteligentne? Kde je jadro toho pudla? Ma NVIDIA vetsi buffer jak tech 14 znaku na send strane. RECV vynechte, protoze jednotka lokalne zkaky neopisuje a pouze semtam ze sebe blafne data na request. A toto se deje pri kontinualnim prcani dat. Je na to nejaky patche na driver? Nebo kolik je tedy optimalni rezerva pro xoff? Jsem si jist ze chyba neni v jednotce. Jinde to funguje a pokud vypnu v ovladaci toho seriaku buffer funguje to ok.

Prosim poradte

Napsal: 19 zář 2009, 00:50
od goody
Jeste pro doplneni. Ted jsem se dival spetne na sve src a ma se to tak. Recv. buffer mam 64 znaku. Xoff posilam pri 44 a xon posilam az mi buffer padne pod 32 a dulezite info !!!!!

Nedojde to do buffer overlow .... Tzn. ten znak se nestrati kuli tomu, ze by ta NVIDIA mela vetsi buffer a prechlejstla me. Otazka zni jestli je to chyba te nvidia, nebo toho SP3 pro XP, nebo kyho slaka a jaky to ma reseni.

Rada prejit na HW rizeni toku neni pripustna, protoze by to znamenalo menit schemu toho HW a nutno rict, ze to je prvni exemplar ze 150, abych to neprehanel.

A dalsi info nedela to porad. Ted zjistuji, ze to dela pri prvnim xoff po otevreni toho seriaku. Nasledne uz to bezi korektne. Coz je jeste divnejsi. Pac na strane te jednotky je to ok. Takze urcity reseni by bylo poslat pri zacatku xoff/xon. Ale to se mi nezda vedecke reseni problemu.

Napsal: 19 zář 2009, 18:44
od Návštěvník
goody píše:kdyz dojde k naplneni bufferu odeslu xoff a nasledne xon, dojde k vynechani prvniho znaku v okamziku ukonceni.

Šlo by to napsat pro blondýnu? Já nějak nepochopila, který znak se ztratí. :oops:

Napsal: 20 zář 2009, 15:48
od goody
Po prijeti xoff na strane PC (od jednotky) se zastavi komunikace. Po poslani XON jednotkou (buffer uz ma dost mista), obnovi PC komunikaci, ale vynecha prvni znak. Deje se tak v hyperterminalu. Nasledne jiz to funguje OK a deje se to pouze na tom jednom PC.

Napsal: 22 zář 2009, 15:37
od mtajovsky
Máte tam skutečný RS232 nebo USB převodník? Mě se u jedné aplikace stalo, že po přechodu z reálného RS232 na USB náhradu se začal ztrácel první znak po otevření COMu. Komunikaci zahajovalo PC. Tak jestli to není něco v tom stylu.