This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: acontis EC-Master running on am572x idk cannot detect PRU-ICSS ethernet port

Part Number: AM5728

Tool/software: Linux

Hello,

I am using am572x idk and am335x ice for the experiment of EtherCAT communication. 

I have retrieved EC-Master v3.0 from acontis which is mentioned by Paula in this thread, but the problem remains. I have followed the chapter 2.3.5.8.3 of EC-Master v3.0 documentation, and changed the dtb for am572x IDK. I am wondering if I have to change the dtb for am335x which plays the role of a EtherCAT slave device. Thanks for any comment.

I attached my experiment steps and error message in the end.

Regards,
Hungwei

the experiment step:

insmod remoteproc.ko
insmod pruss_intc.ko
insmod pruss.ko
insmod pruss_soc_bus.ko
insmod pru_rproc.ko
insmod atemsys.ko

./EcMasterDemoEval -auxclk 2000 -t 10000 -v 5 -f eni_disableLRW.xml -icss 1 1 m am572x-idk

error message:

/ # ./EcMasterDemoEval -auxclk 2000 -t 10000 -v 5 -f eni_disableLRW.xml -icss 1 1 m am572x-idk
0000000005: Full command line: -auxclk 2000 -t 10000 -v 5 -f "en[ 68.375289] atemsys: device_open(0xed177a00)
i_disableLRW.xml"-icss 2 1 m am572x-idk
[ 68.382079] atemsys: mmap: mapped IO memory, Phys:0x48057000 UVirt:0xb6f84000 Size:4096
[ 68.393748] atemsys: mmap: mapped IO memory, Phys:0x4805b000 UVirt:0xb6f83000 Size:4096
[ 68.401801] atemsys: mmap: mapped IO memory, Phys:0x4a002000 UVirt:0xb6b37000 Size:8192
[ 68.409855] atemsys: mmap: mapped IO memory, Phys:0x4a008000 UVirt:0xb6b34000 Size:12288
[ 68.417995] atemsys: mmap: mapped IO memory, Phys:0x4b220000 UVirt:0xb6b32000 Size:8192
[ 68.426048] atemsys: mmap: mapped IO memory, Phys:0x4b210000 UVirt:0xb6b2a000 Size:32768
[ 68.434187] atemsys: mmap: mapped IO memory, Phys:0x4b226000 UVirt:0xb6b29000 Size:4096
[ 68.442240] atemsys: mmap: mapped IO memory, Phys:0x4b22e000 UVirt:0xb6b28000 Size:4096
[ 68.450294] atemsys: mmap: mapped IO memory, Phys:0x4b232000 UVirt:0xb6b27000 Size:4096
[ 68.458350] atemsys: mmap: mapped IO memory, Phys:0x4b232000 UVirt:0xb6b26000 Size:4096
[ 68.466403] atemsys: mmap: mapped IO memory, Phys:0x40300000 UVirt:0xb6b16000 Size:65536
[ 68.474541] atemsys: mmap: mapped IO memory, Phys:0x4b200000 UVirt:0xb6b14000 Size:8192
[ 68.482592] atemsys: mmap: mapped IO memory, Phys:0x4b202000 UVirt:0xb6b12000 Size:8192
[ 68.490643] atemsys: mmap: mapped IO memory, Phys:0x4b234000 UVirt:0xb6b0f000 Size:12288
[ 68.498781] atemsys: mmap: mapped IO memory, Phys:0x4b238000 UVirt:0xb6b0c000 Size:12288
[ 68.506920] atemsys: mmap: mapped IO memory, Phys:0x4b222000 UVirt:0xb6b0b000 Size:4096
[ 68.514974] atemsys: mmap: mapped IO memory, Phys:0x4b224000 UVirt:0xb6b0a000 Size:4096
[ 68.523027] atemsys: mmap: mapped IO memory, Phys:0x4b2a0000 UVirt:0xb6b08000 Size:8192
[ 68.531078] atemsys: mmap: mapped IO memory, Phys:0x4b290000 UVirt:0xb6b00000 Size:32768
[ 68.539224] atemsys: mmap: mapped IO memory, Phys:0x4b2a6000 UVirt:0xb69ff000 Size:4096
[ 68.547278] atemsys: mmap: mapped IO memory, Phys:0x4b2ae000 UVirt:0xb69fe000 Size:4096
[ 68.555331] atemsys: mmap: mapped IO memory, Phys:0x4b2b2000 UVirt:0xb69fd000 Size:4096
[ 68.563384] atemsys: mmap: mapped IO memory, Phys:0x4b2b2000 UVirt:0xb69fc000 Size:4096
[ 68.571436] atemsys: mmap: mapped IO memory, Phys:0x40300000 UVirt:0xb69ec000 Size:65536
[ 68.579577] atemsys: mmap: mapped IO memory, Phys:0x4b280000 UVirt:0xb69ea000 Size:8192
[ 68.587629] atemsys: mmap: mapped IO memory, Phys:0x4b282000 UVirt:0xb69e8000 Size:8192
[ 68.595681] atemsys: mmap: mapped IO memory, Phys:0x4b2b4000 UVirt:0xb69e5000 Size:12288
[ 68.603819] atemsys: mmap: mapped IO memory, Phys:0x4b2b8000 UVirt:0xb69e2000 Size:12288
[ 68.611960] atemsys: mmap: mapped IO memory, Phys:0x4b2a2000 UVirt:0xb69e1000 Size:4096
[ 68.620012] atemsys: mmap: mapped IO memory, Phys:0x4b2a4000 UVirt:0xb69e0000 Size:4096
0000000006: Run demo now with cycle time 2000 usec
0000000006: Using AuxClock
0000000006: ==========================
0000000006: Initialize EtherCAT Master
0000000006: ==========================
0000000006: EC-Master V3.0.1.18 (Protected) for Linux_armv6-vfp-eabihf Copyright acontis technologies GmbH @ 2018
0000000008: OsGetLinkLayerRegFunc: try to load '//libemllICSS.so'
0000000262: ICSS_PRUSS_WakeUp: Wake up PRUSS 0
0000000262: ICSS_EnablePrcmModule: Entered - module PRUSS
0000000262: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwVirt=B6B35718
0000000262: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwPhys=4A009718
0000000262: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwVirt=B6B358FC
0000000262: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwPhys=4A0098FC
0000000262: ICSS_EnablePrcmModule: dwParentDomainClkstCtrl register=16102
0000000262: ICSS_EnablePrcmModule: dwModuleClkCtrl register=2
0000000262: ICSS_EnablePrcmModule: Disabling MODULEMODE in parent domain
0000000262: ICSS_EnablePrcmModule: Waiting until MODULEMODE is disabled...
0000000262: ICSS_EnablePrcmModule: Enabling MODULEMODE in parent domain
0000000262: ICSS_EnablePrcmModule: Waiting until MODULEMODE is ready...
0000000262: ICSS_EnablePrcmModule: Waiting for IDLEST idle status
0000000262: ICSS_EnablePrcmModule: Waiting for clocks
0000000262: ICSS_EnablePrcmModule: Exited
0000000262: ICSS_PRUSS_WakeUp: Wake up PRUSS 1
0000000262: ICSS_EnablePrcmModule: Entered - module PRUSS
0000000262: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwVirt=B6B35720
0000000262: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwPhys=4A009720
0000000262: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwVirt=B6B358FC
0000000262: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwPhys=4A0098FC
0000000262: ICSS_EnablePrcmModule: dwParentDomainClkstCtrl register=16102
0000000262: ICSS_EnablePrcmModule: dwModuleClkCtrl register=2
0000000262: ICSS_EnablePrcmModule: Disabling MODULEMODE in parent domain
0000000262: ICSS_EnablePrcmModule: Waiting until MODULEMODE is disabled...
0000000262: ICSS_EnablePrcmModule: Enabling MODULEMODE in parent domain
0000000262: ICSS_EnablePrcmModule: Waiting until MODULEMODE is ready...
0000000262: ICSS_EnablePrcmModule: Waiting for IDLEST idle status
0000000262: ICSS_EnablePrcmModule: Waiting for clocks
0000000262: ICSS_EnablePrcmModule: Exited
0000000314: ICSS_EnablePrcmModule: Entered - module GPIO5
0000000314: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwVirt=B6B35778
0000000314: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwPhys=4A009778
0000000314: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwVirt=B6B35700
0000000314: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwPhys=4A009700
0000000314: ICSS_EnablePrcmModule: dwParentDomainClkstCtrl register=20103
0000000314: ICSS_EnablePrcmModule: dwModuleClkCtrl register=20001
0000000314: ICSS_EnablePrcmModule: Disabling MODULEMODE in parent domain
0000000314: ICSS_EnablePrcmModule: Waiting until MODULEMODE is disabled...
0000000314: ICSS_EnablePrcmModule: Enabling MODULEMODE in parent domain
0000000314: ICSS_EnablePrcmModule: Waiting until MODULEMODE is ready...
0000000314: ICSS_EnablePrcmModule: Waiting for IDLEST idle status
0000000314: ICSS_EnablePrcmModule: Waiting for clocks
0000000314: ICSS_EnablePrcmModule: Exited
0000003914: ICSS_EnablePrcmModule: Entered - module GPIO3
0000003914: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwVirt=B6B35768
0000003914: ICSS_EnablePrcmModule: dwModuleClkCtrlAddr.dwPhys=4A009768
0000003914: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwVirt=B6B35700
0000003914: ICSS_EnablePrcmModule: dwParentDomainClkstCtrlAddr.dwPhys=4A009700
0000003914: ICSS_EnablePrcmModule: dwParentDomainClkstCtrl register=20103
0000003914: ICSS_EnablePrcmModule: dwModuleClkCtrl register=20001
0000003914: ICSS_EnablePrcmModule: Disabling MODULEMODE in parent domain
0000003914: ICSS_EnablePrcmModule: Waiting until MODULEMODE is disabled...
0000003914: ICSS_EnablePrcmModule: Enabling MODULEMODE in parent domain
0000003914: ICSS_EnablePrcmModule: Waiting until MODULEMODE is ready...
0000003914: ICSS_EnablePrcmModule: Waiting for IDLEST idle status
0000003914: ICSS_EnablePrcmModule: Waiting for clocks
0000003914: ICSS_EnablePrcmModule: Exited
0000003915: ICSS_PRUSS_PRU_WaitForStableConnection: waiting for link with timeout=12000.
0000015969: ICSS_PRUSS_PRU_WaitForStableConnection: stop waiting because max weit timeout=12000 reached.
0000015969: ICSS_PRUSS_PRU_WaitForStableConnection: LINK NOT DETECTED!
0000015969: EtherCAT network adapter MAC: 00-00-00-00-00-00
0000015979: +ConfigureMaster(1, --, 256)
0000015981: +DeinitMasterEx(1, 1)
0000015981: -DeinitMasterEx(1, 1) = No Error
0000015981: EC_T_INIT_MASTER_PARMS::dwSignature 0xaec30112
0000015981: EC_T_INIT_MASTER_PARMS::dwSize 128
0000015981: EC_T_INIT_MASTER_PARMS::pOsParms 0
0000015981: EC_T_INIT_MASTER_PARMS::pLinkParms 1
0000015981: EC_T_INIT_MASTER_PARMS::pLinkParmsRed 0
0000015981: EC_T_INIT_MASTER_PARMS::dwBusCycleTimeUsec 2000
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxBusSlaves 256
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxAcycFramesQueued 32
0000015981: EC_T_INIT_MASTER_PARMS::dwAdditionalEoEEndpoints 0
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxAcycBytesPerCycle 4096
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxAcycFramesPerCycle 0
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxAcycCmdsPerCycle 0
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxSlavesProcessedPerCycle 0
0000015981: EC_T_INIT_MASTER_PARMS::dwEcatCmdMaxRetries 3
0000015981: EC_T_INIT_MASTER_PARMS::dwEcatCmdTimeout 0
0000015981: EC_T_INIT_MASTER_PARMS::bVLANEnable 0
0000015981: EC_T_INIT_MASTER_PARMS::wVLANId 0
0000015981: EC_T_INIT_MASTER_PARMS::byVLANPrio 0
0000015981: EC_T_INIT_MASTER_PARMS::LogParms.dwLogLevel 5
0000015981: EC_T_INIT_MASTER_PARMS::LogParms.pfLogMsg 1
0000015981: EC_T_INIT_MASTER_PARMS::LogParms.pLogContext 1
0000015981: EC_T_INIT_MASTER_PARMS::MasterRedParms.bEnabled 0
0000015981: EC_T_INIT_MASTER_PARMS::MasterRedParms.wMasterPdOutSize 0
0000015981: EC_T_INIT_MASTER_PARMS::MasterRedParms.wMasterPdInSize 0
0000015981: EC_T_INIT_MASTER_PARMS::MasterRedParms.dwMaxAcycFramesPerCycle 0
0000015981: EC_T_INIT_MASTER_PARMS::MasterRedParms.bUpdateSlavePdOut 0
0000015981: EC_T_INIT_MASTER_PARMS::MasterRedParms.bUpdateSlavePdIn 0
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxS2SMbxSize 0
0000015981: EC_T_INIT_MASTER_PARMS::dwMaxQueuedS2SMbxTfer 0
0000015985: Protected version, stop sending ethernet frames after 60 minutes if not licensed!
0000015985: CEcMbSlave::CEcMbSlave() m_wMbxInitCmdsCount = 0 this = 0x1e2f68
0000015985: ConfigureMaster(1, --, 256) = No Error
0000015985: McSm: Queue order REQ_SB (Id=0, Timeout=10000)
0000015986: McSm: Start order REQ_SB (Id=0)
0000015986: McSm: START -> START_SB (SB_DONE)
0000015986: McSm: START_SB -> WAIT_SB (SB_DONE)
0000015986: BTStateMachine ecbtsm_start->ecbtsm_restart (ecbtsm_busscan_automatic, 0x98110008)
0000015986: BTStateMachine ecbtsm_restart->ecbtsm_start_wait (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_start_wait->ecbtsm_start_done (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_start_done->ecbtsm_refresh_slaves_presence (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_refresh_slaves_presence->ecbtsm_refresh_slaves_presence_wait (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_refresh_slaves_presence_wait->ecbtsm_refresh_slaves_presence_done (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_refresh_slaves_presence_done->ecbtsm_storeinfo (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_storeinfo->ecbtsm_storeinfo_wait (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_storeinfo_wait->ecbtsm_storeinfo_done (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_storeinfo_done->ecbtsm_notify_application (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_notify_application->ecbtsm_notify_application_wait (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: Notify EC_NOTIFY_SB_MISMATCH(0, 0, 255, 1001)
0000015986: BTStateMachine ecbtsm_notify_application_wait->ecbtsm_notify_application_done (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_notify_application_done->ecbtsm_busscan_automatic (ecbtsm_busscan_automatic, 0x9811002D)
0000015986: BTStateMachine ecbtsm_busscan_automatic->ecbtsm_idle (ecbtsm_idle, 0x9811002D)
0000015988: McSm: WAIT_SB -> SB_DONE (SB_DONE)
0000015988: McSm: Finish order REQ_SB (Id=0), Result = 0x9811002d)
0000015989: Scan bus mismatch for the first slave on bus
0000015989: Expected Slave: Unknown (0x54490001), Texas Instruments Incorporated (0xe000059d)
0000015989: Found Slave...: ----
0000015989: Cannot scan bus: ERROR: Ethernet link cable disconnected (0x9811002d)
0000015989: ========================
0000015989: Shutdown EtherCAT Master
0000015989: ========================
0000015989: EC_IOCTL_UNREGISTERCLIENT: No Error (0x00000000)
0000016249: +DeinitMasterEx(0, 1)
0000016250: -DeinitMasterEx(0, 1) = No Error
0000016250: +DeinitMasterEx(0, 1)
0000016250: -DeinitMasterEx(0, 1) = No Error
0000016250: EcMasterDemo stop.

  • Hi Hungwei, this week I am out of office (holidays). But, let me see if we can get some help from acontis experts.

    thank you,
    Paula
  • Hello,

    Thanks for help and wish you have a good holiday!

    BTW...In Dual EMAC experiment, I have to specify the firmware name by Linux commands like:

    echo 'am335x-pru1-fw' > /sys/class/remoteproc/remoteproc2/firmware

    However, I cannot find the file /sys/class/remoteproc/remoteprocX/firmware with am572x-idk-pru-excl-uio.dts. I am not sure if PRU starts correctly without this step.

    Regards,
    Hungwei

  • Hi Hungwei,

    I think you are trying to use Port1 on AM5728 IDK. However, just FYI, only PRU-ICSS 2 is pinmuxed on AM5728 IDK. In other words, please try Port3 or Port4. In the board this corresponds to PRU2 Eth0 (J6) and Pr2 Eth1 (J8). This should fix link detection.

    Also, it seems you are trying to use original PRU drivers along with EC-Master link layer. This won't work. Please refers to EC-Master_ClassB.pdf on how use correct .dts

    2.3.5.8.1 Step 1. Disabling PRU drivers
    In the following SDK subdirectory you find all device tree source files (.dts) and compiled versions (.dtb):
    /board-support/linux-rt-4.9.59+gitAUTOINC+273202a0d3-g273202a0d3/arch/arm/boot/dts
    Normally, board is booted up from am572x-idk.dtb/am335x-icev2.dtb, but TI has already prepared am572x-idk-pru-excl-uio.dtb/am335x-icev2-pru-excl-uio.dtb that better fits our needs. It already excludes most of the PRUSS drivers and we need just to make some little modifications to make it working.
    As we mentioned before, here is a quick and easy way to disable necessary drivers, that should be used only for demonstration purposes, but is is not best one.For your real world system it is better to make a copy of the am572x-idk-pru-excl-uio.dts/am335x-icev2-pru-excl-uio.dts file and then add it to the makefile script to build always your own .dtb file.

    Please let me know if you see this chapter in your documentation, if now I will upload .pdf here.

    thank you,
    Paula
  • Hello Paula,

    >In the board this corresponds to PRU2 Eth0 (J6) and Pr2 Eth1 (J8). This should fix link detection.

    Actually, I have tried J6 and J8 as I remembered, but none of them works.

    >Please let me know if you see this chapter in your documentation, if now I will upload .pdf here.

    I have followed the chapter 2.3.5.8.1 from v3.0.1.18 doc. and used am572x-idk-pru-excl-uio.dtb but the link detection issue still happens.

    Regards,
    Hungwei

  • Hungwei, could you please try to run below:

    ./EcMasterDemoEval -auxclk 2000 -t 10000 -v 5 -f eni_disableLRW.xml -icss 4 1 m am572x-idk. I think you are using 1

    Let me know if this helps with the link detection issue. More details on parameters can be found in ATEMDemoConfig.h. You can search for "SOC_AM572x" or for "LINKLAYER_ICSS"

    thank you,

    Paula

  • Hello Paula,

    ./EcMasterDemoEval -auxclk 2000 -t 10000 -v 5 -f eni_disableLRW.xml -icss 3 1 m am572x-idk

    I changed to use 3 for J6 and now it works! Thanks a lot for the help.

    Regards,
    Hungwei