【问题标题】:Beaglebone Black Enabling PRU IssuesBeaglebone Black 启用 PRU 问题
【发布时间】:2016-11-08 12:08:42
【问题描述】:

我花了整整 12 个小时试图让 Beaglebone 上的 PRU 工作。到目前为止,我似乎完全停留在让设备覆盖工作以及启用 remoteproc 上。我试图将我在互联网上找到的所有信息拼凑起来,但它要么已经过时,要么非常分散。我似乎找不到当前的工作示例,或者在按照前面所说的进行操作时碰壁了。

设置/环境

我已经更新了 beaglebone 上的内核,随后进行了多次“更新”、“升级”和“dist-upgrades”。据我所知,我使用的是最新版本。

  • 比格骨黑
  • Debian 8.6
  • 内核 4.4.30-ti-r64
  • dtc 1.4.1

示例代码

设备覆盖文件 [PRU-GPIO-BLINK.dts]:

// Setup file for basic PRU GPIO Blinking LED

/dts-v1/;
/plugin/;

/ {
        compatible = "ti,beaglebone", "ti,beaglebone-black";

        part-number = "PRU-GPIO-BLINK";
        version = "00A0";

        // This overlay uses the following resources
        exclusive-use = "P8.11";

        fragment@0 {
                target = <&am33xx_pinmux>;
                __overlay__ {

                        gpio_pins: pinmux_gpio_pins {
                                pinctrl-single,pins = <
                                        0x034   0x06
                                >;
                        };
                };
        };

        fragment@1 {
                target = <&pruss>;
                __overlay__ {
                        status = "okay";
                        pinctrl-names = "default";
                        pinctrl-0 = <&gpio_pins>;
                };
        };
};

上面的代码编译使用:
root@beaglebone:/lib/firmware# dtc -I dts -O dtb -o /lib/firmware/PRU-GPIO-BLINK-00A0.dtbo /lib/firmware/PRU-GPIO-BLINK.dts
当我使用以下命令将其添加到 bone_capemgr 时: root@beaglebone:/lib/firmware# echo "PRU-GPIO-BLINK" &gt; /sys/devices/platform/bone_capemgr/slots
我最终得到File or directory cannot be found 错误或File Exists 错误。我已经像很多人推荐的那样在 uEnvt.txt 中禁用了 HDMI,但仍然没有运气。

除此之外,我还尝试了以下练习:http://elinux.org/EBC_Exercise_30_PRU_via_remoteproc_and_RPMsg
我完成了大部分练习,直到我启用了 remoteproc 部分。当我转到“取消注释”#include "am33xx-pruss-rproc.dtsi" 时,我似乎在文件中的任何地方都找不到它。当我简单地将该行添加到文件并尝试调用make 时,编译器会抱怨它找不到文件并导致构建失败。

如果有人好奇,这里是我运行cat /sys/devices/platform/bone_capemgr/slots时的输出

 0: PF----  -1
 1: PF----  -1
 2: PF----  -1
 3: PF----  -1
 4: P-O-L-   0 Override Board Name,00A0,Override Manuf,univ-emmc

问题

对于为什么我的设备覆盖无法正常工作并且我无法在 elinux 上进行练习,是否有人有任何建议?我几乎被困在这一点上,大多数在线示例都参考了过时的路径或方法。有没有我丢失的包裹?根据我的阅读,似乎所有的编译器和加载器现在都内置在新的 beaglebone 发行版中。如果有人需要澄清或我忘记提及某些内容,我将很乐意提供。

更新(2016 年 11 月 11 日):

就像一个快速更新。我在另一个论坛上收到了关于我无法遵循上面提到的 elinux 示例的回复。结果我所要做的就是用git pull 更新我的repo,然后我正在寻找的行出现了。这解决了我关于 remote_proc 的问题,但它仍然不能解决我无法启用设备覆盖树的主要问题。

更新(2017 年 3 月 22 日)

我没有忘记这个问题。我最终在另一个论坛的帮助下以不同的方式自己解决了这个问题。当我有时间时,我会写下我的详细解决方案,以便任何有相同问题的人都可以解决它。

【问题讨论】:

  • 您好,我很想了解您是如何解决问题的。我目前正在尝试在 PRU 上运行一些代码,但遇到了各种问题,例如无法禁用 HDMI、无法写入插槽文件等。
  • 很遗憾您没有跟进此事。我相信很多人会使用你的解决方案。
  • 我真的很抱歉我完全忘记了这一点,当时我为一堂课解决了这个问题。我现在正在挖掘我的旧笔记,试图弄清楚我几年前做了什么。我正在添加一个链接作为指向我的代码仓库的答案,该代码仓库应该设置 PRU 以驱动 ESC。我不记得它处于什么状态,但我会尝试清理它。再次向任何发现此问题并希望得到答案的人表示歉意。

标签: c linux debian real-time beagleboneblack


【解决方案1】:

不幸的是,我没有太多细节的方式,因为当所有信息都是新鲜的时,我没有回复这个答案。这是我多年前设置的存储库,其中包括用于启动和停止 PRU 的脚本以及设置设备树的内容以及一些用于从 PRU 驱动 ESC 的示例代码。这是在我在编程方面做得更好之前,所以有点粗糙。

Beaglebone PRU ESC Controller

以下是我在研究时发现有用的一些链接,以防我的链接失效:

这是我用来设置它们的脚本:

export SLOTS=/sys/devices/platform/bone_capemgr

config-pin P9_28 pruout
config-pin P9_29 pruout
config-pin P9_30 pruout
config-pin P9_31 pruout

以下是我在 bash 脚本中启动 PRU 的命令

#!/bin/bash

echo "4a334000.pru0" > /sys/bus/platform/drivers/pru-rproc/bind
echo "4a338000.pru1" > /sys/bus/platform/drivers/pru-rproc/bind

我会这样阻止他们

#!/bin/bash

echo "4a334000.pru0" > /sys/bus/platform/drivers/pru-rproc/unbind
echo "4a338000.pru1" > /sys/bus/platform/drivers/pru-rproc/unbind

我希望所有这些都能在某种程度上有所帮助。如果我能找到关于解决这个问题的手写笔记,我会发布它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2016-03-22
    • 2014-11-16
    • 2016-06-23
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多