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

时间:2014-08-19 16:28:07

标签: overlay device beagleboneblack

我拼命想让我的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 我的#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 =<

现在它有效,但我不开心。我仍然会欣赏常规的覆盖文件。

1 个答案:

答案 0 :(得分:3)

好的,我得到了它的工作:

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

  2. 访问网站:http://kilobaser.com/blog/2014-07-28-beaglebone-black-devicetreeoverlay-generator#dtogenerator并让网站为我的案例P8 46-39中的各种引脚创建dts文件。对每个引脚使用单个DTS(DTBO)文件有效,但需要加载8 dtbos =>我把所有这些都移到了一个DTS文件中。

  3. 就是这样:

    /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文件中加载它......无论您喜欢什么。