Zaslal: pá září 18 2009, 23:40 Předmět: Softwarove rizeni toku
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.
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.
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.
Založen: Sep 19, 2007 Příspěvky: 3698 Bydliště: Praha
Zaslal: út září 22 2009, 14:37 Předmět:
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.
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.