Softwarove rizeni toku

Počítače stolní, notebooky, tablety, tiskárny, scanery a vše, co nějak souvisí s PC

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
goody
Příspěvky: 151
Registrován: 13 zář 2009, 00:00
Kontaktovat uživatele:

Softwarove rizeni toku

#1 Příspěvek 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
Uživatelský avatar
goody
Příspěvky: 151
Registrován: 13 zář 2009, 00:00
Kontaktovat uživatele:

#2 Příspěvek 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.
Návštěvník

#3 Příspěvek 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:
Uživatelský avatar
goody
Příspěvky: 151
Registrován: 13 zář 2009, 00:00
Kontaktovat uživatele:

#4 Příspěvek 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.
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#5 Příspěvek 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.
Odpovědět

Zpět na „Výpočetní technika“