我已经花了12个小时试图让the beaglebone上的PRU工作。到目前为止,我似乎完全停留在使设备覆盖工作以及启用remoteproc。我试图将我在互联网上找到的所有信息拼凑在一起,但它已经过时或者非常分散。我似乎无法找到一个当前的工作示例,或者如前所述,我按下了一堵墙。
我已经更新了beaglebone上的内核,然后是多个“更新”,“升级”和“dist-upgrades”。据我所知,我正在使用最新版本的所有内容。
// 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" > /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发行版中。如果有人需要澄清或者我忘了提及某些东西,我会乐意提供。
就像快速更新一样。我在另一个论坛上得到了关于我无法遵循上述elinux示例的回复。事实证明我所要做的就是用git pull
来更新我的仓库并且我正在寻找的线路出现了。这解决了我关于remote_proc的问题,但它仍然无法解决我无法启用设备覆盖树的主要问题。
我没有忘记这个问题。我最终通过另一个论坛的帮助以不同的方式解决问题。当我有时间的时候,我会写出我的详细解决方案,这样任何有相同问题的人都可以解决它。
答案 0 :(得分:0)
不幸的是,我对细节的了解不多,因为在所有信息新鲜时,我没有将这个答案发布回去。这是我几年前建立的存储库,其中包括用于启动和停止PRU的脚本,以及用于设置设备树的内容以及一些用于从PRU驱动ESC的示例代码。在我精通编程之前,这是很好的,所以有点粗糙。
在研究链接以防万一时,我发现了一些有用的链接:
有关PRU的官方elinux页面链接:http://elinux.org/EBC_Exercise_30_PRU_via_remoteproc_and_RPMsg
链接到TI PRU支持包:https://git.ti.com/pru-software-support-package
这是我用来设置它们的脚本:
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
我希望所有这些都对您有所帮助。如果我能找到有关解决此问题的手写笔记,则将其张贴。