STM32H7 LWIP problem

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Úterý Září 3 15:03:06 CEST 2019


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




Další informace o konferenci Hw-list