器件型号: AM62L
在 该帖子中、通过应用补丁解决了独立 SPI 测试期间遇到的问题 ioctl 、这导致了执行时间稳定、抖动约为 300µs 以及 CPU 使用率较低。 现在、SPI 测试程序已作为子线程集成到 CODESYS 中、以模拟实际使用场景。 SPI 测试程序被重新配置为在 1ms 的周期内执行、并 spi_mcu_output_test() 每个周期传输 200 字节的数据。 内核 1 专用于 EtherCAT、运行一个带 4 个轴的 1ms 周期、程序仅包括 MC_Power 和 MC_MoveVelocity。 所有其他程序都在 Core 上执行 0.
当 SPI 测试线程不存在时、内核 0 的使用率为 20%–45% 、内核 1 的使用率为 36%、 EtherCAT 任务抖动约为 80µs 。
当存在 SPI 测试线程时、 内核 0 的使用率上升到 85%、内核 1 的使用率上升到 45%、EtherCAT 任务抖动增加到大约 260µs 、SPI 测试线程抖动达到 4ms 。
当存在 SPI 测试线程但移除 EtherCAT 时、内核 0 的使用量降至 66% 、内核 1 的使用量降至 2%、 并且 SPI 测试线程抖动为 400µs 。
htop 和 CODESYS 报告的 CPU 使用情况统计数据是密切一致的、并且内核已在构建时 CONFIG_VIRT_CPU_ACCOUNTING_GEN 启用。 程序稳定运行后、抖动统计信息被手动清除。
总之、可以观察到 SPI 和 EtherCAT 相互干扰、即使它们未分配给同一个内核并且 CPU 使用率过高。 请协助分析潜在问题。