您好,
我目前使用的是 s32k358 多核处理器,我正在尝试使用共享内存进行 IPC。
我正在尝试使用 core0status 和 core1status 变量共享 IPC 数据。
但两个变量都声明在同一内存中,因此每个核心都会覆盖其值。
core0status 和 core1status 的地址,在每个内核中互换。
我错过了什么?请参见所附代码。
应适当初始化 XRDC,为 CM7_0 分配 DID=0,为 CM7_1 分配 DID=1。请检查 XRDC 功能域分配。您可以参考 RTD 示例:
至于安全文件,您需要申请访问。请参考我之前分享的常见问题。
致以最诚挚的问候,
Julián
感谢您的回复。
我已经签署了保密协议,但仍然无法访问安全文件。
另外,我参考了 S32K324 的共享内存程序,但在我的程序中
#define CORE_DOMAIN_ID (IP_XRDC->HWCFG1)在两个内核中始终显示为0。
我错过了什么?
还有一个培训演示: S32K3 RTD XRDC、SEMA42、MPU、XBIC 和 INTM 培训演示。不过,它在 S32K3 的安全文件下。如果您没有访问权限,可能需要上传有效的 NDA 并申请访问权限。请参阅安全访问权限常见问题解答|恩智浦半导体。
公开场合有以下两份应用笔记:
虽然模块非常相似,但S32G和S32K设备之间存在一些区别,因此请仔细阅读应用笔记。
致以最诚挚的问候,
Julián
感谢您的回复。
共享内存的问题已经按照文件解决了,但我想配置 sema42 驱动程序,该怎么做呢?
我使用的是 s32ds v3.5 RTD 4.0.0。
共享变量仅由 CM7_0(启动内核)初始化一次,而不是 CM7_1(二级内核)初始化。Core0 会将带有初始值的共享全局变量的数据从 ROM 复制到 RAM,而 Core1 将忽略数据复制,只在代码中使用它们。
Core0& Core1 之间的链接文件应如下所示:
我已经给你发了一条私人信息,里面有一些关于 S32K3 双核和内核间内存共享的资料。
致以最诚挚的问候,
Julián
我遵循了同样的例子,仍然两个核心都返回 0 作为功能域 ID。
我还需要在核心 2 中启动 sema 吗?
很可能是 XRDC 设置不正确。默认情况下,CM7_0 和 CM7_1 的 DID 均为 0。 我已向您发送了有关 XRDC 配置的私人信息。
致以最诚挚的问候,
Julián