工具/软件:
启动子器件时、EtherCAT 主站通过子器件信息接口(SII)读取"仿真 EEPROM"的内容。 这涉及从0x0500开始写入 SII 命令接口寄存器、等待子器件清除寄存器0x0502中的 BUSY 位、然后读回请求的数据字。
在某些情况下、我们在读取 SII 时会遇到超时。 我们的器件具有 Sitara 3359并运行 Beckhoff EtherCAT 从站协议栈代码(SSC) 5.13和 TI PRU-ICSS-ETHERCAT-SLAVE 01_00_10_00。 主设备将继续运行。
附件是 Wireshark 跟踪。 相关器件配置了物理地址0xb。 例如、使用显示过滤器 eth.adc src 包含02:01和 ecat.ado eq 0x502。
在数据包19266处、主设备请求读取字0x031a、但 BUSY 位在大约170ms 时保持开启状态、此时主设备放弃并报告超时。 相比之下、其他读取用时不到1ms。 每启动几次就会出现问题。
有关如何进一步调试此问题的提示、我们很感激。 特别是、我们想知道 BUSY 位复位发生在哪里:在 SSC 中还是在 PRU 固件中? 什么会触发复位?