Thread 中讨论的其他器件:SYSBIOS、TLK110、 DP83822I
我们已将 HSR-PRP Dan 堆栈集成到我们的 RTOS 中,我们可以从其他节点接收所有类型的数据包,但在传输 HSR-PRP 数据包时遇到问题,
在开关模式下使用与 PRU 相关的相同硬件和软件设置
我们已经对以下关于 TI-RTOS 的 HSR-PRP 堆栈进行了更新
需要支持来解决该问题、
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.
我们已将 HSR-PRP Dan 堆栈集成到我们的 RTOS 中,我们可以从其他节点接收所有类型的数据包,但在传输 HSR-PRP 数据包时遇到问题,
在开关模式下使用与 PRU 相关的相同硬件和软件设置
我们已经对以下关于 TI-RTOS 的 HSR-PRP 堆栈进行了更新
需要支持来解决该问题、
您好、 Sreenivas、
感谢您的提问。
您能否提供有关您的设置的更多信息?
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·帕瓦尔
尊敬的 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 港口上看到了同样的问题?
此致
阿什瓦尼
您好!
查找在接收工作时捕获的运行时数据的附加 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 Himanshu Mittal 以查看他是否根据您分享的信息有调试建议。
此致
穆库尔
您好!
问题: 我们已将相同的代码移植到定制硬件和 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
此致、
阿努伊·沙阿
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个队列上发送数据包,您是否可以尝试在不同队列上发送数据包,并检查结果是什么。
谢谢。
尊敬的 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 是什么?
谢谢。
希曼舒
尊敬的 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
(从先前的共享内存转储)
谢谢。
希曼舒
尊敬的 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);