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.

[参考译文] PROCESSOR-SDK-AM64X:在 A53上从 R5日志记录到 Linux

Guru**** 2350610 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1502376/processor-sdk-am64x-log-from-r5-to-linux-on-a53

器件型号:PROCESSOR-SDK-AM64X

工具/软件:

大家好!

我们在 R5内核上有一个 FreeRTOS 应用、以及在 A53内核上运行的 Linux。 目前、来自 R5内核的日志由 A53通过 UART 独立写入。

对于生产设备、我无法访问这些日志、想知道是否有方法将 R5日志消息写入 Linux 端并将它们与那里的日志(这些日志会存储以供以后使用)合并。

我看到了一些有关共享内存日志记录的信息、但仅适用于 FREERTOS/NoRTOS 情况。 也许有人可以向我介绍有关 FreeRTOS 到 Linux 日志记录的示例/信息(如果有)?

谢谢、此致

Philip Kees

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Philip、

    当您说"日志"时、您是否正在查找可保存诊断输出的文本文件? 或者、您是否正在寻找路由到 UART 端口的输出?

    从 Linux 访问跟踪日志

    您可以从/sys/kernel/debug/remoteproc/remoteprocX/trace0.访问远程内核(即非 Linux 内核)的跟踪日志 如下所示:

    // let's see which remoteprocX is associated with which core
    // this can change each boot, so make sure to check "name" each time
    root@am64xx-evm:~# head /sys/class/remoteproc/remoteproc*/name
    ==> /sys/class/remoteproc/remoteproc0/name <==
    78000000.r5f
    
    ==> /sys/class/remoteproc/remoteproc1/name <==
    78200000.r5f
    
    ==> /sys/class/remoteproc/remoteproc10/name <==
    ...
    ==> /sys/class/remoteproc/remoteproc9/name <==
    30034000.pru
    
    // let's check the trace logs for R5F0_0
    // I expect to see the IPC RPMsg Echo demo
    root@am64xx-evm:~# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
    [r5f0-0]     0.000431s : [IPC RPMSG ECHO] Jul  8 2024 10:25:09
    [r5f0-0]     0.105724s : [IPC RPMSG ECHO] Remote Core waiting for messages at end point 13 ... !!!
    [r5f0-0]     0.105746s : [IPC RPMSG ECHO] Remote Core waiting for messages at end point 14 ... !!!
    [r5f0-0]     0.296727s : [IPC RPMSG ECHO] Message exchange started with RTOS cores !!!
    [r5f0-0]     5.045893s : [IPC RPMSG ECHO] All echoed messages received by main core from 4 remote cores !!!
    [r5f0-0]     5.045908s : [IPC RPMSG ECHO] Messages sent to each core = 100000
    [r5f0-0]     5.045919s : [IPC RPMSG ECHO] Number of remote cores = 4
    [r5f0-0]     5.045930s : [IPC RPMSG ECHO] Total execution time = 4749153 usecs
    [r5f0-0]     5.045945s : [IPC RPMSG ECHO] One way message latency = 5936 nsec
    

    您可以在 AM64x Academy 中找到有关启用存储器日志的更多信息:
    多核>远程内核上的应用开发>将 Linux IPC 添加到远程内核工程中
    https://dev.ti.com/tirex/explore/node?node=A__Ac4gvmV7H7iX5x.qB.hWZw__AM64-ACADEMY__WI1KRXP__LATEST

    您可以在 AM64x Academy 中找到有关更改跟踪日志大小的更多信息:
    多核>远程核心上的应用程序开发> 添加空资源表
    https://dev.ti.com/tirex/explore/node?node=A__AbHsVQIi8pUVEQOLKmXydQ__AM64-ACADEMY__WI1KRXP__LATEST

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nick、  

    很抱歉我迟来的答复、我们还有一些其他问题需要注意。 我查看了 Remoteproc 跟踪日志、显然可以检查内核初始化期间是否存在任何问题。 对于这种用例、它肯定会帮助进行调试。

    对于我想连续记录的情况下,它不工作,因为似乎没有好的方法来处理 trace0文件的 ringbuffer 性质。 在 AM64X EVM 上、我们将其写入 UART、但这不能用于调试生产器件

    我们将通过 RpMsg 从 R5到 Linux 的方式来研究日志的编写,因为我们已经在我们的应用程序中使用了它,并且可以不用太多的努力来实现。

    谢谢、此致
    Philip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Philip、

    你的观察对我来说是有意义的。 如果时序和延迟不是重要问题、并且您只需要记录软件正在执行的操作、则 RPMsg 是 Linux 和非 Linux 内核之间最简单的"即插即用"IPC 实现。

    如果您有后续问题、请随时在此处回复(或为新主题创建新主题)。

    此致、

    Nick