我花了整整12个小时的时间来尝试让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的问题,但仍然不能解决我无法启用设备覆盖树的主要问题。
我没有忘记这个问题。我最终在另一个论坛的帮助下以不同的方式自己解决了这个问题。有时间的时候,我将写详细的解决方案,以便遇到相同问题的任何人都可以解决。