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:
我已经尝试让 RPMsg 在我的现有 R5F 项目中工作、这样它就可以与 Linux 通信。 因此、我使用演示项目 ipc_rpmsg_echo_linux_am64x-evm_r5fs0-0_freertos_ti-arm-clang 中的代码、但该代码不起作用(即、它回显垃圾数据)、而演示项目工作。 即使我去掉了自己项目的所有其他部分、从而使代码与演示代码相同、也不起作用。
我开始在链接器脚本和 example.syscfg 中查找错误、然后我发现了 MPU 区域配置。 问题可能出现在这里吗? 我不确定合适的设置应该是什么。 我尝试在链接器脚本的末尾为这三个区域中的每一个区域添加一个 CONFIG_MPU_REGIONx (
USER_SHM_MEM:origin = 0xA5800000、length = 0x80
LOG_SHM_MEM:origin = 0xA5800000 + 0x80、length = 0x00004000 - 0x80
RTOS_NORTOS_IPC_SHM_MEM:origin = 0xA5000000、length = 0x00800000
)并将其设置为"Non-cached"和"No code execution allowed"(不允许执行代码)。 但它似乎仍然不起作用。
我在寻找正确的位置吗? 如果需要、合适的设置是什么?
非常感谢。
此致
莱昂·里戈尼
您好、Leon、
存储器的这些部分不用于 Linux <--> R5F RPMsg 通信。
从何处开始查找?
请检查 Linux devicetree 文件中的存储器分配是否与 linker.cmd 文件中的存储器分配相匹配。 您还可以将项目中的 linker.cmd 文件和 example.syscfg 文件与演示代码项目中的这些文件进行比较、以查看是否有任何差异。
可能有用的资源
您如何初始化 R5F 内核? (即 Linux remoteproc 驱动程序? SBL?) 如果您正在使用 Remoteproc 初始化 R5F 内核、固件加载成功、对吧?
如果固件未正确加载、请查看 AM64x 学院多核模块页面"远程内核上的应用开发"
https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__AeMVTHckwFDmFoNkRHpRPw__AM64-ACADEMY__WI1KRXP__LATEST
另一项需要检查的是、您仍在将完整的1MB 存储器分配给 RPMsg VRNG 在 DDR 中的存储位置。 如需更多信息、请参阅
AM64x Academy、多核模块页面"如何分配存储器"
https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__AbwqjEswy38Z6lZWYQC-5g__AM64-ACADEMY__WI1KRXP__LATEST
有关如何在运行时调试远程内核的指针、请查看" 远程内核上的应用开发"页上的"如何在 Linux 运行时调试远程内核"部分。 例如、您可以使用 print 语句将远程内核接收到的数据写入跟踪日志、然后从 Linux 终端检查跟踪日志。 识别代码中的错误位置。
此致、
尼克