在 Beaglebone Black 启动期间未加载 SPI0 的设备树

Device Tree for SPI0 not loading during Beaglebone Black Boots up

我目前在 BBB 上使用 Debian GNU/Linux 7.9(wheezy)[内核版本 3.8.13-bone70]。一切正常,直到我重新启动 BBB。在重新启动之前,我执行以下操作以验证 SPI0 是否已启用。

root@beaglebone:/sys/devices/bone_capemgr.9# echo ADAFRUIT-SPI0 > slots
root@beaglebone:/sys/devices/bone_capemgr.9# cat slots
0: 54:PF--- 
1: 55:PF--- 
2: 56:PF--- 
3: 57:PF--- 
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
**8: ff:P-O-L Override Board Name,00A0,Override Manuf,ADAFRUIT-SPI0**

第8槽加载SPI 0

root@beaglebone:~# ls -al /dev/spidev*
crw-rw---T 1 root spi 153, 0 Feb 14 05:53 /dev/spidev1.0

显示的是spidev1.0,没问题

root@beaglebone:~#  cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups
group: spi0_pins_s0
pin 84 (44e10950),
pin 85 (44e10954),
pin 86 (44e10958),

它显示了 SPI 引脚。

root@beaglebone:~# sudo nano /boot/uEnv.txt 

我打开 uEnv.txt 文件并添加了这一行,这样 SPI0 DT 就会在系统启动期间加载

optargs=capemgr.enable_partno=ADAFRUIT-SPI0

问题:为什么我的SPI0 DT在系统启动时没有加载?,重启后我做了上面提到的前三个步骤来检查,但发现重启后DT加载失败。为什么会这样?

经过一段时间的研究,我得到了解决方案。遗憾的是,在 uEnv.txt 中输入 "optargs=capemgr.enable_partno=ADAFRUIT-SPI0" 不会在系统启动期间加载设备树。

  1. 我找到的一个解决方案是在 /etc/rc.local 中包含行 "echo ADAFRUIT-SPI0 > /sys/devices/bone_capemgr.9/slots",如前所述 here!。
  2. 另一个解决方案也很简单,只需在 /etc/default/capemgr 文件中包含行 "CAPE=ADAFRUIT-SP0" 即可。然后重启,一切正常。