Beagleboneblack

在 beaglebone black 上禁用 spidev

  • October 19, 2018

我想使用 PRU 在 beaglebone black 上執行 McSPI throw register 程式。因此,我需要根據技術參考手冊 AM335x 禁用(該 spi 模組的)spidev 來操作 mcspi 的寄存器。換句話說,我想從 spidev 控制 spi 模組並使用寄存器級程式。我如何禁用spidev模組?

同樣在我的 BBB 中的命令下方,顯示兩個 spi 模組的 spidev 都處於活動狀態:

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

答案會根據您使用的 GNU/Linux 發行版和核心版本而有所不同,但通常您必須使用設備樹或設備樹覆蓋。

在那裡,您需要禁用spi1並將spi2引腳標記為由 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 引腳等 - 可在此處獲得。請記住,它針對的是執行 Debian Stretch 核心 4.4.x 的 BeagleBone Green Wireless。

雖然這不是最完整的答案,但我希望它能引導您朝著正確的方向前進。

引用自:https://unix.stackexchange.com/questions/476558