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-AM62X:PROCESSOR-SDK-AM62X

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1499618/processor-sdk-am62x-processor-sdk-am62x

器件型号:PROCESSOR-SDK-AM62X

工具/软件:

您好、

我正在尝试在运行内核 6.12.13-ti 的 AM62x 电路板上测试 Linux <->M4零复制示例。 我从以下位置下载代码:

https://git.ti.com/cgit/rpmsg/rpmsg_char_zerocopy/

M4代码加载良好、并到达等待 Linux 连接的点。 但是在 Linux 方面、当我运行命令时:

./rpmsg_char_zerocopy -r 9 -e linux、cma

我得到这个错误:

----------------------------------------

./rpmsg_char_zerocopy  -r 9 -e linux、cma

已创建 Endpt 设备 rpmsg-char-9-394、fd = 4端口= 1025
使用 rproc id 9上的 rpmsg 设备交换1条消息...

无法打开/dev/remoteproc9:-2

----------------------------------------

函数 dmabuf_heap_alloc ()在 M4中传递 rproc_id=9、但我的/dev 只有:

很糟糕 1根根248、0 Dec 31 18:00 /dev/remoteproc0
很糟糕 1根根248、1 Dec 31 18:00 /dev/remoteproc1
很糟糕 1根根248、2 Dec 31 18:00 /dev/remoteproc2

我应该在/dev 下有 remoteproc9吗? 如果是、谁创建了该设备文件、在什么时候?

谢谢。

Ayman

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

    您好、Ayman、

    有一个错误

    感谢您发送编修。 这绝对是一个错误。

    rproc_id 是在 https://git.ti.com/cgit/rpmsg/ti-rpmsg-char/tree/include/rproc_id.h 上定义的固定值 

    remoteprocX 不是一个固定值。 该参数在引导时分配、因此它可以更改每个引导周期、不应用于标识内核。

    您仍然可以在 Linux 内核6.6上运行该示例。 我还没有机会在 Linux 内核6.12上进行验证

    您使用的命令不正确。 如果要从 CMA 堆进行分配、请不要使用-e 参数。 请  在自述文件中搜索"示例"部分:
    https://git.ti.com/cgit/rpmsg/rpmsg_char_zerocopy/tree/linux/README.md

    请帮我一个忙、并根据"CMA-reserved dma-heap"示例重试。 它可能仍然失败、但我知道、您确定为代码提供了预期的输入。

    如果我可以让您使用在 Linux 器件树文件中分配的分割项进行测试、这应该会告诉我们 Linux 内核6.12是否可以与 Linux 内核6.6相同而无需任何更改。 我确信、我在2024年验证了内存分配功能、例如 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1448394/sk-am64b-rpmsg-between-a53-and-r5-performance-update-cont/5554798#5554798

    在接下来的几天里、我将尝试留出一些时间来修复该错误并验证 Linux 内核6.12、但您的输入可以帮助我更快地完成该操作。

    此致、

    Nick

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

    您好、Nick、

    感谢您查看此内容。 首先、我尝试 按照您的请求运行"cma-reserved dma-heap"的示例。 但是、我收到了以下错误:

    -----

    root@etn-cbc9000:/lib/firmware # rpmsg-zcp -r 9 -s 128
    已创建 Endpt 设备 rpmsg-char-9-1167、FD = 4端口= 1025
    使用 rproc id 9上的 rpmsg 设备交换1条消息...

    无法打开/dev/dma_heap/reserved:-2
    测试状态:失败

    -----

    由于未传递"-e"、dmaheap_open()为 heap_name 传递了"reserved"(dma_heap_reserved) 、因此它找不到 /dev/dma_heap/reserved.

    我的器件树文件"k3-am62x-sk-common.dtsi"在"reserved-memory"节点下具有以下子节点:


    保留内存{
            #address-cells =<2>;
            #size-cells =<2>;
            范围;

            ...

             /*全局 CMA 区域*/
             Linux、CMA{
                  compatible ="shared-dma-pool";
                  可重复使用;
                  Size =<0x00 0x8000000>;
                  linux、cma-default;
             };

    启动时、我在/dev/dma_heap 下有这个器件文件

    很糟糕 1根根253、1 Dec 31 18:00 /dev/dma_heap/linux、CMA

    这就是为什么我使用显式"-e linux,cma"选项的原因。 因此、在我看来、代码  在/dev/dma_heap 下查找 dma_heap_reserved 与器件树文件中"linux、cma"节点名称的内容之间存在不一致。 当我传递"-e linux,cma"时,dmaheap_open()成功,但在我的原始帖子中得到了错误。  我认为这不是6.6与6.12问题、但如果您想要我尝试一些东西、请告诉我。

    再次感谢您的帮助。

    -艾曼

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

    您好、Ayman、

    好的。 因此、CMA 分配选项似乎已损坏(正如我在查看源代码时所期望的那样)。

    现在、请使用 Linux 器件树中定义的存储器分割文件、而不是 CMA。 我看不到任何从 Linux 内核6.6到内核6.12的巨大变化,所以希望这能让你在我工作的时候,继续在你的开发中取得进展

    这周我没时间了。  我的计划是在下周初完成 RPMsg 基准测试、然后在周中左右转向 zerocopy 示例。 请诚实地告诉我、如果您在周三之前没有听到任何消息、请重新办理入住手续。

    此致、

    Nick

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

    您好、Ayman、

    办理入住手续。 我有针对 zerocopy 示例提交的 bug 报告、但我和开发团队都没有时间对此进行处理。

    现在、您是否能够通过记忆分割取得进展? 在短期内、我还需要什么?

    此致、

    Nick

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

    您好、Nick、

    是的,我能够让它与记忆分割工作. 我仍然想使用 CMA、因为默认情况下它已分配到设备树中。 因此、当您将其固定时、请告诉我。 感谢您的跟进。

    -艾曼

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

    您好、Ayman、

    我懂了。 我们尚未解决此问题、但它位于 AM62x SDK 11.1之前的待办事项列表中(计划在7月/8月时间范围内)。

    此致、
    Nick