STM32F4 LWIP rychlost

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Neděle Duben 21 09:45:09 CEST 2013


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



Další informace o konferenci Hw-list