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.
亲爱的香榭丽舍大街,
我的客户面临执行 ISR 时 IPC 通信损坏。
例如、当每5us 发生一次 PWM 中断时、我的客户尝试通过 IPC 与其他内核通信、并且该 ISR 中将存在控制操作、但在此 ISR 之后、他们的 IPC 通信会出现问题、如数据覆盖、延迟等。
客户可以如何解决此问题? 它们是否可以通过控制 IPC 和 PWM 中断 ISR 的优先级来解决该问题? 或者他们应该使用 HWIP_disable() API 吗?
如果他们可以通过优先级控制来解决这个问题、你能否提供一些指导、说明他们如何控制优先级?
如果它们应该使用 HWIP_disable () API,有没有什么方法 使 PWM 中断 ISR 挂起?
谢谢、此致、
SI
我发现主函数中有 while 循环、当有更新的数据时、主函数的此 while 循环中会执行 IPC 函数。
例如、当从 ISR 接收到新数据时、将在主函数中执行其 IPC 函数。
谢谢、此致、
SI
您好、SI:
您能否确认它是 MCAL IPC 还是 MCU_PLUS_SDK IPC?
谢谢。
贡詹
您好、Gunjan、
即 MCU_PLUS_SDK_IPC。
它们使用的是 MCU_PLUS_SDK v8.6.0。
谢谢、此致、
SI
您好、SI:
我正在研究重现此问题。 请期待周三之前回复。
此致、
贡詹
您好、SI:
您能告诉客户用于 IPC 的内核吗? 哪个内核会生成 PWM 中断? 此外、PWM 和 IPC ISR 的优先级是多少?
此致、
贡詹
您好、Gunjan、
在 Core0/1中、有使用 IPC 的 AutoSAR 平台、而基于 MCU+SDK 的 PWM 正在使用具有 IPC 的 Core2/3上。
在2/3中、内核中不存在 IPC ISR、当从 PWM ISR 接收到数据时、IPC 将在主 while 循环中执行、如下所示。
主要()
{
请执行{
如果(data!=0) IPC_to_core0_and_1 (data);
} while ();
}
谢谢、此致、
SI
您好、SI:
很抱歉延迟回复。 我已尝试在 core1中为 MCU_PLUS_SDK 的 IPC_NOTIFY 示例添加 PWM 中断。
每当 core1中出现 PWM 中断时、它将 向 core0执行"IpcNotify_sendMsg (0、4、itr_interrupts、1);"。
对我而言、它工作正常、并且正在成功通过 IPC_NOTIFY_ECHO。
此致、
贡詹
您好、Gunjan、
感谢您的答复和测试。
您在测试中是否使用了 Hwip_disable ()和 Hwip_restore () API ?
如果没有这些 API、他们就会发现一些问题、比如数据覆盖、延迟等。
如果没有这些 API、您仍然可以成功进行测试、那么您能否共享测试文件?
谢谢、此致、
SI
您好、SI:
我 在测试中没有使用 Hwip_disable ()和 Hwip_restore()。 我将附加 Core1中使用的已更新 ipc_notify_echo.c 和 example.syscfg。 剩余内核的代码与 MCU_PLUS_SDK 的 IPC_NOTIFY 示例中给出的代码相同。
e2e.ti.com/.../ipc_5F00_notify_5F00_echo.ce2e.ti.com/.../6153.example.syscfg
谢谢。
贡詹
您好、Gunjan、
感谢您分享代码。
我获得了以下有关其结构的更多详细信息。
*每5us ISR 对应一次 PWM ISR
* IPC 将于每
-在主 while 循环中每1ms 读取一次(Core 0/1 -> Core 2/3)。
- 在主 while 循环中每5ms 写入一次(Core 2/3 -> Core 0/1 )。
他们的目标是获取所有 PWM ISR 而不丢失、而且他们担心 在 HwiP_disable ()之后 PWM 中断会丢失。
我认为 HwIP_disable () API 会忽略所有中断,所有这些中断都会丢失,对吧?
他们认为、执行 PWM ISR 需要3~3.5us (60~70% CPU 负载)。
您能否为其用例建议 IPC 的稳健结构? 我认为他们应该增加 IPC 读取/写入的额外任务。 你有什么看法?
谢谢、此致、
SI
您好、SI:
所有内核中使用 PWM 中断、还是某些特定内核中使用 PWM 中断?
当调用 HwiP_disable ()时,它将停止接收中断(假设我们为 PWM 处理:3us 而禁用它),并且由于 IPC 以1us 的间隔发生,因此将错过 IPC 中断之间的间隔。
它们将生成 IPC 和 PWM 中断、那么其中一个中断将具有更高优先级。 将首先处理较高优先级的中断。
此致、
贡詹