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.
工具与软件:
您好、TI:
1.在 R5F_MCU 中配置了 RESET_ISOLION 后、重启 A 内核后会发现 A 内核与 R5F_MCU 内核之间的 IPC 通信失败。 失败的原因是 无法找到设备/sys/bus/platform/devices/79000000.r5f。
2.通过比较关闭 RESET_ISOLATION 配置后的情况、我们发现 A 内核会在创建器件/sys/bus/platform/devices/79000000.r5f.之前读取 R5F_MCU 内核的状态 如果失败、状态读取将暂停;如果成功、状态读取将处于活动状态。 如何解决该问题?
你好 Xiaowei、
请注意,回复可能会延迟-我所在的城市今天失去了电力和互联网,它看起来可能会多出几天(我不得不开车到另一个城市键入此回复)。 我还将从5月31日(星期五)到6月9日(星期日)进行国际旅行、届时我将无法访问我的 EVM。
我不知道这是否是我们在这一点上进行严格测试的用例。
您能否提供有关以下方面的其他信息:
1)如何配置重置隔离
2) 2)您使用的引导流程是什么? 我假设使用某种 SBL 而不是 Linux SDK 中默认的 SPL 引导?
有关引导流程的一些链接、请参阅 Academy:
https://dev.ti.com/tirex/explore/node?node=A__ASKOt3iId42AwB.5ZyUWrw__AM62A-ACADEMY__WeZ9SsL__LATEST
3)请提供 Linux 启动终端输出(如: dmesg | grep remoteproc)
4) 4)您是否正在使用在 Linux 和 MCU R5F 之间进行交互的特定应用? 您正在使用什么应用?
同时、我将与开发人员联系、以便更好地了解他所测试的内容。 请注意,他也可能没有电源和互联网,所以通信可能很慢。
此致、
Nick
其他问题:
您好、Nick
我们目前使用的 SDK 版本是9.2.0.5
2.我们是汽车客户。 目前、A53使用 Linux 系统、R5F 使用 RTOS
3.我还没有在开发板上重现此问题、但我今天将重新讲述。 我将在复制完成后通知您结果。
4. Linux 启动日志如下:
启动方法为 SBL 而不是默认的 spl 启动
6.测试程序类似于 rpmsg_char_simple 程序、可用于重现
谢谢!!
您好、Nick。
1)如何配置重置隔离
我指的是下图所示的官方示例。
我修改了一个地方来禁用外设访问隔离 、因为我们需要 IPC 进行通信、如下图所示。
执行上述步骤后、IPC 功能正常。 内核重新启动后、MCU 不会复位、但79000000.r5f 文件将会丢失、从而导致 IPC 故障。
您好、Nick
我在 am62a7_EVM 开发板上重现了问题。
当 MCU_R5F 未设置为复位隔离操作时、重新启动日志如下所示、可以找到/sys/bus/platform/devices/79000000.r5f
当 MCU_R5F 设置为复位隔离操作时、重新启动日志如下所示:找不到/sys/bus/platform/devices/79000000.r5f
你好 Xiaowei、
这是安全用例吗? 如果没有、请告诉我们更多有关复位隔离的原因
发生什么事了?
由于 Linux 只是附加到 MCU_R5F、而不是初始化 MCU_R5F、因此我假设您是在引导流程的早期通过 SBL 引导初始化 MCU_R5F。
处理器首次开启时、SBL 会将资源表放置在 DDR 的预期区域中、然后当 Linux"连接"到 MCU_R5F 时、Linux 会转到资源表并填充一些信息。 然后、MCU_R5F 可以读取 Linux 写入的详细信息、而 RPMsg 可以从 Linux 和 MCU_R5F 开始。
但是、在复位主域之后、我预计 DDR 也会复位。 资源表不再位于 DDR 中、这一次当 Linux 尝试连接时、它将找不到资源表。 因此、Linux 将不会设置执行 RPMSG 所需的 Virtio 缓冲区、并且您将看到初始化失败。
我觉得 TI 不支持这个用例
这并不是 TI 所支持的用例。 在安全上下文中、我认为 DDR 应由 MCU 设置防火墙-因此 在 RESET_ISOLATION_INIT 中禁用 PSC 的原因。 我正在将您的主题帖发送给另一名团队成员进行确认。
此致、
Nick
您好、Nick。
让我来回答您的问题、了解我们为什么要使用复位隔离。 这是我们的诊断要求、当 MCU_R5F 通过检测信号检测到 Acore 死亡时、它需要 单独对 Acore 进行复位。
我遇到的另一个问题是、我在 MCU_R5F 工程的 linker.cmd 文件中看到了资源表的定义、因此我知道当加载 MCU_R5F 固件时、SBL 将资源表复制到 DDR 中。 当 MCU_R5F 设置为复位隔离时、SBL 不会重新加载 MCU_R5F 固件、也不会将资源表重新复制到 DDR、因此会生成此错误、我是否正确?
如果上述理解是正确的、我们应该如何解决该问题、是否有办法将 DDR 设置为在复位主域时不重新启动?
谢谢!
你好
该主题已发布了几个月、是否仍是一个未决问题? 自上次发布以来取得了哪些进展?
您好、WJ:
我已经看到您将 PSC_DISABLE 标志从1设置为0的更改、这允许任何主域内核访问 MCU 域外设/存储器 、反之亦然。
完成此更改后、您的 IPC 将正常工作、而且您已经确认 IPC 能够正常工作。
这种更改是可以的。
接下来、您正在监视 A53内核检测信号、如果 您尝试进行 主 域复位时该检测信号已失效。 您能确认您是如何重置的吗? 如果您正在使用任何 API、请共享您正在使用的 API?或者如果您正在控制 CTRL_MMR 寄存器、请共享寄存器详细信息和代码片段。
并且,如果你做主域重置,我们不能保留以前的 DDR 数据和 DDR 数据将丢失,它是不可能保存以前的数据,即使在复位隔离.
要解决此问题、您已经从 MCU R5F 重置主域。因此、 首先 复制 Linux 资源表数据(DDR)、并将 DDR 数据移动到 MCU R5F MSRAM 存储器。 请重置主域。
运行 A53心跳信号后、将复制的 MSRAM 数据移动到 DDR IPC 资源表存储器中。 除了该方法、我们不能执行任何操作。
此致、
Anil。
您好、WJ:
如果您在任何地方遇到问题、请告知我们。
此致、
Anil。
Anil、您好!
我很抱歉,我最近有点忙,不能及时回答你。
我使用的 API 如下所示:
我将根据您的建议进行测试、但我想问 MCU 执行复位隔离后将资源表数据复制到 DDR 需要多长时间、因为 IPC 目前不工作、并且我无法接收到 A53的检测信号数据。
此外、我想知道 AM62AX 中是否有其他模块可以满足在不影响 IPC 功能的情况下独立复位 A53内核的要求?
谢谢!
您好、WJ:
上述复位 API 正常。
同样,如果 A53的心跳基于 IPC 闪烁,那么上述方法似乎不起作用。
我们应该遵循相同的方法、但将数据从 MSRAM 移动到 DDR 代码位置将从 MCU R5F 应用移动到 SBL 阶段2。
您可以在 A53内核跳转到 SBL 阶段2中的应用程序之前添加以下代码。
您可以定义1KB 的特定 MSRAM 存储器位置、用于在 MCU R5F 应用程序中将 IPC_LINUX_DATA_TABLE 移动到 MSRAM 存储器、并在重置设备之前或在 MCU_R5F 应用程序中的 Board_driversOpen()函数之后将该 IPC_LINUX_TABLE_DATA 移动到 MSRAM 存储器。
现在、 SOC 在重置后从 RBL 引导到 SBL、然后修补 下面的代码、将数据从 MSRAM 内存移动到 SBL 第2阶段的 IPC_DATA_MEMORY。
然后,一旦 A53跳转到应用程序,它就可以直接与 MCU R5F 内核通信,没有任何延迟。
如果未隔离 M4F 内核、则 补丁将不起作用。
您可以 在 SBL 第2级添加以下 WA。 它可在 隔离 和非隔离应用中工作。
#define IPC_MEMORY_NOT_RESET_WA #ifdef IPC_MEMORY_NOT_RESET_WA if(Bootloader_socIsMCUResetIsoEnabled()) { memcpy(IPC_LINUX_TABLE_MEMORY, MSRAM_MEMORY, 1024U); } else { } #endif
此外、我想知道 AM62AX 中是否有其他模块可以满足独立复位 A53内核而不影响 IPC 功能的要求?
在 IPC 中、所有 内核仅使用 DDR 存储器、一旦 SOC 复位、便无法保存 DDR 数据。
请配置以下 PSC_settings 而不是上述设置。
pscMain2MCUDisable = 1;
pscMCU2MainDisable = 0;
psMCU2DMDisable = 1;
debugIsolationEnable = 1;
此致、
Anil。
您好、WJ:
通过上述更改、您的应用程序将从 MCU 内核访问用于 IPC 用例的 DDR。
另外、DM R5F 内核正在访问 IPC 用例的 MSRAM。
除了这些观察结果之外、对于复位和 MCU R5F 数据、您的 MCU R5F 内核仍与主域隔离。
此致、
Anil。
Anil、您好!
感谢您的答复。 我将根据您的方法对其进行验证。
但对于上述方法、我有两个问题。
1. 设置复位隔离后、在 SOC 复位后 MSRAM 的内容是否会保留
2. 如果 MCU 代码在 DDR 上运行、则在设置复位隔离后、MCU 在 SOC 复位后是否仍能正常运行
可以帮助我回答上述两个问题吗?
谢谢!
您好、WJ:
[报价 userid="559189" url="~/support/processors-group/processors/f/processors-forum/1366786/am62a7-after-configuring-reset_isolation-on-r5fmcu-ipc-fails-after-core-a-reboots/5323778 #5323778"]1. 设置复位隔离后、在 SOC 复位后 MSRAM 的内容是否会保留
[报价]是、在重置后应保留 MSRAM 内容。
[报价 userid="559189" url="~/support/processors-group/processors/f/processors-forum/1366786/am62a7-after-configuring-reset_isolation-on-r5fmcu-ipc-fails-after-core-a-reboots/5323778 #5323778"]2. 如果 MCU 代码在 DDR 上运行、则在设置复位隔离后、MCU 在 SOC 复位后是否仍能正常运行
[报价]如果 MCU 代码在 DDR 上运行、则复位后、DDR 内容将丢失、仍在运行的 MCU 寄存器和 MCU 外设保持先前的值。
因此、在执行"复位甚至复位隔离"之后、我们无法保持 DDR 存储器。
目前、上述建议 也是这样做的。 复位后、DDR 内容将丢失。 因此、在复位 SOC 之前、我们要将 DDR 内容移至 MSRAM。
同样、在 A53运行前的 SBL 阶段、我们会将 MSRAM 数据移至 IPC 表存储器。 因此、A53内核已准备好向 MCU R5F 内核发送消息。
请分享您的测试结果。
此致、
Anil
Anil、您好!
由于我们当前的 MCU 代码很大、因此 MSRAM 不再有足够的空间容纳 MCU 代码、因此部分代码在 DDR 中运行。
那么在这种情况下、设置了复位隔离后、MCU 是否仍然能够在 SOC 复位后正常运行代码?
谢谢!
那么在这种情况下、设置了复位隔离后、MCU 是否仍然能够在 SOC 复位后正常运行代码?
[报价]您好、WJ:
如果部分代码在 MCU 内核的 DDR 上运行、
复位后、DDR 内容将丢失、即使在 MCU 复位隔离模式下、您的应用程序也可能无法正常运行。
此致、
Anil。
Anil、您好!
我理解。
谢谢!
您好!
如果您没有任何查询,请关闭线程,并为新查询打开新线程。
此致、
Anil。