Beaglebone Blackでspidevを無効にする

Beaglebone Blackでspidevを無効にする

PRUを使用してBeaglebone BlackでMcSPIスローレジスタプログラミングを実行したいと思います。したがって、mcspiのレジスタを操作するには、テクニカルリファレンスマニュアルAM335xに従ってspidev(対応するspiモジュールの)を無効にする必要があります。つまり、spidevでspiモジュールを制御し、レジスタレベルのプログラミングを使用したいと思います。 spidevモジュールを無効にする方法は?

また、私のBBBの次のコマンドは、spidevが両方のspiモジュールに対して有効になっていることを示しています。

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

答え1

答えは、使用しているGNU / Linuxディストリビューションとカーネルのバージョンによって異なりますが、通常はデバイスツリーまたはデバイスツリーオーバーレイを使用する必要があります。

ここでは、PRUによって制御されるピンを無効にしてspi1表示する必要があります。spi2

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と2つのI2Cバスイネーブル、いくつかのPRUピン設定などを備えた、より完全なデバイスツリーに基づいた例です。ここ。カーネル4.4.xを実行しているDebian StretchのBeagleBone Green Wirelessをターゲットにしていることに注意してください。

これは最も完全な答えではありませんが、これがあなたを正しい方向に導くことを願っています。

関連情報