gpt4 book ai didi

overlay - 用于快速 IO 的 Beagle Bone Black PRU 设备覆盖不起作用

转载 作者:行者123 更新时间:2023-12-01 23:53:21 27 4
gpt4 key购买 nike

我拼命想让我的 BBB 上的 PRU 正常工作。我所说的工作是指我想将引脚 P8 39-46 (GPIO2[6-13]) 用作由 PRU 控制的快速输出。

我在 SD 上安装了 BBB 的 debian(2 周前,应该是最新的)。

然后我开始阅读以下文章:http://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone/blog/2013/05/22/bbb--working-with-the-pru-icssprussv2

这样做,我让 PRU 与 LED 示例以及引脚 P8[12] 一起工作。

现在我尝试让其他引脚工作。我只是对原始的 am335x-boneblack.dtb 做了一点改动,重新开始。我刚刚激活了 PRU。我没有更改 LED 心跳以及引脚 P8.12。

然后我在 uEnv.txt 中禁用了 HDMI我的“插槽”现在看起来像这样:

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

这是模式 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-单,引脚= <

现在可以了,但是我不开心。我仍然希望有一个常规的覆盖文件。

最佳答案

好的,我开始工作了:

  1. 只需在 am335x-boneblack.dtb 中启用 pruss(转换为 dts。按照原帖中提到的文章进行更改)

  2. 访问网站:http://kilobaser.com/blog/2014-07-28-beaglebone-black-devicetreeoverlay-generator#dtogenerator并让网站为我的案例 P8 46-39 中的各种引脚创建 dts 文件。对每个单独的 pin 使用单个 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 文件中加载它...任何您喜欢的。

关于overlay - 用于快速 IO 的 Beagle Bone Black PRU 设备覆盖不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com