STM32F4 LWIP rychlost

Marek Sembol hwm.land na gmail.com
Neděle Duben 21 10:39:29 CEST 2013


no mne to chovani prijde minimalne hodne zvlastni a asi bych intenzivne
hledal chybu u sebe. Pripadne bych opustil UdpClient a pracoval primo se
Socket. Ale fakt si myslim, ze za to .NET nemuze. Podle mne trida Socket
pouze zabali WinAPI a UdpClient "zjednodusi" pouzivani Socket (spolu se
specializaci na UDP a radou omezeni)
Marek


2013/4/21 Jaroslav Buchta <jaroslav.buchta na hascomp.cz>

>  Ajo vidite, Close, to me nenapadlo ;-) Zkusim. Ale stejne to casem asi
> udelam ve Win API, kdyz s tim polem bytu nebude problem.
>
> Dne 21. 4. 2013 10:12, Marek Sembol napsal(a):
>
> vyjadrim se jen castecne:)
> Pokud pri tom volani z C# -> WinAPI ty "velke objemy dat" jsou Byte[], tak
> ta konverze je prakticky zadarmo.
> .NET si to pole proste jen prispendli v pameti a preda dal ukazatel.
>
>  Synchronni vs. asynchronni - no tady se to asi nebude chovat rozdilne.
> Ono to synchronni volani byva proste jen par volani BeginAsyncXXX a
> EndAsyncXXX.
>
>  Aplikace se samozrejme ukoncit da. Staci treba zavrit ten socket a
> volani prijmu skonci na vyjimku (a tu je mozno osetrit, ze). Moznosti jak
> ten socket zavrit je cela rada. Jako rekce na CTRL-C (pri konzolove
> aplikaci), jako reakci na service-stop (pri service), jako volani
> naschedulovane pomoci timeru (kdykoliv) a podobne.
>
>  Marek
>
>
> 2013/4/21 Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
>
>> Diky za namety, zarizeni zda se funguje docela zpusobne, co nefunguje
>> podle predstav je trida .NET UdpClient na PC - proste pokud neodeslu aspon
>> bajt na zarizeni, nic neprijme a i potom za nejaky timeout chcipne a pomuze
>> az odeslani dalsiho byte aby zase bylo neco prijmuto - nic jineho takze
>> port atd. je asi nasteveno spravne... Neni nejaka option, kterou jsem zatim
>> nepostrehnul, aby to fungovalo primitivne a jen cekalo, az na port neco
>> prijde??? Zkousel jsem uz vsechny mozne varianty synchronni (tam je vtipne,
>> ze Receive nema zadny timeout a aplikace se nakonec ani neda ukoncit...) i
>> asynchronni. C# je dobre asi fakt jen na GUI...
>>
>> Co zatim hledam, tak jsou s touto tridou jen problemy - je jina cesta nez
>> pouzit DLL kde to bude realizovano jako WinAPI (coz by snad mohlo
>> fungovat...) Zase konverze velkych objemu dat do C# pak bude asi narocna na
>> rezii...
>>
>>
>>
>>
>> Dne 21. 4. 2013 9:35, Ondrej napsal(a):
>>
>>  Někde v lwipopts.h jde nastavit max. velikost paketu. 1400B je velikost
>>> paketu (náhoda :-) - takže by se někde měla ještě povolit fragmentace. Ale
>>> 100% jistý si tím nejsem. Nicméně zrovna ST má pěkné PDF s návodem na lwip.
>>> Byly tam myslím i nějaké testy rychlosti.
>>>
>>> Add: ztrácení paketů: Nainstalujte si Wireshark a zkontrolujte, jestli
>>> jsou pakety tam. To je naprostý základ. Je docela slušná šance, že ST
>>> odesílat stíhá a nestíhá přijímat jen program. Ono obecně odeslat UDP paket
>>> není problém a to i na velkých rychlostech. Obvykle je problém pak data
>>> napřijímat (ať už v PC nebo na uP).
>>>
>>> Jinak UDP fragmentace smysl má a to velký. Pro velké toky je problém
>>> přijímat 1400B pakety, ale pokud je fragmentuje třeba na 14000B (10x
>>> větší), tak u to může PC stíhat. Už jen třeba protože "callback"
>>> fce./přerušení se bude volat 10x méně často.
>>>
>>> Ondřej
>>>
>>> Dne 20.4.2013 22:54, Jaroslav Buchta napsal(a):
>>>
>>>> Mate nekdo zkusenost jak na to? Jednak jsem zjistil, ze je nekde
>>>> omezena velikost UDP paketu proste tak, ze pri prekroceni to poskodi haldu
>>>> a cele to jde do kytek, hranice je nekde kolem 1400B
>>>> Dal je zajimave, ze kdyz odesilam pakety bezprostredne za sebou,
>>>> ztraceji se (ale az od nejakeho poctu a zalezi na delce) a kdyz treba ted
>>>> za kazdy 4. vlozim pauzu 1ms tak to funguje OK (cili rychlost 4MB/s
>>>> stabilne, coz mi prijde OK, samozrejme prime pripojeni do pocitace)
>>>> Otazkou je, jestli se pakety ztraci u STM nebo na strane PC... Ale na
>>>> PC je gigabit, to by snad melo byt slusne dimenzovane.
>>>> Dalsi zahada je u C# s UdpClient, dokud aspon bajt nevyslu, nic
>>>> neprijmu (i kdyz data na port prokazatelne chodi, overeno hercules
>>>> terminalem). To jsem v dokumentaci nikde nenasel, melo by to snad fungovat
>>>> pro prijem bez volani Connect a Send, ne?
>>>>
>>>> Jinak teda s rychlosti spokojenost, mozna by to slo i o chlup vyse,
>>>> prilezitostne vyzkousim. Taky by asi pomohlo zvysit delku paketu - vi nekdo
>>>> jak na to? Pochopil jsem, ze jsou ruzne metody alokace pameti v LwIP.
>>>> _______________________________________________
>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>
>>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130421/df10644a/attachment.htm>


Další informace o konferenci Hw-list