工具/软件:
尊敬的团队:
我们要求并行运行 A53和 M4内核、为此、我们创建了 Linux appimage、M4F appimage 并刷写了 EVK、并能够并行引导和运行两个内核。
但在启动时,我们看到一些与远程 proc 相关的崩溃,所以我想知道
- 为什么会发生这种崩溃
- 我们如何解决它
- 此碰撞是否可接受?
在此处附加崩溃日志
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.
尊敬的团队:
还附带了基本票证问题、我们得到了支持以启用此多核引导
您好!
这里有很多要讨论的东西。
帮助我了解您的设计
1)您要使用什么引导流程?
我们在 AM64x 上支持2个引导流程:SBL 引导(即您当前使用的引导流程)和 SPL 引导(即 Linux SDK 中的默认引导流程)。
您可以在 AM64x Academy > Multicore Module > Boot Flow:SPL 与 SBL 中找到更多信息
https://dev.ti.com/tirex/explore/node?node=A__AXfgOBMVhJy5K0DPeNFSPQ__AM64-ACADEMY__WI1KRXP__LATEST
2)如何初始化非 Linux 内核?
您当前正在引导的 SBL 部分期间初始化非 Linux 内核。 您还可以从 Linux uboot 或使用 Linux Remoteproc 驱动程序引导非 Linux 内核。
如需更多信息、请参阅 AM64x Academy >多核模块> 初始化远程内核的方法
https://dev.ti.com/tirex/explore/node?node=A__Ab5AogqjWTRWB1yUfHHjTw__AM64-ACADEMY__WI1KRXP__LATEST
3) 您希望 Linux 和非 Linux 内核如何交互?
现在、您可以看到 Linux 引导期间 Linux Remoteproc 驱动程序连接到非 Linux 内核。 当 Remoteproc 驱动程序"Configured R5F for IPC-only mode"时、这意味着 Linux Remoteproc 驱动程序正在尝试初始化 Linux 和 M4/R5内核之间 RPMsg 通信的基础结构。
为了使 Remoteproc 初始化过程正常工作、您需要
1)为资源表和 RPMsg virtio 缓冲区预留的特定内存区域
2)非 Linux 固件二进制文件中存在的资源表
所以、
3A)您是否甚至希望使用 RPMsg 在 Linux 与 R5F 和 M4F 内核之间进行通信?
否则、应在 Linux 中禁用这些内核、这样 Linux 就不会尝试连接到这些内核。
有关更多信息、请参阅 AM64x Academy >多核模块>禁用远程内核的方法
https://dev.ti.com/tirex/explore/node?node=A__Af8fKrelrD3vCdWjTx7.ww__AM64-ACADEMY__WI1KRXP__LATEST
3B)如果您确实希望使用 RPMsg 在 Linux 与 R5F 和 M4F 内核之间进行通信、那么您的 Linux 和 MCU+内存分配是否匹配? 您是否向 MCU+工程添加了资源表?
有关如何在 Linux 和 MCU+应用程序中分配内存的更多信息、请参阅
AM64x Academy > Multiple module > Memory
https://dev.ti.com/tirex/explore/node?node=A__AfqqKhh3tdI5s3wpsXrWWw__AM64-ACADEMY__WI1KRXP__LATEST
有关将资源表添加到 MCU+工程的更多信息、请参阅
AM64x Academy > Multiple module > Remote Cores 上的应用开发
https://dev.ti.com/tirex/explore/node?node=A__AfSHr0vWbFdGCnmoPeMXzg__AM64-ACADEMY__WI1KRXP__LATEST
此致、
Nick
您好、Nick、
感谢您的快速答复。
在我们当前的要求中、我们不使用 Linux 之间的 RPMsg 通信 R5F 和 M4F 内核运行。 现在、我们可以在 Linux 中禁用这些内核。 使用您指定的链接中提到的附加补丁"0001-AM64x-SDK-9.0-disable-all-cores-Bout-r5fss0_0"
由于我不熟悉 AM6442处理器、因此我想明确说明是否禁用此 R5F1子系统会影响任何其他接口、尤其是 PRU 子系统(因为这是 AM6442中的一个独立子系统)
此致、
Shwetha Nayak
您好 Shwetha、
1) Linux 器件树"禁用"仅影响 Linux、而不影响整个系统
如果某个器件设置为 STATUS = Okay、则 Linux 将尝试与它进行交互(即请求外设的所有权、打开时钟、开始写入寄存器等)。
但是、如果将某些设置为 status = disabled、Linux 将不会尝试与它进行交互。 换言之、Linux 将完全忽略它。 Linux 可以 不会 主动检查外设是否已启用、然后在外设正在运行时关闭外设。
2) PRU 子系统和 R5F 子系统不同
如果您从 Linux 控制 PRU 子系统、则应在 Linux 器件树中启用 PRU 子系统。 如果您通过 R5F 内核控制 PRU 子系统、则应在 Linux 器件树中禁用 PRU 子系统。 这适用于由 R5内核或 M4内核使用的所有外设。
有关内核之间外设分配的更多信息、请参阅
AM64x Academy > Multiple module > Peripherals
https://dev.ti.com/tirex/explore/node?node=A__AaRdsK4zRjlChfPY2v0AhQ__AM64-ACADEMY__WI1KRXP__LATEST
有关 PRU 开发入门的更多信息、请参阅"PRU 入门实验室"
https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_01_10_04/exports/docs/common/PRU-ICSS/PRU-Getting-Started-Labs.html
有关通过 R5F 内核控制 PRU 工程的更多信息、请参阅 PRU 入门指南(RTOS)
https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am243x
请注意、AM243x 和 AM64x 具有完全相同的 R5F 和 PRU 子系统、因此所有 AM243x 代码也可以在 AM64x 上运行。
此致、
Nick