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.

[参考译文] MCU-PLUS-SDK AM243X:pHost2PruIntfc ->smssprocessdata [SM_INDEX -2]。 PRU 中的 LOCK_STATE 错误

Guru**** 1791630 points
Other Parts Discussed in Thread: AM2434
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1399060/mcu-plus-sdk-am243x-phost2pruintfc---smsprocessdata-sm_index--2-lock_state-in-pru-is-wrong

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件: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) 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能告诉我您使用的 SDK 版本吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    mcu_plus_sdk_am243x_08_05_00_24

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 让我来看看这个问题、给您回过来。

    此致、
    亚伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    完成映射的四个内核中的最后一个内核将执行 BSP-process_data_complete 函数、从而使 pHost2PruIntfc ->SM_dacessdata [SM_index-2]。 LOCK_STATE=
    LOCK_PD_BUF_HOST_ACCESS_FINE[/报价]

    您能否更好地阐明这一逻辑?

    需要什么条件。 PRU 中的 LOCK_STATE 从 LOCK_PD_BUF_HOST_ACCESS_FINISH 转换到 LOCK_PD_BUF_Available_for_host[/QUOT]

    唯一的要求是 R5F 完全消耗缓冲区、并通过 bsp_process_data_complete 设置 LOCK_PD_BUF_host_access_finish 。 固件读取此状态并  在更新三重缓冲器的指针后将状态更改为 LOCK_PD_BUF_Available_for_host。  

     是否需要执行 PREICS_ScarEvent

    认为没有必要

    [/quote]