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.

[参考译文] CCS/TMS320C6678:C6678中 IPCGR 的 kicker 机制

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/674424/ccs-tms320c6678-kicker-mechanism-for-ipcgr-in-c6678

器件型号:TMS320C6678

工具/软件:Code Composer Studio

我将 IPCGR 用于 IPC 中断。 在我的项目中、两个内核、例如内核 A 和内核 B、都可能向 内核 C 发送中断。在 C6678数据表中、据说在我写入 IPCGR 寄存器之前、我必须解锁 kicker 机制、我的问题是: 如果内核 A 和内核 B 尝试同时解锁 kicker 机制、会发生什么情况? 我想可能有两种情况。

情况1: KICK0和 KICK1寄存器不关心谁解锁了 kicker 机制。 一旦任一内核将其解锁、IPCGR 寄存器将变为可写。 然后内核 A 和内核 B 都可以为 内核 C 写入 IPCGR 寄存器。在这种情况下、内核 C 是否会错过其中一个中断?

案例2: KICK0和 KICK1寄存器知道谁解锁了 kicker 机制。 如果内核 A 解锁、则内核 B 无法再次解锁、 直到内核 A 锁定 kicker 机制。 如果正确、可能会发生以下情况:Core A 解锁 kicker -> Core B 尝试解锁 kicker、但被阻止。 因此、内核 B 将停止 ->内核 A 将锁定 kicker ->内核 B 将恢复执行并解锁 kicker。  

C6678在哪种情况下是正确的?  谢谢你。

祝你一切顺利!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    这种情况- KICK0和 KICK1寄存器不关心谁解锁了 kicker 机制。 一旦任一内核将其解锁、IPCGR 寄存器将变为可写。

    在内核 C 的 ISR 中、您可以扫描 IPCAR0-7来处理、而不会丢失任何中断。

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

    感谢你的帮助。 在您的回复中、您说"扫描 IPCAR0-7以处理而不丢失任何中断"。 让我们假设内核 C 的 CoreID 为7、内核 A 和内核 B 分别使用 SRCC0和 SRCC1作为 IPCAR 寄存器的源 ID。 根据我的理解、可能会发生以下情况:


    内核 A 解锁 kicker 机制-->内核 A 写入 IPCGR7,设置 IPCG 位和 SRC0位-->内核 C 接收中断,进入中断服务例程(ISR)。 硬件自动清零 GIE 位。 -->由于 kicker 机制已解锁,内核 B 可以直接写入 IPCGR7,设置 IPCG 位和 SRC1位。 -->由于 GIE 位被清零,内核 C 中的当前 ISR 不会被内核 B 的中断中断中断中断。但 SRCC1位已置位。 因此、在 ISR 中、Core C 可以扫描 IPCAR7寄存器以检查 SRCC1位是否已置位。 这样、内核 C 将不会错过来自内核 B 的中断


    我是否理解正确? 谢谢你。


    祝你一切顺利!


    徐王

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

    是的,你更清楚了

    此致、
    Garrett