This example shows about how to implement a simple UDP IGMP-Server on LwIP networking stack using BSD-Socket API coupled with ethernet driver (ENET)
On AM64X, we can do ethernet based communication using CPSW as HW mechanism
The example does the following:
| Parameter | Value |
|---|---|
| CPU + OS | r5fss0-0_freertos |
| a53ss0-0 freertos | |
| Toolchain | ti-arm-clang |
| gcc-aarch64 | |
| Board | am64x-evm |
| Example folder | source/networking/enet/core/examples/lwip/enet_cpsw_udp_igmp |
Note: To run the example on any core other than r5fss0-0, user needs to change the DMA channel resource ownership accordingly using the resource partioning tool in Modifying resource allocation and build the new SBL.
To change packet pool configuration from syscfg, please refer to Ethernet Packet Pool Allocation Guidelines
| Feature | Section | Description | Remarks/Default Setting |
|---|---|---|---|
| Mdio Manual Mode Enable | TI Networking / Enet (CPSW) / MDIO Config | Flag to enable MDIO manual mode in example. Driver support for Manual mode is enabled, so this parameter configures manual mode in the example. | Default is true. |
| Disable Mac Port1, Disable Mac Port2 | TI Networking / Enet (CPSW) / MAC Port Config | Select which port to disable. | Default is Port1 enabled. |
| Enable Packet Pool Allocation | TI Networking / Enet (CPSW) / Packet Pool Config | Flag to enable packet buffer memory allocation from enet utils library. It should be disabled to avoid utils memory wastage, in case application allots packet via other mechanism. | Default is true. |
| Only Enable Packet Info Allocation | TI Networking / Enet (CPSW) | Flag to allocate only the DMA Packet Info structures, this does not include the buffer memory. This is useful when the buffer memory is internally allocated by the application. (Ex- Lwip pools) | Default is true. |
| Number of Tx Packet | TI Networking / Enet (CPSW) / DMA channel config | No of Tx packets required for DMA channel | Default is 16. |
| Number of Rx Packet | TI Networking / Enet (CPSW) / DMA channel config | No of Rx packets required for DMA channel | Default is 32. |
| Netif instance | TI Networking / Enet (CPSW) / LWIP Interface config | No of netifs allocated by the example. Only one netif should be set to default when more than one netif is allocated. |
Ncat is a general-purpose command-line tool for reading, writing, redirecting, and encrypting data across a network. It aims to be your network Swiss Army knife, handling a wide variety of security testing and administration tasks. Ncat is suitable for interactive use or as a network-connected back end for other tools.
Please refer to Ethernet LwIP TCP/IP Static IP.
Note: For UDP transmission on LwIP based application, application should perform cache coherency operation on payload before submitting the packet for transmission. This is because zero copy is enabled for UDP packet transmission and cache operation in driver are disabled for UDP payload portions. This example application does this using CacheP_wbInv.
Start UDP client using 'ncat' cmds as shown below. Below steps have been tried with a Linux Ubuntu 18.04 host PC running bash shell
Install 'ncat' if not installed by doing below
Invoke 'ncat' to connect to Multicast IP '224.0.1.129' on port 2638
00:00:00:00:00:00, likely you are using a very early Si sample which does not have MAC address "fused" in. In this case, do the below stepssource/networking/enet/core/sysconfig/networking/.meta/enet_cpsw/templates/am64x_am243x/enet_soc_cfg.c.xdtEnet IF UP Event. message, if not check the ethernet cable