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.

[参考译文] Linux:未检测到 AM335x RPMsg 器件

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/672762/linux-am335x-rpmsg-devices-not-detected

工具/软件:Linux

大家好、我叫 Jaime、

很抱歉、我的英语说得很好。 我正在尝试为我的 bbb 项目使用 rpmsg。 我遵循以下手册:

http://processors.wiki.ti.com/index.php/RPMsg_Quick_Start_Guide

 我安装了 de remote proc 驱动程序,并在内核检测到它时安装。  此时一切正常、但当我尝试在"/dev/"中列出时  

rpmsg_30和 rpmsg_31的元素从未显示、我无法继续。

这是 DEV 元素(如果一切正常)的捕获。

问题出在我的内核中是什么? 我不知道问题是什么。

很抱歉、我再次使用英语。

谢谢

Jaime

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

    我还很难看到 rpmsg 字符设备。 在/dev/dev 中看不到"PRU"设备

    我使用的是4.9.59-ga75d8e9305、我认为它是最新的 TI SDK 版本。 我还尝试在 Yocto->poky 下使用4.14版本

    当我转到运行示例 rpmsg_client_sample.ko 时、遵循上述链接的 PRU 实验室和 RPMsg 快速入门指南后不会输出任何内容。

    我们非常感谢您的任何帮助或其他调试提示。

    谢谢!

    -Mike T
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jaime 和 Mike、您好!
    我会尽力为您提供帮助。 如果太杂乱、Mike 可以开始新的主题并参考这个主题。

    Jaime、
    您的内核是什么?您从哪里获取它? 确保您使用的是 TI 提供的内核、因为 Remoteproc 功能尚未实现主线内核。

    Mike、
    1) 1)与 Jaime 相同。 确保这是 TI 提供的内核(4.9.59-ga75d8e9305来自 TI、只要您没有向其添加任何补丁)
    2) 2)您使用的是什么板?
    3) 3)我已经验证了快速入门指南示例在 BeagleBone Black 上使用 Linux 处理器 SDK 4.2中的预构建映像工作。 您能使用预构建的映像吗?

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

    嗨、Nick 和 Jaime、

    因此、我相信我发现了我所犯的错误。  找到一个非常类似的线程:https://e2e.ti.com/support/arm/sitara_arm/f/791/p/493697/1785463#pi316653=2

    我最初使用的是 PRU 软件支持包 v4.0.2。  在示例 PRU_RPMsg_Echo _Interrupt1中有一个非常细微的区别、即 PRU 软件支持版本似乎在使用邮箱、而 Linux SDK v4.02.00.09使用系统事件。  除了将 SDK PRU_RPMsg_Echo _Interrupt1.out 放在/lib/firmware 文件夹中、回传至 remoteproc 2之外、我没有更改系统中的任何其他内容、我开始看到示例程序中预期的100条'hello world'响应消息。

    现在,我的/dev/文件夹 中仍然没有任何 rpmsg_PRU*,但我认为在使用系统事件时,不再需要此操作。

    供参考、我使用 BeagleBone Black 进行此测试、并一直在 TI Linux SDK 与采用 meta-ti 层的 Yocto/poky 之间来回跳动。  让我真正感到满意的一点是、实验室和 http://processors.wiki.ti.com/index.php/RPMsg_Quick_Start_Guide 已经过时、在这方面已经过时了。  他们提到需要/dev/rpmsg-pru 设备,而对于旧版本的 Linux 内核而言。

    无论如何、希望这对我有所帮助、如果我能进一步了解的话、我会更新。

    谢谢、

    -Mike T

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

    您是否升级到了 Processor SDK 4.2:TI-processor-SDK-Linux-.../example-applications/pru-icss-...中的 PRU 软件支持包5.1.0? (或 git.ti.com/.../)

    实际上,大约一个月前,我使用 PRU 软件支持包5.1.0和 Processor SDK 4.2更新了 RPMsg 快速入门指南,因此在使用系统事件时仍然使用/dev/rpmsg-pru 器件。 同样、请告诉我、在使用 SDK 4.2中预构建的映像浏览快速入门指南时、您是否看到任何不同。

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

    Nick、

    我只看到当前版本为 v04.02 http://www.ti.com/tool/PROCESSOR-SDK-AM335X 、SDK 的4.2中没有任何内容。  PRU 软件支持包中包含一条注释、说明不再维护该软件包、而是使用 Processor SDK、因为该软件包包含在该软件包中。

    这是我正在使用的版本 v04.02。  如果我没有任何/dev/rpmsg_pru 设备,但收到100条'Hello World'消息发送到 PRU 并从 ARM 端接收回来,这意味着什么?

    是否有需要加载的内核模块的确切列表?  我确实在某个位置看到了 rpmsg_char 模块、但我没有在最新的 SDK 中加载或构建该模块。

    -Mike T

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

    尊敬的 Mike:

    处理器 SDK 04.02和处理器 SDK 4.2是相同的。 首次推出 PRU 软件支持包时、用户必须在 TI.com 上单独下载该包、然后将其添加到处理器 SDK 中。 如今、它会自动包含在处理器 SDK 中、网址为(例如) ti-processor-sdk-linux-am335x-evm-04.02.00.09/example-applications/PRU-ICSS-5.1.0。

    因此、如果您在处理器 SDK 4.2中使用 PRU 软件支持包、则 PRU 软件支持包版本为5.1.0。

    就模块而言:只要您1)构建支持 RPMsg 的 Linux 内核并根据 RPMsg 快速入门指南构建模块,2)根据 快速入门指南将模块安装到文件系统中,您就应该能够看到/dev/rpmsg_pru。 我认为但不确定仅使用 ti-processor-sdk.../bin/create-sdcard.sh 也足以看到 rpmsg_PRU。

    如果您收到"Hello World"消息、但无法看到 PRU 模块、我会感到很惊讶。 只有在 PRU 通道已建立时、PRU 才应回显、如 PRU_RPMsg_Echo _Interrupt0/main.c 中所示:

    /*
    *使用名称'rpmsg-PRU'将探测在
    linux-x.y.z/drivers/rpmsg/rpmsg_PRU.c
    中找到的 rpmsg_PRU 驱动程序*#define
    CHAN_NAME"rpmsg-PRU"
    #define CHAN_DESC"Channel 30"#define
    CHAN_port30 

    需要注意的是、我认为实验5期望 CHAN_NAME 为"rpmsg-client-sample "、而快速入门指南则期望 CHAN_NAME 为"rpmsg-PRU"。 我不确定这是否会给您带来问题。

    此致、  

    Nick

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

    Nick、

    在 SDK 04.02 = 4.2...上正常  我不确定、因为您没有使用这2位数字...我认为您可能意味着4.20。  是的、我使用的是5.1.0、因为我有04.02.00.09 TI SDK。

    我使用了 create.sdlcard.sh,但更喜欢 TFTP 引导和 NFS 装载我的 rootfs,以便更快地进行开发和调试;-)

    我收到了100条'Hello World'消息、并在 dmesg 中和 UART 的控制台/shell 上看到了这种情况。  这就是为什么我认为您不需要/dev/rpmsg-pru

    在5.1.0的 PRU_RPMsg_Echo _Interrupt1的 main.c 文件中、显示如下:

    /*
    *使用名称'rpmsg-client-sample 将探测 RPMsg 样本驱动程序
    *在 linux-x.y.z/samples/rpmsg/rpmsg_client_sample.c 中找到
    *
    *使用名称'rpmsg-PRU'将探测找到的 rpmsg_PRU 驱动程序
    *位于 linux-x.y.z/drivers/rpmsg/rpmsg_pru.c
    *
    #define CHAN_NAME "rpmsg-client-sample"
    //#define CHAN_NAME "rpmsg-PRU"

    #define CHAN_DESC "通道31"
    #define CHAN_PORT 31

    如您所见、rpmsg-PRU 通道名称已注释掉。  然后,如果查看在上述注释位置找到的 rpmsg-client-sample.c 文件,则 rpmsg_sample_probe 不会创建或查找任何/dev/rpmsg-pru 设备。  这些仅在通道名称为"rpmsg-PRU"时使用。  因此、根据您使用的是哪个 CHAN_NAME、会调用不同的探测器函数。  再深入一点、rpmsg_device 结构似乎使用不同的方式通过端点进行通信、我在 Linux-x.y.z/drivers/rpmsg_core 和其他文件中从未看到任何建议需要或使用设备文件 rpmsg-PRU*的内容

    原始海报所述的最初问题是,我们应该看到/dev/rpmsg-pru 设备文件,我将此与示例程序和 rpmsg-client-sample 内核模块不起作用相关联。  但是,我的问题不是/dev/rpmsg-pru 文件丢失,而是 PRU 软件支持包的早期版本(并集成到 AM335X SDK 中)将系统事件用于59范围内的邮箱。  但是、较新的示例使用系统事件16-19将事件映射到通道。  此外,代码片段表示使用了 rpmsg-client-sample.ko 而不是 rpmsg-PRU。

    无论如何,希望这一点变得更加清楚,或许也能看到其他问题。

    谢谢!

    -Mike T

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

    我之前讲错了:
    访问为 RPMsg 通信创建的 PRU 通道有多种方法。 有一个内核空间驱动程序、用于 PRU 动手实验的实验5的第1部分。 正确的是、此驱动程序不使用/dev/rpmsg-pru.

    /dev/rpmsg-pru 允许用户空间字符驱动程序与 PRU 通信,如实验5的第2部分和 RPMsg 快速入门指南中所述。 因此,如果您不按照这些页面中列出的步骤操作,您将看不到/dev/rpmsg-pru。

    ------
    很高兴系统事件/邮箱被清除。 原始海报似乎消失了、因此我将此主题标记为"已解决"。

    此致、
    Nick