diff --git a/examples/networking/lwip/enet_cpsw_tcpserver/am243x-lp/r5fss0-0_freertos/example.syscfg b/examples/networking/lwip/enet_cpsw_tcpserver/am243x-lp/r5fss0-0_freertos/example.syscfg index 51e1cb4c7d..c7f85eda98 100644 --- a/examples/networking/lwip/enet_cpsw_tcpserver/am243x-lp/r5fss0-0_freertos/example.syscfg +++ b/examples/networking/lwip/enet_cpsw_tcpserver/am243x-lp/r5fss0-0_freertos/example.syscfg @@ -2,7 +2,7 @@ * These arguments were used when this file was generated. They will be automatically applied on subsequent loads * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments. * @cliArgs --device "AM243x_ALX_beta" --package "ALX" --part "ALX" --context "r5fss0-0" --product "MCU_PLUS_SDK@07.03.01" - * @versions {"tool":"1.14.0+2667"} + * @versions {"tool":"1.17.0+3128"} */ /** @@ -37,19 +37,20 @@ gpio1.pinDir = "OUTPUT"; gpio1.$name = "CONFIG_ENET_RGMII_PHY_RST"; gpio1.GPIO.$assign = "GPIO0"; gpio1.GPIO.gpioPin.pu_pd = "pu"; -gpio1.GPIO.gpioPin.$assign = "ball.W20"; +gpio1.GPIO.gpioPin.$assign = "GPMC0_AD11"; gpio2.pinDir = "OUTPUT"; gpio2.$name = "CONFIG_ENET_RGMII_MUX_SEL"; gpio2.GPIO.$assign = "GPIO0"; gpio2.GPIO.gpioPin.pu_pd = "pu"; -gpio2.GPIO.gpioPin.$assign = "ball.Y20"; +gpio2.GPIO.gpioPin.$assign = "GPMC0_AD12"; i2c1.$name = "CONFIG_I2C0"; eeprom1.peripheralDriver = i2c1; i2c1.I2C.$assign = "I2C0"; -pruicss1.$name = "CONFIG_PRU_ICSS0"; +pruicss1.$name = "CONFIG_PRU_ICSS0"; +pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; debug_log.enableUartLog = true; debug_log.enableCssLog = false; @@ -86,21 +87,23 @@ mpu_armv76.$name = "CONFIG_MPU_REGION6"; mpu_armv76.size = 27; mpu_armv76.baseAddr = 0x60000000; -enet_cpsw1.$name = "CONFIG_ENET_CPSW0"; -enet_cpsw1.DisableMacPort2 = true; -enet_cpsw1.PktInfoOnlyEnable = true; -enet_cpsw1.LargePoolPktCount = 32; -enet_cpsw1.mdioMode = "MDIO_MODE_MANUAL"; -enet_cpsw1.txDmaChannel[0].$name = "ENET_DMA_TX_CH0"; -enet_cpsw1.rxDmaChannel[0].$name = "ENET_DMA_RX_CH0"; -enet_cpsw1.pinmux[0].$name = "ENET_CPSW_PINMUX0"; -enet_cpsw1.pinmux[0].MDIO.$assign = "MDIO0"; -enet_cpsw1.pinmux[0].MDIO.MDC.$assign = "ball.W1"; -enet_cpsw1.pinmux[0].MDIO.MDIO.$assign = "ball.V2"; -enet_cpsw1.pinmux[0].RGMII1.$assign = "RGMII1"; -enet_cpsw1.pinmux[0].RGMII2.$assign = "RGMII2"; +enet_cpsw1.$name = "CONFIG_ENET_CPSW0"; +enet_cpsw1.DisableMacPort2 = true; +enet_cpsw1.PktInfoOnlyEnable = true; +enet_cpsw1.mdioMode = "MDIO_MODE_MANUAL"; +enet_cpsw1.LargePoolPktCount = 32; +enet_cpsw1.PktInfoOnlyCount = 128; +enet_cpsw1.txDmaChannel[0].$name = "ENET_DMA_TX_CH0"; +enet_cpsw1.txDmaChannel[0].PacketsCount = 128; +enet_cpsw1.rxDmaChannel[0].$name = "ENET_DMA_RX_CH0"; +enet_cpsw1.pinmux[0].$name = "ENET_CPSW_PINMUX0"; +enet_cpsw1.pinmux[0].MDIO.$assign = "MDIO0"; +enet_cpsw1.pinmux[0].MDIO.MDC.$assign = "PRG1_MDIO0_MDC"; +enet_cpsw1.pinmux[0].MDIO.MDIO.$assign = "PRG1_MDIO0_MDIO"; +enet_cpsw1.pinmux[0].RGMII1.$assign = "RGMII1"; +enet_cpsw1.pinmux[0].RGMII2.$assign = "RGMII2"; enet_cpsw1.netifInstance.create(1); -enet_cpsw1.netifInstance[0].$name = "NETIF_INST_ID0"; +enet_cpsw1.netifInstance[0].$name = "NETIF_INST_ID0"; const udma = scripting.addModule("/drivers/udma/udma", {}, false); const udma1 = udma.addInstance({}, false); @@ -111,31 +114,31 @@ enet_cpsw1.udmaDrv = udma1; * version of the tool will not impact the pinmux you originally saw. These lines can be completely deleted in order to * re-solve from scratch. */ -i2c1.I2C.SCL.$suggestSolution = "ball.B16"; -i2c1.I2C.SDA.$suggestSolution = "ball.B15"; -debug_log.uartLog.UART.RXD.$suggestSolution = "ball.B10"; -debug_log.uartLog.UART.TXD.$suggestSolution = "ball.B11"; -enet_cpsw1.pinmux[0].RGMII1.RD0.$suggestSolution = "ball.T5"; -enet_cpsw1.pinmux[0].RGMII1.RD1.$suggestSolution = "ball.R2"; -enet_cpsw1.pinmux[0].RGMII1.RD2.$suggestSolution = "ball.U2"; -enet_cpsw1.pinmux[0].RGMII1.RD3.$suggestSolution = "ball.T1"; -enet_cpsw1.pinmux[0].RGMII1.RX_CTL.$suggestSolution = "ball.Y3"; -enet_cpsw1.pinmux[0].RGMII1.RXC.$suggestSolution = "ball.U1"; -enet_cpsw1.pinmux[0].RGMII1.TD0.$suggestSolution = "ball.Y14"; -enet_cpsw1.pinmux[0].RGMII1.TD1.$suggestSolution = "ball.Y16"; -enet_cpsw1.pinmux[0].RGMII1.TD2.$suggestSolution = "ball.U13"; -enet_cpsw1.pinmux[0].RGMII1.TD3.$suggestSolution = "ball.AA14"; -enet_cpsw1.pinmux[0].RGMII1.TX_CTL.$suggestSolution = "ball.W16"; -enet_cpsw1.pinmux[0].RGMII1.TXC.$suggestSolution = "ball.W13"; -enet_cpsw1.pinmux[0].RGMII2.RD0.$suggestSolution = "ball.AA10"; -enet_cpsw1.pinmux[0].RGMII2.RD1.$suggestSolution = "ball.Y10"; -enet_cpsw1.pinmux[0].RGMII2.RD2.$suggestSolution = "ball.Y11"; -enet_cpsw1.pinmux[0].RGMII2.RD3.$suggestSolution = "ball.V12"; -enet_cpsw1.pinmux[0].RGMII2.RX_CTL.$suggestSolution = "ball.Y12"; -enet_cpsw1.pinmux[0].RGMII2.RXC.$suggestSolution = "ball.V10"; -enet_cpsw1.pinmux[0].RGMII2.TD0.$suggestSolution = "ball.Y6"; -enet_cpsw1.pinmux[0].RGMII2.TD1.$suggestSolution = "ball.AA8"; -enet_cpsw1.pinmux[0].RGMII2.TD2.$suggestSolution = "ball.Y9"; -enet_cpsw1.pinmux[0].RGMII2.TD3.$suggestSolution = "ball.W9"; -enet_cpsw1.pinmux[0].RGMII2.TX_CTL.$suggestSolution = "ball.V9"; -enet_cpsw1.pinmux[0].RGMII2.TXC.$suggestSolution = "ball.Y8"; +i2c1.I2C.SCL.$suggestSolution = "I2C0_SCL"; +i2c1.I2C.SDA.$suggestSolution = "I2C0_SDA"; +debug_log.uartLog.UART.RXD.$suggestSolution = "UART0_RXD"; +debug_log.uartLog.UART.TXD.$suggestSolution = "UART0_TXD"; +enet_cpsw1.pinmux[0].RGMII1.RD0.$suggestSolution = "PRG0_PRU1_GPO7"; +enet_cpsw1.pinmux[0].RGMII1.RD1.$suggestSolution = "PRG0_PRU1_GPO9"; +enet_cpsw1.pinmux[0].RGMII1.RD2.$suggestSolution = "PRG0_PRU1_GPO10"; +enet_cpsw1.pinmux[0].RGMII1.RD3.$suggestSolution = "PRG0_PRU1_GPO17"; +enet_cpsw1.pinmux[0].RGMII1.RX_CTL.$suggestSolution = "PRG0_PRU0_GPO9"; +enet_cpsw1.pinmux[0].RGMII1.RXC.$suggestSolution = "PRG0_PRU0_GPO10"; +enet_cpsw1.pinmux[0].RGMII1.TD0.$suggestSolution = "PRG1_PRU1_GPO7"; +enet_cpsw1.pinmux[0].RGMII1.TD1.$suggestSolution = "PRG1_PRU1_GPO9"; +enet_cpsw1.pinmux[0].RGMII1.TD2.$suggestSolution = "PRG1_PRU1_GPO10"; +enet_cpsw1.pinmux[0].RGMII1.TD3.$suggestSolution = "PRG1_PRU1_GPO17"; +enet_cpsw1.pinmux[0].RGMII1.TX_CTL.$suggestSolution = "PRG1_PRU0_GPO9"; +enet_cpsw1.pinmux[0].RGMII1.TXC.$suggestSolution = "PRG1_PRU0_GPO10"; +enet_cpsw1.pinmux[0].RGMII2.RD0.$suggestSolution = "PRG1_PRU1_GPO0"; +enet_cpsw1.pinmux[0].RGMII2.RD1.$suggestSolution = "PRG1_PRU1_GPO1"; +enet_cpsw1.pinmux[0].RGMII2.RD2.$suggestSolution = "PRG1_PRU1_GPO2"; +enet_cpsw1.pinmux[0].RGMII2.RD3.$suggestSolution = "PRG1_PRU1_GPO3"; +enet_cpsw1.pinmux[0].RGMII2.RX_CTL.$suggestSolution = "PRG1_PRU1_GPO4"; +enet_cpsw1.pinmux[0].RGMII2.RXC.$suggestSolution = "PRG1_PRU1_GPO6"; +enet_cpsw1.pinmux[0].RGMII2.TD0.$suggestSolution = "PRG1_PRU1_GPO11"; +enet_cpsw1.pinmux[0].RGMII2.TD1.$suggestSolution = "PRG1_PRU1_GPO12"; +enet_cpsw1.pinmux[0].RGMII2.TD2.$suggestSolution = "PRG1_PRU1_GPO13"; +enet_cpsw1.pinmux[0].RGMII2.TD3.$suggestSolution = "PRG1_PRU1_GPO14"; +enet_cpsw1.pinmux[0].RGMII2.TX_CTL.$suggestSolution = "PRG1_PRU1_GPO15"; +enet_cpsw1.pinmux[0].RGMII2.TXC.$suggestSolution = "PRG1_PRU1_GPO16"; diff --git a/examples/networking/lwip/enet_cpsw_tcpserver/app_tcpserver.c b/examples/networking/lwip/enet_cpsw_tcpserver/app_tcpserver.c index db018d1ff2..562879e017 100644 --- a/examples/networking/lwip/enet_cpsw_tcpserver/app_tcpserver.c +++ b/examples/networking/lwip/enet_cpsw_tcpserver/app_tcpserver.c @@ -47,7 +47,8 @@ /* ========================================================================== */ #define APP_SERVER_PORT (8888) -static const uint8_t APP_CLIENT_TX_MSG1[] = "Greetings from Texas Instruments!"; +#define APP_CLIENT_TX_MSG1_LEN (20000U) +static uint8_t APP_CLIENT_TX_MSG1[APP_CLIENT_TX_MSG1_LEN] = {'A'}; /* ========================================================================== */ /* Structure Declarations */ @@ -69,64 +70,50 @@ static void AppTcp_ServerTask(void *arg); /* Function Definitions */ /* ========================================================================== */ -static void AppTcp_echoPckt(struct netconn *pClientConn) +static err_t AppTcp_sendPckt(struct netconn *pClientConn) { - struct netbuf *buf; - void *data; - u16_t len; err_t err; - while ((err = netconn_recv(pClientConn, &buf)) == ERR_OK) + err = netconn_write(pClientConn, APP_CLIENT_TX_MSG1, APP_CLIENT_TX_MSG1_LEN, NETCONN_COPY); + if (err != ERR_OK) { - err = netconn_write(pClientConn, APP_CLIENT_TX_MSG1, sizeof(APP_CLIENT_TX_MSG1), NETCONN_COPY); - if (err != ERR_OK) - { - printf("tcpecho: netconn_write: error \"%s\"\r\n", lwip_strerr(err)); - break; - } - do - { - netbuf_data(buf, &data, &len); - err = netconn_write(pClientConn, data, len, NETCONN_COPY); - if (err != ERR_OK) - { - printf("tcpecho: netconn_write: error \"%s\"\r\n", lwip_strerr(err)); - } - - } while (netbuf_next(buf) >= 0); - netbuf_delete(buf); + printf("tcpecho: netconn_write: error \"%s\"\r\n", lwip_strerr(err)); } + return err; } static void AppTcp_ServerTask(void *arg) { struct netconn *pConn = NULL, *pClientConn = NULL; err_t err; - LWIP_UNUSED_ARG(arg); - + LWIP_UNUSED_ARG(arg); + memset(APP_CLIENT_TX_MSG1, 'a', APP_CLIENT_TX_MSG1_LEN); + APP_CLIENT_TX_MSG1[APP_CLIENT_TX_MSG1_LEN - 1] = '\0'; // NULL termination pConn = netconn_new(NETCONN_TCP); netconn_bind(pConn, IP_ADDR_ANY, APP_SERVER_PORT); LWIP_ERROR("tcpecho: invalid conn\r\n", (pConn != NULL), return;); /* Tell connection to go into listening mode. */ netconn_listen(pConn); - + while (1) { - /* Grab new connection. */ + printf("waiting for client connection request\r\n"); err = netconn_accept(pConn, &pClientConn); printf("accepted new connection %p\r\n", pClientConn); - /* Process the new connection. */ - if (err < ERR_OK) + if ((err < ERR_OK) && (pClientConn == NULL)) { DebugP_log("Unable to accept connection: errno %d\r\n", err); - break; + continue; } - - AppTcp_echoPckt(pClientConn); - + while (err == ERR_OK) + { + err = AppTcp_sendPckt(pClientConn); +// ClockP_usleep(1); + } + DebugP_log("Client Closed | errno: %d\r\n", err); /* Close connection and discard connection identifier. */ netconn_close(pClientConn); netconn_delete(pClientConn); diff --git a/source/networking/lwip/lwip-config/am243x/lwipopts.h b/source/networking/lwip/lwip-config/am243x/lwipopts.h index 52ada5cb03..748b2df09e 100644 --- a/source/networking/lwip/lwip-config/am243x/lwipopts.h +++ b/source/networking/lwip/lwip-config/am243x/lwipopts.h @@ -164,7 +164,7 @@ extern "C" /* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application sends a lot of data out of ROM (or other static memory), this should be set high. */ -#define MEMP_NUM_PBUF 128 +#define MEMP_NUM_PBUF 256 /* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One per active RAW "connection". */ #define MEMP_NUM_RAW_PCB 3 @@ -173,13 +173,13 @@ extern "C" #define MEMP_NUM_UDP_PCB 4 /* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. */ -#define MEMP_NUM_TCP_PCB 5 +#define MEMP_NUM_TCP_PCB 10 /* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. */ #define MEMP_NUM_TCP_PCB_LISTEN 8 /* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. */ -#define MEMP_NUM_TCP_SEG 128 +#define MEMP_NUM_TCP_SEG 800 /* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. */ #define MEMP_NUM_SYS_TIMEOUT 17 @@ -187,14 +187,14 @@ extern "C" /* The following four are used only with the sequential API and can be set to 0 if the application only will use the raw API. */ /* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#define MEMP_NUM_NETBUF 128 +#define MEMP_NUM_NETBUF 512 /* MEMP_NUM_NETCONN: the number of struct netconns. */ -#define MEMP_NUM_NETCONN 10 +#define MEMP_NUM_NETCONN 20 /* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used for sequential API communication and incoming packets. Used in src/api/tcpip.c. */ -#define MEMP_NUM_TCPIP_MSG_API 128 -#define MEMP_NUM_TCPIP_MSG_INPKT 128 +#define MEMP_NUM_TCPIP_MSG_API 512 +#define MEMP_NUM_TCPIP_MSG_INPKT 512 /* Debug checks - will impact throughput if enabled */ #define MEMP_OVERFLOW_CHECK (0) @@ -242,11 +242,11 @@ extern "C" #define TCP_MSS 1460 /* TCP sender buffer space (bytes). */ -#define TCP_SND_BUF (8 * TCP_MSS) +#define TCP_SND_BUF (24 * TCP_MSS) /* TCP sender buffer space (pbufs). This must be at least = 2 * TCP_SND_BUF/TCP_MSS for things to work. */ -#define TCP_SND_QUEUELEN (8 * TCP_SND_BUF/TCP_MSS) +#define TCP_SND_QUEUELEN (32 * TCP_SND_BUF/TCP_MSS) /* TCP writable space (bytes). This must be less than or equal to TCP_SND_BUF. It is the amount of space which must be @@ -257,13 +257,13 @@ extern "C" #define TCP_WND (TCP_SND_BUF) /* Maximum number of retransmissions of data segments. */ -#define TCP_MAXRTX 12 +#define TCP_MAXRTX 2 /* Maximum number of retransmissions of SYN segments. */ #define TCP_SYNMAXRTX 4 -#define DEFAULT_THREAD_STACKSIZE (5 * 1024) -#define TCPIP_THREAD_STACKSIZE (8 * 1024) +#define DEFAULT_THREAD_STACKSIZE (8 * 1024) +#define TCPIP_THREAD_STACKSIZE (10 * 1024) //#define LWIP_FREERTOS_THREAD_STACKSIZE_IS_STACKWORDS (1) diff --git a/source/networking/lwip/lwip-config/am243x/lwippools.h b/source/networking/lwip/lwip-config/am243x/lwippools.h index 5549c46206..24ff65256d 100644 --- a/source/networking/lwip/lwip-config/am243x/lwippools.h +++ b/source/networking/lwip/lwip-config/am243x/lwippools.h @@ -8,9 +8,9 @@ #if MEM_USE_POOLS LWIP_MALLOC_MEMPOOL_START -LWIP_MALLOC_MEMPOOL(25, 128) -LWIP_MALLOC_MEMPOOL(18, 1568) -LWIP_MALLOC_MEMPOOL(4, 4096) +LWIP_MALLOC_MEMPOOL(64, 128) +LWIP_MALLOC_MEMPOOL(128, 1568) +LWIP_MALLOC_MEMPOOL(32, 4096) LWIP_MALLOC_MEMPOOL_END #endif /* MEM_USE_POOLS */