STM32H7 LWIP problem

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Září 16 13:23:23 CEST 2019


Vratil jsem se k problemu a je to asi na strane Win10, resp. pomuze u 
LAN vypnout sluzbu
LiveQoS NDIS 6 Filter Driver
Co to je a odkud se to vzalo a proc to dela?
Na jinych pocitacich to nemam...

Dne 03.09.2019 v 18:52 Jaroslav Buchta napsal(a):
> Tak dalsi indicie:
> - Z Win XP pocitace funguje odesilani dobre (Hercules terminal, drzim 
> nejake pismenko)
> - Z Win10 se to po 144 znacich sekne, nektere pakety se odesilaji 
> viceznakove, ke konci vesmes jednoznakove a pak to utne a uz neodejde 
> nic. Stejny postup s hercules terminalem
> - Vlastni aplikace v C# se chova stejne (buttony nemaji smysluplne 
> nazvy, je to pripojeni, odpojeni, poslani znaku)
> - putty zda se chova korektne, kdyz odesilam prazdne radky, i na win 
> 10 ale nemam jeste jistotu, ze jsem odeslal skutecne tech 144 
> znaku/paketu
> - kdys stridam odesilani sad znaku v poctu cca desitek v davce, chodi 
> to bez problemu take
> - wireshark ktery sleduje komunikaci klienta s win 10 se chova divne, 
> predstira oboustrannou komunikaci i pri zastavenem MCU...
>
> Zacinam podezrivat windows z nejake bezpecnostni kulisarny, nebo uz to 
> vubec nechapu. Asi to neni optimalni ale proc by melo neco pranit 
> nasobnemu odesilani nekolikabytovych paketu??? Navic se pak spojeni 
> neuzavre pokud se odpoji klient, pokud se odpoji server, tak se 
> spojeni ukonci i na strane klienta. Nebo je nejaka chyba v 
> implementaci na strane LWIP ze treba posila spatne udaje v ACK?
>
>
>
>
> Dne 03.09.2019 v 15:03 Jaroslav Buchta napsal(a):
>> Tak jsem z toho naprosto jelen, vypada to, ze do dratu data nechodi i 
>> kdyz se wireshark tvari, ze jo a dokonce predstira, ze chodi ACK pri 
>> pokusu o vyslani paketu se znakem kdyz je procesor zastaveny (to 
>> predpokladam sam PHY nebo ETH radic bez beziciho programu nezvlada 
>> nebo ano?) Od ETH radice vubec neprichazi preruseni od prichozich 
>> dat, dalsi pripojeni nebo PING pritom normalne fungujou. Nevim, 
>> jestli jsem neprehlednul nastaveni nejakeho filtru, je to generovano 
>> z CubeMX bez zasadnich modifikaci doufam...
>> Zitra si prinesu router se sledovanim tak jsem zvedavy...
>>
>>
>>
>> Dne 03.09.2019 v 10:51 Jaroslav Buchta napsal(a):
>>> Zdravim, narazil jsem opet na problem - pokud pouze na strane STM 
>>> prijimam, tak se prijem po pravidelnem poctu znaku (ale spis paketu 
>>> po jednom znaku, myslim 144) sekne a z netconn_recv to uz nevypadne 
>>> ani po uzavreni spojeni. Mam dojem, ze ani neblika LED na RJ45 ale 
>>> dle wireshark PC data posila...
>>>
>>> Pokud do MCU doplnim timeout, ze se spojeni po preruseni prijmu 
>>> ukonci, da se znovu pripojit a jede to. Pokud prijem prokladam 
>>> vysilanim, treba po 10 znacich, zda se to taky funkcni (to je ted v 
>>> programu netconn_write...) po 100 znacich uz zase ne...
>>>
>>> Nesetkal se s tim nekdo? Jako by se nekde neco neuvolnovalo ale uz 
>>> me nenapada co pro to udelat.
>>>
>>>
>>> #include "GlobalDefs.h"
>>> #include "lwip/api.h"
>>>
>>> static const char *tag = "MBN";
>>>
>>> struct netconn *conn;
>>> struct netconn *incconn = NULL;
>>>
>>> void mbnetServer(void const * argument)
>>> {
>>>     struct netconn *incconn = (struct netconn *)argument;
>>>     TERMLOG_I(tag, "Start Modbus TCP Task");
>>>     int n = 0;
>>>     for (;;)
>>>     {
>>>         struct netbuf *buf=NULL;
>>>         err_t err = netconn_recv(incconn, &buf);
>>>         if (err == ERR_OK)
>>>         {
>>>             do
>>>             {
>>>                 void *data;
>>>                 uint16_t len;
>>>
>>>                 /* obtain a pointer to the data in the fragment */
>>>                 netbuf_data(buf, &data, &len);
>>>                 uint8_t *c = (uint8_t *)data;
>>>                 while (len != 0)
>>>                 {
>>>                     terminal_Out(TERMTG_ALL, TERMCOL_DEFAULT, "%c", 
>>> *c);
>>>                     if (++n % 10 == 0)
>>>                     {
>>>                         netconn_write(incconn, "*", 1, NETCONN_COPY);
>>>                     }
>>>                     c++;
>>>                     len--;
>>>
>>>                 }
>>>             } while(netbuf_next(buf) >= 0);
>>>             netbuf_delete(buf);
>>>         }
>>>         else
>>>         {
>>>             break;
>>>         }
>>>     }
>>>     netconn_close(incconn);
>>>     netconn_delete(incconn);
>>>     TERMLOG_I(tag, "End Modbus TCP Task");
>>>     vTaskDelete(NULL);
>>> }
>>>
>>> void mbnetMain(void const * argument)
>>> {
>>>     err_t err;
>>>     conn = netconn_new(NETCONN_TCP);
>>>     if (conn==NULL)
>>>     {
>>>         vTaskDelete(NULL);
>>>         return;
>>>     }
>>>     err = netconn_bind(conn, NULL, 502);
>>>     if (err != ERR_OK)
>>>     {
>>>         vTaskDelete(NULL);
>>>         return;
>>>     }
>>>     /* Tell connection to go into listening mode. */
>>>     err = netconn_listen_with_backlog(conn, 2);
>>>     if (err != ERR_OK)
>>>     {
>>>         vTaskDelete(NULL);
>>>         return;
>>>     }
>>>     for (;;)
>>>     {
>>>         struct netconn *newconn;
>>>         err_t err = netconn_accept(conn, &newconn);
>>>         if (err == ERR_OK)
>>>         {
>>>             TERMLOG_I(tag, "New Modbus TCP connection");
>>>             osThreadDef(mbNetServer, mbnetServer, osPriorityNormal, 
>>> 0, 512);
>>>             osThreadCreate(osThread(mbNetServer), (void *)newconn);
>>>         }
>>>     }
>>> }
>>>
>>>
>>> void mbnet_Init()
>>> {
>>>     osThreadDef(mbNetMain, mbnetMain, osPriorityNormal, 0, 512);
>>>     osThreadCreate(osThread(mbNetMain), NULL);
>>> }
>>>
>>> void mbnet_Service()
>>> {
>>> }
>>>
>>> _______________________________________________
>>> 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




Další informace o konferenci Hw-list