主题中讨论的其他器件:AM2434
工具与软件:
当 am2434作为从器件运行 EtherCAT 时、PRU 的 CatISr 和 Sync0事件在 R5的全部四个内核中注册。 对于 EcatISr、在执行 PDO_OutputMapping 时、 完成映射的四个内核中的最后一个内核将最后执行 BSP-process_data_complete 函数、从而使 pHost2PruIntfc ->SM_dacessdata [SM_index-2]。 LOCK_STATE=
LOCK_PD_BUF_HOST_ACCESS_FINISH。 但现在存在一个问题、当下一个中断执行 PDO_Output 映射时、将发现 pHost2PruIntfc ->SM_decessdata [SM_INDEX -2]。 LOCK_STATE 无法达到 LOCK_PD_BUF_HOST_ACCESS_START 状态、因此它无法获取与 PRU 中的 PDO 相对应的存储器位置、从而导致过程数据异常。 我想问一下 pHost2PruIntfc ->smssprocessdata [SM_INDEX -2]需要哪些条件。 要从 LOCK_PD_BUF_HOST_ACCESS_FINISH 更改为 LOCK_PD_BUF_Available_for_host、然后更改为 LOCK_PD_BUF_HOST_ACCESS_START? 是否需要在完成 pHost2PruIntfc->SM_processdata[SM_INDEX -2].lock_state =LOCK_PD_BUF_HOST_ACCESS_FINISH 的执行后执行 PRUICS_ScreEvent (PRUICS_SHANDLE) args、PRU-ARM_SVENT0) ?