Other Parts Discussed in Thread: SYSCONFIG
Tool/software:
Hello Team,
I'm currently attempting to run the ENET LWIP ICSSG example inside "source/networking/enet/core/examples/lwip/enet_lwip_icssg" from the MCU+ SDK 11.00.00.15 for AM64x on the TMDS64 evaluation module (am64x-evm). However, when I launch the application via Code Composer Studio (v20.2.0) debugger, it fails during initialization with the following console output:
MAIN_Cortex_R5_0_0: ==========================
MAIN_Cortex_R5_0_0: ENET LWIP App
MAIN_Cortex_R5_0_0: ==========================
MAIN_Cortex_R5_0_0: Enabling clocks!
MAIN_Cortex_R5_0_0: EnetAppUtils_reduceCoreMacAllocation: Reduced Mac Address Allocation for CoreId:1 From 4 To 1
MAIN_Cortex_R5_0_0: EnetUdma_openRxCh: [Enet UDMA] UDMA RX Channel open failed: 0xfffffffb
EnetUdma_openRxCh: [Enet UDMA] UDMA RX Channel open failed: 0xfffffffb
EnetHostPortDma_open: Failed to open Enet DMA RX channel: -1
Icssg_openDma: icssg1: failed to open ICSSG Host Port RX
Icssg_open: icssg1: failed to open DMA: -1
EnetPer_open: icssg1: Failed to open: -1
Enet_open: icssg1: Failed to open: -1
Enet_open failed_0:
MAIN_Cortex_R5_0_0: Assertion @ Line: 324 in syscfg/ti_enet_open_close.c: hEnet != NULL_PTR : failed !!!
It appears that the failure originates from the EnetApp_driverOpen() function inside ti_enet_open_close.c, which is called by enet_lwip_example() in test_enet.c.
According to the documentation (https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/11_00_00_15/exports/docs/api_guide_am64x/EXAMPLES_ENET_LWIP_ICSSG.html), the expected output should be:
==========================
ENET LWIP App
==========================
Enabling clocks!
PHY 3 is alive
Starting lwIP, local interface IP is dhcp-enabled
Host MAC address: 70:ff:76:1d:92:c1
[LWIPIF_LWIP] Enet has been started successfully
[LWIPIF_LWIP] NETIF INIT SUCCESS
status_callback==UP, local interface IP is 0.0.0.0
UDP server listening on port 5001
link_callback==UP
status_callback==UP, local interface IP is 192.168.0.172
5.136s : CPU load = 1.67 %
You can observe the following differences:
- The line "EnetAppUtils_reduceCoreMacAllocation: Reduced Mac Address Allocation for CoreId:1 From 4 To 1" appears in my logs but not in the example output. This results from the EnetAppUtils_initResourceConfig() call inside EnetApp_driverOpen().
-
The UDMA RX channel fails to open (EnetUdma_openRxCh returns 0xfffffffb), leading to a cascade of failures and assertion at line 324:
hEnet != NULL_PTR : failed !!!
I tested the example using the default SysConfig settings and a modified SysConfig based on the settings shown in the ICSSG SWITCH section of the documentation.
Default SysConfig:
Modified SysConfig:
Other modification:
- Disabled UART debug logs and enabled CCS debug logs
-
In ti_power_clock_config.c, I commented out the line: DebugP_assertNoLog(status == SystemP_SUCCESS); in Module_clockSetFrequency() because SOC_moduleSetClockFrequencyWithParent() was returning SystemP_FAILURE. This workaround worked fine for other examples like ipc_rpmsg_echo_linux.
Questions:
-
Is the SystemP_FAILURE in Module_clockSetFrequency related to the failure in EnetApp_driverOpen? Could the incorrect clock frequency setup cause the UDMA channel to fail?
-
Are there any known SysConfig settings or board-level configurations required to get the ICSSG ENET LWIP example running successfully on AM64x-EVM?
- Is the reduced MAC allocation (from 4 to 1) expected behavior, or does it indicate a resource conflict?
Additional Information:
- Code Composer Studio: v20.2.0
- MCU+ SDK (AM64x): v11.00.00.15
- Target Image: tisdk-default-image-rt-am64xx-evm-11.01.05.03
Any insights, suggestions, or troubleshooting steps would be greatly appreciated!
Thank you and best regards
Luca