器件型号: AM263P4
您好:
我正在为 AM263Px 运行基于 beckoff 的 EtherCAT 示例 (ethercat_subeckhoff _ssc_demo_am263px-lp_r5fss0-0_freertos_ti-arm-clang)。 不过、我可以看到 HW_EcatIsr、 Sync0_ISR 和 Sync1_ISR 都在轮询的专用任务下运行。 是否可以获取中断而不是使用轮询方法?
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.
器件型号: AM263P4
您好:
我正在为 AM263Px 运行基于 beckoff 的 EtherCAT 示例 (ethercat_subeckhoff _ssc_demo_am263px-lp_r5fss0-0_freertos_ti-arm-clang)。 不过、我可以看到 HW_EcatIsr、 Sync0_ISR 和 Sync1_ISR 都在轮询的专用任务下运行。 是否可以获取中断而不是使用轮询方法?
您好、James:
我能够进一步检查此示例:
EtherCAT 示例中的 PDI ISR 可配置为在两种不同的模式下运行、具体取决于 ENABLE_PDI_task 编译时定义:
1、中断模式(默认)
未定义 ENABLE_PDI_task 时:
pdi_isr () 被注册为一个真正的中断处理程序
它在中断上下文中以最小的延迟执行
由来自 ESC(EtherCAT 从站控制器)的硬件事件直接触发
tiescsoc.c:233 显示:bspInitParams->pdi_isr = pdi_isr;
2.阻塞任务模式(可选)
定义 ENABLE_PDI_task 时:
创建一个名为 PDItask 的专用 RTOS 任务
使用 PRUICSS_waitEvent () 阻止 PRU-ICSS 事件上的任务
当事件发生时、它会调用 hw_EcatIsr () 来处理中断
它在任务上下文中运行、而不是在中断上下文中运行
tiscutils.c:296-310 显示阻塞任务实现
关键实现详细信息
pdi_isr() 函数 (ecatappl.c:618) 执行:
读取 AL 事件寄存器
处理 SYNC0/SYNC1 事件
处理过程数据输出/输入事件
周期时间监测
默认情况下(没有 ENABLE_PDI_task)、PDI ISR 是真正的中断处理程序、而不是阻塞任务。 但是、可以通过在编译时定义 ENABLE_PDI_task 将其配置为阻塞 RTOS 任务。