我拼命想让我的BBB工作的PRU。通过工作,我的意思是我想使用引脚P8 39-46(GPIO2 [6-13])作为由PRU控制的快速输出。
我在SD上为BBB安装了debian(2周前,应该是最新的)。
这样做,我让PRU使用LED示例以及引脚P8 [12]。
现在我尝试让其他引脚工作。我开始只是对原来的am335x-boneblack.dtb进行了一些改动。我刚刚启动了PRU。 我没有更改LED心跳以及引脚P8.12。
然后我在uEnv.txt中禁用了HDMI 我的#34;插槽"现在看起来像这样:
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
我偶然发现了这篇文章:https://groups.google.com/forum/#!topic/beagleboard/JRG36bOURfk
我想要的是什么,所以我拿了dts(第二个),编译它,将它复制到/ lib / firmware并加载它。 "槽"表示叠加已加载。
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-PRU-IO
BB-PRU-IO就是我。
dmesg说:
... part_number 'BB-PRU-IO', version 'N/A'
... slot #7: generic override
... bone: Using override eeprom data at slot 7
... slot #7: 'Override Board Name,00A0,Override Manuf,BB-PRU-IO'
... slot #7: Requesting part number/version based 'BB-PRU-IO-00A0.dtbo
... slot #7: Requesting firmware 'BB-PRU-IO-00A0.dtbo' for board-name 'Override Board Name', version '00A0'
... slot #7: dtbo 'BB-PRU-IO-00A0.dtbo' loaded; converting to live tree
... slot #7: #2 overlays
... slot #7: Applied #2 overlays.
我会说好看。
问题是pinmux没有接缝给人留下深刻印象:
猫针| grep 8a4 =>引脚41(44e108a4)0000002f pinctrl-single
这是MODE 7(GPIO输出)。不是我想要的。对于我打算切换到PRU模式5的所有引脚。
现在我尝试为/ lib / firmware中的PRU 01,02提供交付的dtbo
PRU-01 .dtbo似乎是一个合适的例子。只有Pin不同(P9.27)。 我加载它并更改了PRU代码示例。 引脚未显示预期结果: 引脚105(44e109a4)00000027 pinctrl-single 当我从第一个关节运行修改过的测试程序时,我的osci显示出一条平线。
我尝试了 PRU-02 .dtbo。 至少针脚显示了预期的结果: 引脚105(44e109a4)00000025 pinctrl-single 当我开始我的小测试程序时,我得到一个"总线错误"
dmesg有几行。我要说的重要的是: [119.258978]警告:在arch / arm / mach-omap2 / omap_hwmod.c:2096 _enable + 0x101 / 0x174() [119.259004] omap_hwmod:pruss:启用状态只能从初始化,空闲或禁用状态进入 [119.259027]链接到的模块:g_multi libcomposite btusb bluetooth rfkill uio_pruss mt7601Usta(O) ....几条跟踪消息 [119.272382] pru-rproc 4a300000.prurproc:#8 PRU中断已注册 [119.272445] pru-rproc 4a300000.prurproc:无法读取事件数组 [119.287545] pru-rproc:4a300000.prurproc的探测失败,错误-22
PRU-02不仅仅是PRU-01(我不明白)。它似乎对我不起作用。
现在我有点无助了。 有什么想法?
编辑: 我做了你不该做的事。我更改了am335x-boneblack.dtb文件中的pinmux设置。我刚补充说: 0xA0 0x05 0xA4 0x05 0xA8 0x05 0xAC 0x05 0xB0 0x05 0xB4 0x05 0xB8 0x05 0xBC 0x05
到pinmux_userled_pins { pinctrl-single,pins =<
现在它有效,但我不开心。我仍然会欣赏常规的覆盖文件。
答案 0 :(得分:3)
好的,我得到了它的工作:
只需启用am335x-boneblack.dtb中的pruss(转换为dts。按原帖中提到的文章中所述进行更改)
访问网站:http://kilobaser.com/blog/2014-07-28-beaglebone-black-devicetreeoverlay-generator#dtogenerator并让网站为我的案例P8 46-39中的各种引脚创建dts文件。对每个引脚使用单个DTS(DTBO)文件有效,但需要加载8 dtbos =>我把所有这些都移到了一个DTS文件中。
就是这样:
/dts-v1/;
/plugin/;
/{
compatible = "ti,beaglebone", "ti,beaglebone-black";
part_number = "BS_PINMODE_PRU_OUT";
exclusive-use =
"P8.46",
"P8.45",
"P8.44",
"P8.43",
"P8.42",
"P8.41",
"P8.40",
"P8.39",
"pr1_pru1_pru_r30_6",
"pr1_pru_pru1_r30_7",
"pr1_pru1_pru_r30_4",
"pr1_pru1_pru_r30_5",
"pr1_pru1_pru_r30_2",
"pr1_pru1_pru_r30_3",
"pr1_pru1_pru_r30_0",
"pr1_pru1_pru_r30_1";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
bs_pinmode_pru_out: pinmux_bs_pinmode_pru_out {
pinctrl-single,pins = <0x0a4 0x5 0x0a0 0x5 0x0ac 0x5 0x0a8 0x5 0x0b4 0x5 0x0b0 0x5 0x0bc 0x5 0x0b8 0x5>;
};
};
};
fragment@1 {
target = <&ocp>;
__overlay__ {
bs_pinmode_pru_out_pinmux {
compatible = "bone-pinmux-helper";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&bs_pinmode_pru_out>;
};
};
};
};
我将文件命名为bspm_pru_out-00A0.dts,将其编译为bspm_pru_out-00A0.dtbo并将其放在/ lib / firmware中。
您可以通过/boot/uEnv.txt或通过echo ...在rc.local文件中加载它......无论您喜欢什么。