Hi all,
My design is based on FreeRTOS+IO and FreeRTOS+CLI demo 2 functionality provided by FreeRtos.
I used it to make a socket server application (TCP server), the function is good but I want to investigate about the speed.
I monitor my “conection” with WireShark, and send data from the PC to by board. I’ve got a custom application which send me data (around 88 Bytes in 5 packets).
And I found that the speed is slow 2Mbits/sec.
I use the socket api.
And I would like to know how to increase this speed I know that I can expect 100Mbits/sec ( also I use a TCP server) but I’m expected around 40Mbits/sec.
Thanks for help.
FreeRTOS LWIP LPC1769 LPCXpresso
FreeRTOS LWIP LPC1769 LPCXpresso
Note an update to the FreeRTOS+IO code has just been released. You can download it from the existing FreeRTOS+IO featured demo web page.
The sockets interface is going to be the slowest of the three available lwIP APIs. I know there has been some discussion on the lwIP mailing list about the sockets performance, I would recommend looking in their archive.
Regards.
FreeRTOS LWIP LPC1769 LPCXpresso
Ok thanks for the reply.
Maybe someone can show me how to use the netconn api, I want to make a simple tcp server. I tried this piece of code
Maybe someone can show me how to use the netconn api, I want to make a simple tcp server. I tried this piece of code
struct netconn *conn, *newconn;
err_t err;
/* create a connection structure */
conn = netconn_new(NETCONN_TCP);
/* bind the connection to port 2000 on any local IP address */
netconn_bind(conn, NULL, 7);
printf("Now listeningn");
/* tell the connection to listen for incoming connection requests */
netconn_listen(conn);
/* Grab new connection. */
err = netconn_accept(conn, &newconn);
printf("accepted new connection %pn", newconn);
/* Process the new connection. */
if (err == ERR_OK)
{
struct netbuf *buf;
void *data;
u16_t len;
while ((err = netconn_recv(newconn, &buf)) == ERR_OK)
{
printf("Received datan");
do{
netbuf_data(buf, &data, &len);
err = netconn_write(newconn, data, len, NETCONN_COPY);
if (err != ERR_OK)
printf("tcpecho: netconn_write: error "%s"n", lwip_strerr(err));
}while (netbuf_next(buf) >= 0);
netbuf_delete(buf);
}
/* Close connection and discard connection identifier. */
netconn_close(newconn);
netconn_delete(newconn);
}
There is something I don’t understand (sorry but I’am not familiar with tcp/ip stack) to initialize the emac driver and the lwip stack, on the example (from freeRtos) we could see :
tcpip_init( lwIPAppsInit, NULL );
Why I can’t write
tcpip_init( NULL, NULL );
lwIPAppsInit();
For now this doesn’t work, the server start receiving data then nothing and the data rate goes near 0bps.