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.

[参考译文] CCS/AM3359:调试运行时出现器件连接故障。

Guru**** 2584355 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/793527/ccs-am3359-device-connection-failure-with-debug-running

器件型号:AM3359

工具/软件:Code Composer Studio

你(们)好 在这里


我有 AM3359ICE 和 J-Link 调试器。

我正在处理 ehtercat_slave_full_AM335x_arm 项目。

我有几个问题。


问题1. 哪个版本的 SDK 应用于板载映像(IASDK 1.1.0.5)?
 (例如:PROCESSOR-SDK-RTOS-AM335x 2.0.2)

问题2. 使用 Beckhoff SSC 工具的5.12版是否正确?

问题3. ehtercat_slave_full_AM335x_arm 在调试模式下执行了以下测试。
 如果我将以太网连接到端口1、主器件将无法扫描 AM3359ICE2。  
 但是、如果我将以太网连接到端口0、AM3359ICE2扫描将在主器件上成功。   
 端口0和端口1之间的区别是什么?

问题4. ehtercat_slave_full_AM335x_arm 在调试模式下执行了以下测试。
 如果我使用以太网端口1并尝试从主器件进行连接、AM3359ICE2上的红色 LED 将闪烁、连接将失败。

 以下源代码是调试点、请检查您的源代码。

Ecatslv.c
====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
uint8 CheckSmSettings (uint8 maxChannel)

(笑声)
pSyncMan = GetSyncMan (mailbox_write);

SMLength = pSyncMan->Length;               // pSyncMan->Length is 0
SMAddress = pSyncMan->PhysicalStartAddress;// pSyncMan->PhysicalStartAddress 是0

如果(!(pSyncMan->Settings[sm_setting_active_offset]& sm_setting_enable_value))

结果= ALSTATUSCODE_INVALIDMBXCFGINPREOP

(笑声)

====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

 我认为闪烁的红色 LED 是 AlStatusCode = 0x16、这意味着 ALSTATUSSCODE_INVALIDMBXCFGINPREOP。


提前感谢您。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Simon、

    ANs1:不支持 IASDK 1.1.0.5。
    回答2:是、如果您使用的是最新的 PRU-ICSS EtherCAT 1.0.7
    Ans3:端口0是输入、而端口1是输出
    回答4:确保使用来自 PRU-ICSS-EtherCAT_Slave_01.00.07.02\protocol\EtherCAT_SLAVes\ecat_Appl\ESI 的 TI_ESC.xml

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Garrett


    Ans3:端口0是输入、而端口1是输出
     >>在默认图像中、端口0和端口1都能够扫描并从主设备连接。
        由于 EtherCAT_SLAVE_FULL_AM335x_ARM、端口0和端口1的行为是否不同?

    回答4:确保使用来自 PRU-ICSS-EtherCAT_Slave_01.00.07.02\protocol\EtherCAT_SLAVes\ecat_Appl\ESI 的 TI_ESC.xml
     >>我在主器件中使用了来自 PRU-ICSS-ETHERCAT_SLAVE_01.00.07.02\protocols\EtherCAT_SLAV\ecat_appl\ESI 的 TI_ESC.xml 和 TiEtherCATLib
        PRU-ICSS EtherCAT 版本为01.00.07.02。
        从站堆栈代码版本为5.12。
        使用的工程是 EtherCAT_SLAVE_FULL_AM335x_ARM。

        1.扫描成功。
        2.尝试连接将失败。 此时、红色 LED 闪烁。

    还有其他检查点吗?


    此致、
    Simon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Simon、

    必须将 EtherCAT 从站的端口0连接到主站、并将端口1连接到第二个从站(如果有)。
    您应该从 TwinCAT 中删除 TiEtherCATLib.xml、并且仅使用 TI_ESC.xml。 扫描后连接失败时、TwinCAT 中的错误消息是什么?

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Garrett


    我将 EtherCAT 从站的端口0连接到主站。
    2.我从主器件中删除了 TiEtherCATLib.xml、仅使用 TI_ESC.xml。
    3.我无法使用 TwinCAT。 我使用一个名为 WMX3的主程序。
      它通常在板载映像(IASDK 1.1.0.5)上运行。
    调试时、此时会生成以下错误代码。
      " AlStatusCode=0x16 "
      ALSTATUSCODE_INVALIDMBXCFGINPREOP:邮箱配置无效(PreOP 状态)
      我应该检查邮箱配置的哪个部分?

       在哪里可以获取 EtherCAT 从站堆栈中的 ESC 参数来设置 bsp_set_sm_properties()函数。
       在 EtherCAT 从站堆栈中、读取 EEPROM (const unsigned char itiesc_EEPROM.h 中的)、xml (TI_ESC.xml)还是其他用于 ESC 配置的存储器?  
       在 void bsp_set_sm_properties (PRUICSS_handle pruIcssHandle、uint8_t SM、uint16_t address、uint16_t length)中、
       地址和长度通过执行设置为每个零
       bsp_set_sm_properties (pruIcssHandle、channel、bsp_read_word (pruIcssHandle、SM_address)、bsp_read_word (pruIcssHandle、 (SM_ADDRESS + 2)))
       因为 bsp_read_worth()返回每个零。 请参阅以下源代码。

    Tiescbsp.c
    --------------------------------------------------
    void bsp_PDI_WRITE_INDETIndication (PRUICSS_Handle pruIcssHandle、uint16_t 地址、
    uint16_t length、uint16_t 值)

    (笑声)

    否则、如果(((地址<= ESC_ADDR_SM0_PDI_CONTROL)
       &&(((地址+长度)> ESC_ADDR_SM0_PDI_CONTROL))||
       ((地址<= ESC_ADDR_SM1_PDI_CONTROL)
       &&((地址+长度)> ESC_ADDR_SM1_PDI_CONTROL)||
       ((地址<= ESC_ADDR_SM2_PDI_CONTROL)
       &&((地址+长度)> ESC_ADDR_SM2_PDI_CONTROL)||
       ((地址<= ESC_ADDR_SM3_PDI_CONTROL)
       &&(((地址+长度)> ESC_ADDR_SM3_PDI_CONTROL))||
       ((地址<= ESC_ADDR_SM4_PDI_CONTROL)
       &&(((地址+长度)> ESC_ADDR_SM4_PDI_CONTROL))||
       ((地址<= ESC_ADDR_SM5_PDI_CONTROL)
       &&(((地址+长度)> ESC_ADDR_SM5_PDI_CONTROL))||
       ((地址<= ESC_ADDR_SM6_PDI_CONTROL)
       &&(((地址+长度)> ESC_ADDR_SM6_PDI_CONTROL))||
       ((地址<= ESC_ADDR_SM7_PDI_CONTROL)
       &&((地址+长度)> ESC_ADDR_SM7_PDI_CONTROL))
       {
          uint8_t CHANNEL =(地址- ESC_ADDR_SYNCMAN)>> 3;
          uint16_t SM_ADDRESS = ESC_ADDR_SYNCMAN +(通道* SIZEOF_SM_register);
          bsp_send_command_to 固件(pruIcssHandle、CMD_DL_USER_WRITE_SM_PDI_CTRL、
                                  (通道<< 8)|值、0);

          while (bsp_pDI_sm_config_probing (pruIcssHandle));

          bsp_set_sm_properties (pruIcssHandle、channel、bsp_read_word (pruIcssHandle、
                         sm_address),<<<<<!----------------- 地址:返回0
                         bsp_read_word (pruIcssHandle、(sm_address + 2)));<<<--- 长度:返回0
       }
    (笑声)

    --------------------------------------------------
    我认为设置 ESC 配置存在一些问题。
    我还不清楚为什么地址和长度返回为每个零。

    因此,在以前的案例中已经提到了下一个问题。
    Ecatslv.c
    --------------------------------------------------
    uint8 CheckSmSettings (uint8 maxChannel)

    (笑声)

       pSyncMan = GetSyncMan (mailbox_write);

       SMLength = pSyncMan->Length;               <-------------- // pSyncMan->Length is 0
       SMAddress = pSyncMan->PhysicalStartAddress;<--- // pSyncMan->PhysicalStartAddress 为0

       如果(!(pSyncMan->Settings[sm_setting_active_offset]& sm_setting_enable_value))
       {
          结果= ALSTATUSCODE_INVALIDMBXCFGINPREOP;
       }

    (笑声)

    --------------------------------------------------
    我认为这是 ESC PREOP (预操作)失败的。


    此致、
    Simon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Simon、

    通过线程- e2e.ti.com/.../2928021 、您可以使用 TwinCAT 将从设备设置为 OP 状态、但使用 WMX3主设备失败? 如果是这样、您可能需要检查 WMX3是否正确解析了 TI_ESC.xml、而不是在从器件侧进行调试。 是的、ESC 参数来自 EEPROM、也从 xml 文件转换。

    此致、
    Garrett