AM263Px MCU+ SDK: Ethernet LwIP TCP/IP Static IP

| AM263Px MCU+ SDK 26.00.00 |

Ethernet LwIP TCP/IP Static IP

# Introduction

A network interface (NettIf) in LwIP can only have one IP address assigned to it. There are three methods supported by lwIP for assigning the proper IP address to an interface:

Static IP: The IP address for the netif can be set either at initialization or afterwards. DHCP: DHCP is an optional protocol to obtain an IP address from a DHCP server. AUTOIP: AUTOIP is an optional protocol to pick an IP address on a local subnet without needing a server to assign addresses.

Please follow the below guide to set the up the Static IP.

1. Disable DHCP, by removing calls to `dhcp_start` in the application.
2. Disable AUTOIP, by removing calls to `autoip_start` in the appliction.
3. Call `netif_set_addr()` instead of `dhcp_start` call. in `App_allocateIPAddress` , as shown below.

# Details

#### To Configure DHCP

static void App_allocateIPAddress()
{
sys_lock_tcpip_core();
for (uint32_t netifIdx = 0U; netifIdx < ENET_SYSCFG_NETIF_COUNT; netifIdx++)
{
dhcp_set_struct(g_pNetif[NETIF_INST_ID0 + i], &g_netifDhcp[NETIF_INST_ID0 + i]);
const err_t err = dhcp_start(g_pNetif[NETIF_INST_ID0 + i]);
EnetAppUtils_assert(err == ERR_OK);
}
sys_unlock_tcpip_core();
return;
}

#### To Configure Static IP

#define IP_ADDR_POOL_COUNT (2U)
const ip_addr_t gStaticIP[IP_ADDR_POOL_COUNT] = { IPADDR4_INIT_BYTES(192, 168, 1, 200) /* For NetifIdx = 0 */, IPADDR4_INIT_BYTES( 10, 64, 1, 200) /* For NetifIdx = 1 */};
const ip_addr_t gStaticIPGateway[IP_ADDR_POOL_COUNT] = { IPADDR4_INIT_BYTES(192, 168, 1, 1) /* For NetifIdx = 0 */, IPADDR4_INIT_BYTES( 10, 64, 1, 1) /* For NetifIdx = 1 */};
const ip_addr_t gStaticIPNetmask[IP_ADDR_POOL_COUNT] = { IPADDR4_INIT_BYTES(255,255,255,0) /* For NetifIdx = 0 */, IPADDR4_INIT_BYTES(255,255,252,0) /* For NetifIdx = 1 */};
static void App_allocateIPAddress()
{
sys_lock_tcpip_core();
for (uint32_t netifIdx = 0U; netifIdx < ENET_SYSCFG_NETIF_COUNT; netifIdx++)
{
netif_set_addr(g_pNetif[NETIF_INST_ID0 + netifIdx],
&gStaticIP[NETIF_INST_ID0 + netifIdx],
&gStaticIPNetmask[NETIF_INST_ID0 + netifIdx],
&gStaticIPGateway[NETIF_INST_ID0 + netifIdx]);
}
sys_unlock_tcpip_core();
return;
}

# See Also

Ethernet And Networking