在 beaglebone black 上禁用 spidev

在 beaglebone black 上禁用 spidev

我想使用 PRU 在 beaglebone black 上运行 McSPI 抛出寄存器编程。因此,我需要根据技术参考手册 AM335x 禁用 spidev(该 spi 模块的)来操作 mcspi 的寄存器。换句话说,我想从spidev控制spi模块并使用寄存器级编程。如何禁用 spidev 模块?

另外,在我的 BBB 中的以下命令中,显示两个 spi 模块的 spidev 均处于活动状态:

root@beaglebone:~# ls /dev/sp*
/dev/spidev1.0  /dev/spidev1.1  /dev/spidev2.0  /dev/spidev2.1

答案1

根据您使用的 GNU/Linux 发行版和内核版本,答案会有所不同,但通常您必须使用设备树或设备树覆盖。

在那里,您需要禁用spi1spi2将引脚标记为由 PRU 控制。

对于 Linux 4.4.xa 设备树看起来像这样:

/dts-v1/;

#include "am33xx.dtsi"
#include "am335x-bone-common.dtsi"
#include "am33xx-pruss-rproc.dtsi"

&am33xx_pinmux {
    pru_cape_bone_pins: pru_cape_bone_pins {
        pinctrl-single,pins = <
            BONE_P9_22 ( PIN_INPUT_PULLUP | MUX_MODE0 ) // SCLK
            BONE_P9_21 ( PIN_INPUT_PULLUP | MUX_MODE0 ) // MISO
            BONE_P9_18 ( PIN_OUTPUT_PULLUP | MUX_MODE0 ) // MOSI
            BONE_P9_17 ( PIN_OUTPUT_PULLUP | MUX_MODE0 ) // CS0
        >;
    };
};

&pruss {
    pinctrl-names = "default";
    pinctrl-0 = <&pru_cape_bone_pins>;
};

&spi0 {
    status = "disabled";
};

&spi1 {
    status = "disabled";
};

然而:不要按原样使用此代码!

我不确定包含的.dtsi文件、确切的引脚或部分/设备名称,对于其他内核版本也可能需要一些小的修改。

这只是我基于更完整的设备树的一个示例,该设备树启用了 spidev 和两个 I2C 总线,设置了一些 PRU 引脚等 - 可用这里。请记住,它的目标是运行内核 4.4.x 的 Debian Stretch 的 BeagleBone Green Wireless。

虽然这不是最完整的答案,但我希望它能引导您走向正确的方向。

相关内容