
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をターゲットにしていることに注意してください。
これは最も完全な答えではありませんが、これがあなたを正しい方向に導くことを願っています。