BeagleBone Black:使用设备树覆盖不会更改Pinmuxing

时间:2016-03-02 09:46:35

标签: beagleboneblack device-tree

我试图通过设备树覆盖来改变我的pinmuxing模式,但它似乎对特定寄存器没有影响。我尝试了以下教程:

http://www.valvers.com/embedded-linux/beaglebone-black/step04-gpio/

默认情况:

我使用的是Linux Debian,图片日期:2016-01-24 我的内核有版本:4.1.15-ti-rt-r43

“cat /sys/kernel/debug/pinctrl/44e10800.pinmux/Pins” 为所需的引脚提供以下输出:

引脚84(44e10950.0)00000037 pinctrl-single 引脚85(44e10954.0)00000037 pinctrl-single 引脚86(44e10958.0)00000037 pinctrl-single 引脚87(44e1095c.0)00000037 pinctrl-single

如您所见,所有模式都是模式7,我需要模式0(SPI0)。

没有其他人使用该引脚(在每个引脚上几乎相同=> GPIO UNCLAIMED):

引脚84(44e10950.0):ocp:P9_22_pinmux(GPIO UNCLAIMED)函数pinmux_P9_22_default_pin group pinmux_P9_22_default_pin

命令:“cat / sys / devices / platform / bone_capemgr / slots”给出以下内容:

0:PF ---- -1  1:PF ---- -1  2:PF ---- -1  3:PF ---- -1  4:P-O-L- 0覆盖板名称,00A0,覆盖制造,cape-universaln

这是我的设备树:

/ DTS-V1 /; /插件/;

/ {     compatible =“ti,beaglebone”,“ti,beaglebone-black”;

part-number = "SPI_SLAVE_PINMUX";
version = "00A0";

fragment@0 {
    target = <&am33xx_pinmux>;
    __overlay__ {
        spi_slave: pinmux_spi_slave {
            pinctrl-single,pins = <
                        0x150 0x30  // SPI0_CS0  Mode 0, SPI
                        0x154 0x30  // SPI0_D1   Mode 0, SPI
                        0x158 0x10  // SPI0_D0   Mode 0, SPI
                        0x15c 0x10  // SPI0_SCLK Mode 0, SPI
                        >;
        };
    };
};

fragment@1 {
    target = <&spi0>;
    __overlay__ {  
        #address-cells = <1>;
        #size.cells = <0>;

        compatible = "bone-pinmux-helper";
        pinctrl-names = "default";
        pinctrl-0 = <&spi_slave>;
        status = "okay";            
    };
};

};

然后我编译我的dts文件并将编译后的文件复制到/ lib / Firmware。

dtc -O dtb -o SPI_SLAVE_PINMUX-00A0.dtbo -b O - @SPI_SLAVE_PINMUX-00A0.dts

之后我通过以下命令安装驱动程序:

echo SPI_SLAVE_PINMUX&gt; / SYS /设备/平台/ bone_capemgr /槽

加载叠加层:

root @beaglebone:〜#cat / sys / devices / platform / bone_capemgr / slots  0:PF ---- -1  1:PF ---- -1  2:PF ---- -1  3:PF ---- -1  4:P-O-L- 0覆盖板名,00A0,覆盖制造,cape-universaln  7:P-O-L-1覆盖板名称,00A0,覆盖制造,SPI_SLAVE_PINMUX

如您所见,我正在以root身份工作。

现在问题:如果我执行以下命令:

cat /sys/kernel/debug/pinctrl/44e10800.pinmux/Pins

我可以看到,没有任何改变。

引脚84(44e10950.0)00000037 pinctrl-single 引脚85(44e10954.0)00000037 pinctrl-single 引脚86(44e10958.0)00000037 pinctrl-single 引脚87(44e1095c.0)00000037 pinctrl-single

我想知道这个设备树如何适合我的设备驱动程序(字符设备驱动程序,访问MCSPI内存来操作寄存器),但那是一个不同的故事......;)

如果有人可以帮助我,我将非常感激...

非常感谢提前

弗洛

0 个答案:

没有答案