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.

[参考译文] PRU-ICSS-INDUSTRIAL-SW:HSR-PRP 传输对于具有 AM3356 SOC 的定制电路板无法正常工作

Guru**** 1558020 points
Other Parts Discussed in Thread: TLK110, SYSBIOS, DP83822I
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1250542/pru-icss-industrial-sw-hsr-prp-transmit-not-working-for-our-custom-board-with-am3356-soc

器件型号:PRU-ICSS-INDUSTRIAL-SW
Thread 中讨论的其他器件:SYSBIOS、TLK110、 DP83822I

我们已将 HSR-PRP Dan 堆栈集成到我们的 RTOS 中,我们可以从其他节点接收所有类型的数据包,但在传输 HSR-PRP 数据包时遇到问题,  

在开关模式下使用与 PRU 相关的相同硬件和软件设置

我们已经对以下关于 TI-RTOS 的 HSR-PRP 堆栈进行了更新

需要支持来解决该问题、  

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

    您好、 

    感谢您的提问。

    您能否提供有关您的设置的更多信息?

    1.您正在研究哪个 TI-SDK?

    在交换机模式下使用的 soc 的相同硬件和软件设置

    2.意味着您能够 Rx 和 Tx 正常以太网数据包(标记/未标记)?

    3.是否更新了非(Tx)工作节点上的节点表?

    4.如何在本地设置中通过最简单的步骤重现此问题?

    此致

    阿什瓦尼

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

    尊敬的 Ashwini:  


    1.我们不 直接使用 TI SDK 我们使用商业 RTOS、并将 TI SDK 集成到其中。
      除此之外、 我们还集成了 TI 的以下元件作为来源。  

      "PDK-Dan_01.00.05.0" PRU-ICSS-HSR-PRP  和"PDK_AM335x_1_0_17"

       => 我们正在使用我们 自己 基于 AM335x 的板/硬件。  

       => 我们 已经把 上面的两个 s/w 模块集成到我们的项目中 、并且在精细的开关模式下工作、但是对于 HSR、我们面临问题。

    2.我们可以接收超级帧和其他 HSR 标签的数据包,都是从其他测试节点发出的。

    但发送几个数据包后、我们将收到如下所示的缓冲区已满消息 (在文件中:hsrPrp_RED_TX.c)、但我们的传输不起作用

    3.我们器件中的节点表正在使用其他节点数据进行更新,但不确定 HSR 器件中其他节点中的节点表,因为我们一直处于 TX 问题。

    4.不是 在您的终端复制、我们可以设置 CALL、这样我们就能够显示我们执行的操作以及在需要时还可以进行调试。

    谢谢。此致、
    M·帕瓦尔

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

    尊敬的 Mital:

    感谢您提供的信息。

    请允许我留出一点时间与软件团队内部讨论此问题、然后再与您联系。

    此致

    阿什瓦尼

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

    尊敬的  Ashwani:

    正在等待 您的回复。

    谢谢。此致、
    梅尔塔尔  

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

    尊敬的 Mital:

    很抱歉、响应延迟。

    您能否比较 TI HSR PRP 与您的实施之间的 SMEM、DMEM 比较、并确认您是否发现两个端口存在相同的问题。

    谢谢。此致、

    里米卡

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

    尊敬的 Rimika:

    "TI HSR PRP"的含义是什么以及我们要在哪个硬件上进行比较。

    供参考  

    我们已使用 TI SDK 在 IEC 板上测试了 HSR、它正在 工作。

    我们已将相同的代码移植到定制硬件和 RTOS  我们能够从其他节点接收 HSR 数据包、但在发送数据包时会出现问题。 在几个数据包之后出现缓冲区溢出错误。

    正在启动 HSR =>正在工作

    传出 HSR =>不工作   

    谢谢。此致、
    Mital Pawar.



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

     尊敬的 Mital:

    1、从描述来看、似乎固件没有从 TX 队列中拾取数据包。

    什么意思"TI soc PRP"是什么意思以及我们必须在哪个硬件上进行比较。

    2.应比较2种设置之间的 DMEM 和 SMEM 日志:

    工作设置    不工作(定制板)
    数模 SMEM 数模 SMEM
           

    Outgoing soc =>不工作

    3.您是否在 boath 港口上看到了同样的问题?

    此致

    阿什瓦尼

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

    3.  
      =>这是两个端口的问题。

      可以通过任何方式使用 ARM 调试器记录 PRU 状态/状态吗?


    谢谢。此致、

    梅尔塔尔
       




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

    尊敬的 Mital:

    感谢对第3点的更新。

    您能否同时提供第1点和第2点的最新情况?

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    我在采用存储器转储时面临挑战。
    用什么更好的方法来实现它。

    谢谢。此致、
    M·帕瓦尔

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

    您好!

    您想知道、 在这种情况下 PRU 不会消耗写入的数据传输缓冲区、 因此我们也会进行相应研究。
    请注意数据包接收正在工作。


    谢谢。此致、
    梅尔塔尔  

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

    您好!  

    要获取存储器转储、您需要使用 CCS 中的"Memory Browser"。

    如果使用的是 ICSSG1、则可以从以下位置获取存储器转储:
    起始地址为0x030080000 、结束地址0x0300A0000用于覆盖 DMEM 和 SMEM 空间。

     单击"保存"、您应该会看到转储已保存在弹出窗口中所述的位置。

    谢谢

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

    您好!

    查找在接收工作时捕获的运行时数据的附加 Zip 文件。

    e2e.ti.com/.../hsrPRPRuntimeDataCapturedRxWorking.zip

    谢谢。此致、
    M·帕瓦尔

     

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

    您好、TI 团队、

    我正在与 Mital 合作 解决此问题。

    我们已尝试使用 PRU-ICSS 的"HSR_APP_AM335x_ARM"示例运行 HSR、以下是我们使用示例代码的观察结果:

    ICE 板上的行为 : ICE 板可以发送"HSR 监控"和" Peer_Delay_Request 消息"帧。

    我们的电路板 :未观察到通信。

    例如、使用以下设置:

    PDK 版本 : pdk_am335x_1_0_17

    PRU_ICSS 版本 : PRU-ICSS-HSR-PRP Dan_01.00.05.01

    请告诉我们如何解决这一问题。

    此致、

    阿努伊·沙阿

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

    您好 Anuj

    很抱歉让你久等了。 我要提醒软件开发人员、看看他们是否能从您共享的存储器转储中找到任何内容。

    请 注意、我们通过工业协议支持 AM335x 的能力非常有限我们还已停止支持所有基于 SYSBIOS 和 TI RTOS 的项目。 对于新设计、我们建议评估 AM64或 AM24x 系列  

    如果您更深入地研究该设计(假设您已经设计了电路板)-我们也建议您评估如何使用 CouthIT 等3P  

    https://www.couthit.com/product-page/#industrial-communication-protocol

    再说一次、我将 ping 以查看他是否根据您分享的信息有调试建议。

    此致

    穆库尔  

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

    尊敬的 Anuj、Mital、

    很抱歉延迟响应、我正在检查配置、并将查看是否正确完成。  

    此致、
    希曼舒

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

    您好!

    问题: 我们已将相同的代码移植到定制硬件和 RTOS。 我们能够从其他节点接收 HSR 数据包、但在传输数据包时会遇到问题。 在几个数据包之后出现缓冲区溢出错误。

    请对这两者运行测试、  ICE 板 且您的  定制的板 。 运行测试后(并在遇到 TX 问题时)、按照前面针对两种情况所述记录存储器。
    对于 AM335x、存储器空间为 0x4A30_0000至 0x4A37_FFFF。 在采用 ICSS 存储器转储时存储0x80000存储器字。  ( 当前共享内存转储似乎是从0x402f0400到0x402f1400 。)  

    这将帮助我比较和确定您的设置是否存在某些配置或其他问题。

    谢谢。
    希曼舒  

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

    尊敬的 Himanshu:

    请找到 ICE_Board (Tx 工作)和自定义板(Tx 不工作)的附加存储器转储。

    在运行用于传输 GOOSE 测试帧的 Rx / Tx 测试模式后下载转储(在控制台上执行的命令:R->T->G)。

    观察结果:

    ICE 板:能够在 Wireshark 中查看 GOOSE 数据包和 HSR 监控框架

    自定义板:尝试发送 30-50个 GOOSE 数据包后,无法在 Wireshark 中看到任何数据包和控制台上的缓冲区溢出错误。

    e2e.ti.com/.../PRU_5F00_ICSS_5F00_Data_5F00_Dump_5F00_29082023.zip

    此致、

    阿努伊·沙阿

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

    尊敬的 Himanshu:

    这方面有什么更新吗?

    此致、

    阿努伊·沙阿

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

    Anuj、您好!

    我们在内部与开发团队合作处理这一问题。

    但是、由于开发团队忙于执行与工业 SDK 发布相关的工作、 请预计响应会延迟。  

    此致

    阿什瓦尼

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

    Anuj、您好!

    我们比较了您提供的存储器转储、 在发送端硬件统计数据方面确实存在一些问题。

    --------------------------------------------------
    Working             Non-Working
    --------------------------------------------------
    PRU_ICSS_INTC Registers:
    
    SRSR0 Register (offset = 200h):
    00105180            00305180
    SRSR1 Register (offset = 200h):
    0000000C            0008C08C
    
    - Both event bits are set:
    51 PRU-ICSS0 PORT1_TX_UNDERFLOW
    39 PRU-ICSS0 PORT0_TX_UNDERFLOW
    
    --------------------------------------------------
    PRU_ICSS_MDIO Registers:
    
    Alive Reg: 
    0000000A            00000003
    Link Reg:
    00000002            00000003
    
    - Link up is there for PHYs 0,1
    - MDIOUSERPHYSEL0/1 registers are correctly set
    
    --------------------------------------------------
    PRU_ICSS_MII_RT Registers:
    
    RXCFG0:
    00000015            00000015
    RXCFG1:
    0000001D            0000001D
    TXCFG0:
    00400103            00400103
    TXCFG1:
    00400003            00400003
    --------------------------------------------------

    我们正在检查可能导致此问题的原因。

    此外,如果您仅在1个队列上发送数据包,您是否可以尝试在不同队列上发送数据包,并检查结果是什么。  

    谢谢。

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

    Anuj、您好!

    此外,如果您仅在1个队列上发送数据包,您是否可以尝试在不同队列上发送数据包,并检查结果是什么。  

    [/报价]

    请告诉我、 如果在传输受阻时尝试通过不同队列发送数据包、状态会是什么。 这将帮助我们了解 PRU 的状态。  

    此外,是否能够在两个端口上接收数据包(在问题发生后)?  

    谢谢。
    希曼舒  

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

    尊敬的 Himanshu:

    我们可以使用以下一组配置使 PRU 正常运行。

    PDK:pdk_am335x_1_0_12  

    PRU_ICSS 版本  : PRU-ICSS-HSR-PRP Dan_01.00.04.02

    如果我们使用最新的版本、它将无法正常工作、如果我们使用上述包、我们就能够看到 HSR 监控帧即将到来。

    此外、关于队列、我们使用的是默认的 TI 示例代码、该代码在 ICE 板上工作、因为它在我们的板上。 相同的代码可在此处正常工作、无法与我们的板协同工作。

    在 HSR 的最新示例代码中、QUE0用于 RX 活动、Queue1用于 TX 活动。 我们也使用相同的方法。

    int main()
    {
    ...
    
        ICSSEMAC_InitConfig *switchEmacCfg;
        switchEmacCfg = (ICSSEMAC_InitConfig *)malloc(sizeof(ICSSEMAC_InitConfig));
        switchEmacCfg->phyAddr[0] = Board_getPhyAddress(PRUICSS_INSTANCE, 1);
        switchEmacCfg->phyAddr[1] = Board_getPhyAddress(PRUICSS_INSTANCE, 2);
        
        switchEmacCfg->portMask = ICSS_EMAC_MODE_SWITCH;
        switchEmacCfg->ethPrioQueue[ICSS_EMAC_QUEUE1] = 1 ;
        switchEmacCfg->ethPrioQueue[ICSS_EMAC_QUEUE2] = 0 ;
        switchEmacCfg->ethPrioQueue[ICSS_EMAC_QUEUE3] = 1 ;
        switchEmacCfg->ethPrioQueue[ICSS_EMAC_QUEUE4] = 0 ;
        switchEmacCfg->halfDuplexEnable = 0;
    
        switchEmacCfg->enableIntrPacing = ICSS_EMAC_ENABLE_PACING;
        switchEmacCfg->pacingThreshold = 100;
        
        ...

    此致、

    阿努伊·沙阿

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

    Anuj、您好!  

    我们检查了共享 ICSS 转储以了解更多详细信息、并看到速度配置完成为10M。  
    行2,025,4073当前设置为0xA (DM0和 DMEM1中的偏移量0x1F9C)、但对于100M 配置、应是0x64。  

    在 MII_RT 空间中、我们看到 PRS0寄存器中 设置了 PR1_mii0_crs 位。  
    行51216为0x2 (ICSS 偏移量0x3200 + 0x38)。

    似乎链路伙伴未从 MDIO 寄存器转储中正确返回功能。 这可以强制 PHY 根据 IEEE 规范协商10M HD。 您能否验证 PHY 配置是否正确。
    -您可以比较 PHY 转储的工作和非工作的情况。 请共享 PHY_STATUS 和 BMSR 寄存器值。
    -另外,您的定制电路板中使用的 PHY 是什么?

    谢谢。
    希曼舒

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

    另外:AM3 ICE 板具有 TLK110 PHY。 在第51490行(MDIO 空间 MDIOUSERACCESS0寄存器)中、PHY 寄存器5的读取值为0似乎不正确。   

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

    尊敬的 Himanshu:

    在我们的定制板中、我们使用了"DP83822"PHY 进行光纤(FO)通信。

    工作代码的 PHY_STATUS 和 BMSR 寄存器值如下:

    Phy0 Reg Add=0001 Data=784d
    Phy0 Reg Add=0010 Data=0205
    Phy1 Reg Add=0001 Data=784d
    Phy1 Reg Add=0010 Data=0205

    非工作代码中的相同寄存器值如下所示:

    Phy0 Reg Add=0001 Data=7849
    Phy0 Reg Add=0010 Data=0002
    Phy1 Reg Add=0001 Data=784d
    Phy1 Reg Add=0010 Data=0205

    上述所有寄存器值均来自我们的定制板。

    此致、

    阿努伊·沙阿

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

    Anuj、您好!  

    根据前面的结论、其中一个 PHY 的 PHY 寄存器值似乎有问题:

    寄存器:0x0001基本模式状态寄存器(BMSR)
    值:0x7849
    =>链路状态不是开启

    寄存器:0x0010 PHY 状态寄存器(PHYSTS)
    值:0x0002
    =>速度状态:10Mbps、双工状态:=半双工模式

    寄存器:0x0005自协商连接方能力寄存器(ANLPAR)
    值:0x0
    (从先前的共享内存转储)

    • 请验证 PHY 是否已正确配置、以及两个端口是否均已连接。
    • 那么、是这样的正确:1端口的 Rx 正在工作、该端口的 TX 不工作。 (因为另一个 PHY 似乎具有链路断开状态)

    谢谢。
    希曼舒

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

    尊敬的 Himanshu:

    我 同意你的看法,但我们方面的看法也如上文所述:

    如果我们使用以下封装组合、 同一硬件正常工作

    PDK pdk_am335x_1_0_12

    PRU_ICSS 版本  : PRU-ICSS-HSR-PRP Dan_01.00.04.02

    如果我们使用最新的封装 小于 在同一个硬件上、我们会遇到问题、 ,我已将其共享内存转储。

    请您进一步了解 为什么旧版本在最新版本无法正常工作的情况下可以正常工作

    同时、请与我们分享  最新封装中需要修改的内容、以便在开始工作时

    由于 TI 门户网站上未提供工作包、我假设它是测试版、我们将使用最新版本进行进一步开发。

    如果需要更多详细信息、请告诉我。

     此致、

    阿努伊·沙阿

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

    Anuj、您好!
    重新迭代当前状态:

    ICE 板 :使用 OOB 示例的1.0.4和1.0.5版本。
    自定义板 :适用于1.0.4,但不适用于1.0.5。
    开放点:您的定制板是否也用1.0.5正确完成了所需的修改?

    1.0.4和1.0.5之间的差异:
    发生变化。 无固件更改(PRU)。 您可以对这两种封装进行比较、以了解在您的定制电路板情况下、是否有因素会产生影响。  

    解决/从根本上导致问题的建议:

    1. 校验 PHY 初始化序列。 验证所有操作是否正确完成。 您也可以与我们共享初始化代码以供查看。

    2. 获取完整的 PHY 转储 (两个 PHY 的所有 PHY 寄存器值)您的定制板在两种情况下都能正常工作(1.0.4)和不能正常工作(1.0.5)并与调试进行比较。
    您还可以将其与我们共享、以便我们进行检查并提供反馈。 我们已经从先前的共享信息中看到、PHY 配置似乎是一个问题-完整的寄存器映射比较可能有助于引脚指出该问题。

    3."在我们的定制电路板中,我们使用了"DP83822" PHY 进行光纤(FO)通信。"
    请后续向 PHY 团队咨询 观察到的 PHY 相关问题。

    谢谢。
    希曼舒

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

    4.另请尝试 从 main()中删除 PHY 复位调用  (如下所示的第16行):

    int main()
    {
        TaskP_Params taskParams;
    
        PRUICSS_IntcInitData pruss_intc_initdata = PRUSS_INTC_INITDATA;
    
        HSR_PRP_socHwinit(PRUICSS_INSTANCE);
    
    #ifndef SOC_AM65XX
        memset(&boardInfo, 0, sizeof(Board_IDInfo));
        Board_getIDInfo(&boardInfo);
        UART_printf("boardName: %s\n", boardInfo.boardName);
    #endif
    
    #if !defined(SOC_K2G) && !defined(iceAMIC11x) && !defined(SOC_AM65XX)
        Board_phyReset(2);
    #endif /*SOC_K2G & iceAMIC11x*/
    
        prusshandle = PRUICSS_create((PRUICSS_Config *)pruss_config, PRUICSS_INSTANCE);
    

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

    大家好、

    我们现在尝试使用 PHY 进行调试、结果如下所示:

    • PHY DP83822i 链路状态正常、无需 PHY 复位即可获取链路状态
    • PHY 的所有寄存器转储指示在工作(01.00.04.02)和非工作(01.00.05.01)代码中的配置和引导配置是相同的

    处理器端是否有任何更新 ?  

    此致、

    亚历克斯

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

    您好!  

    这里没有任何新的更新。
    从前面的讨论中、我看到工作案例和非工作案例之间的 PHY 寄存器值存在一些不一致。 所以我要求检查前两次答复中提到的4点。 如果有这些方面的最新情况、请告诉我。  

    谢谢。
    希曼舒