AWR2944: Assert happens in EnetLpbk_verifyRxFrame(), Enet CPSW Loopback example, external PHY loopback, when program execute from QSPI flash

Part Number: AWR2944
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hi,

HW: TI AWR2944 EVM
SW: SDK 4.7

When testing Enet CPSW Loopback external PHY loopback via CCS, everything is working fine.

However, if we flash the same program to QSPI flash and then execute it from flash, the assert happens in EnetLpbk_verifyRxFrame().

This is reproducible on TI AWR2944 EVM and SDK 4.7.

Reproduce procedures are:

0a. Modify TI AWR2944 EVM to use Automotive Ethernet PHY instead of using Industrial Ethernet PHY

0b. In sysconfig, specify PHY as Automotive Ethernet PHY and PHY address is 4

0c. Build the code.

1. Flash enet_cpsw_loopback_awr294x-evm_r5fss0-0_freertos_ti-arm-clang.appimage to QSPI flash

2. Power off the target, switch from flashing mode to functional mode. (Power off is a must condition to reproduce issue, if you don't power off and just reset, issue won't happen)

3. Execute External PHY loopback test

4. Assert happens and logs are below

Starting QSPI Bootloader ...
INFO: Bootloader_loadSelfCpu:207: CPU r5f0-0 is initialized to 300000000 Hz !!!
[BOOTLOADER_PROFILE] Boot Media       : NOR SPI FLASH
[BOOTLOADER_PROFILE] Boot Media Clock : 80.000 MHz
[BOOTLOADER_PROFILE] Boot Image Size  : 0 KB
[BOOTLOADER_PROFILE] Cores present    :
r5f0-0
[BOOTLOADER PROFILE] System_init                      :        489us
[BOOTLOADER PROFILE] Drivers_open                     :         22us
[BOOTLOADER PROFILE] LoadHsmRtFw                      :          4us
[BOOTLOADER PROFILE] Board_driversOpen                :       2705us
[BOOTLOADER PROFILE] CPU load                         :       6977us
[BOOTLOADER_PROFILE] SBL Total Time Taken             :      10200us

Image loading done, switching to application ...
INFO: Bootloader_runSelfCpu:217: All done, reseting self ...


0: Internal MAC loopback
1: External PHY loopback

Enter option: 1
=============================
Enet Loopback: Iteration 1
=============================
[J] Check_Point 1
CPSW_2G Test
[J] Check_Point 2
PHY 4 is alive
[J] Check_Point 3
[J] Check_Point 4
initQs() txFreePktInfoQ initialized with 16 pkts
[J] Check_Point 5
[J] Check_Point 6
EnetPhy_bindDriver: PHY 4: OUI:080028 Model:27 Ver:01 <-> 'dp83tc812' : OK
Cpsw_handleLinkUp: Port 1: Link up: 100-Mbps Full-Duplex
[J] Check_Point 7
[J] Check_Point 8
Assertion @ Line: 572 in C:/ti/mmwave_mcuplus_sdk_04_07_00_01/mcu_plus_sdk_awr294x_10_00_00_07/examples/networking/enet_loopback/enet_cpsw_loopback/loopback_test.c: EnetLpbk_verifyRxFrame(pktInfo, rx

  • Hi James,

    Please provide the following details -

    1. Looks like you are using the Automotive PHY for your testing, please make sure that you have made the required hardware modifications on your board and the syscfg changes as well.

    2. Are you observing the similar behavior with the industrial PHY as well?

    3. I assume that you have not made any modifications in the default code, can you remove those additional check points that you have added, and do a clean build of the project and then try to flash the default application on the EVM.

    Regards,

    Shruti

  • 1. Yes, we do the corresponding modification in order to use automotive PHY.

    2. We didn't try industrial PHY. We're only focusing on automotive PHY.

    3. I didn't made modification of original code.

    Note: If I load the same enet_cpsw_loopback_awr294x-evm_r5fss0-0_freertos_ti-arm-clang.out from CCS, everything is working fine.

    You can use EVM to reproduce it according to my procedures. 

  • Hi James,

    I've tried reproducing the same issue with AUTO PHY at my end, but it is working for me. I've flashed the cpsw loopback example and tested both MAC and PHY loopback. I didn't get any assert/error.

    SDK version and example details - mcu_plus_sdk_awr294x_10_00_00_07\examples\networking\enet_loopback\enet_cpsw_loopback 

    attaching the tera term logs here for your reference. 

    /cfs-file/__key/communityserver-discussions-components-files/1023/loopback_5F00_logs.txt

    Let me know If there is any other way to reproduce it.

    Regards,

    Shruti

  • After you flash image, you need to remove power totally. If you only press the reset button, the issue won't happen.

  • Hi James,

    Can you try initializing the L3 memory in your application (at the start) and then try to flash that appimage?

    Regards,

    Shruti

  • Hi Shruti,

    Do you mean memset() to clear L3 memory in enet_cpsw_loopback sample? or?
    Could you drop me the piece of code?

  • Hi James,

    You can check the following file for reference -mmwave_mcuplus_sdk_04_07_00_01\mcu_plus_sdk_awr294x_10_00_00_07\source\drivers\bootloader\soc\awr294x\bootloader_soc.c

    In this file, function Bootloader_socMemInitCpu is initializing the different memories. 

    If you check our enet loopback application map file, it is using some part of this DSS_L3 memory. Our current SBL doesn't initialize this memory unless the c66 core is involved, and our example is based on R5F only. This could be one of the possible reasons for the issue that we are seeing.

    The possible solutions could be, either you can initialize this memory in the SBL, or at the start of your application. Let me know if this approach resolves your issue.

    Regards,

    Shruti