我正在使用指令在我的 beaglebone black(Angstrom 发行版)上启用 spi here.
我现在需要将 BB-SPI1-01 添加到 /sys/devices/bone_capemgr.*/slots
以启用驱动程序。
发出命令 echo BB-SPI1-01 >/sys/devices/bone_capemgr.*/slots
或 echo BB-SPI1-01 >>/sys/devices/bone_capemgr.*/slots
,然而,产生错误 echo: Write error: file exists
尝试在 nano 行中进行编辑也失败了。我能够打开文件并进行编辑,但是当我保存它时,它给我 Error writing slots: no such file or directory
我已将文件的权限设置为 777。
有人知道为什么我不能编辑文件吗?如果不可能,是否有解决方法?
最佳答案
我在尝试将 ILI9340C 显示内容移植到 Beaglebone Black 时也遇到过这种困境。 /dev/devices/bone_capemgr.*
的工作方式是,你回显到它的 slots
目录的任何东西都会去搜索该设备的设备树覆盖,一个新的Linux Kernel 3.0 及更高版本中的东西。对于任何不知道(我花了很长时间才找到这个)的人来说,设备树基本上是一个驱动程序,告诉 Linux 如何处理设备,但它们不包含任何代码,而只是一个配置文件,就其本身而言,告诉 Linux 将什么放在哪里以便与设备对话,以及期望得到什么返回。也就是说,BB-SPIx-01
是一个已编译的设备树文件,/lib/firmware/
中的一个.dts 指向 SPI 设备,并告诉 spidev
用它做什么。
BB-SPI1-01
恰好已经连接到 HDMI 端口用于某些音频(我认为),因此,除非您完全禁用 HDMI,SPI1
总是被 HDMI 成帧器捆绑。这解释了为什么将 BB-SPI1-01
写入 /sys/devices/bone_capemgr.*/slots
失败。这是一个特殊的文件,当您写入它时,内核进程会读取您的输入并继续尝试在其他地方创建一个“设备”文件,并且由于 BB-SPI1-01
已经启用,该文件已经存在,因此处理这些事情的内核进程返回一个错误并通过任何启动它的进程将其通过管道传输,在这种情况下,您,用户,键入 echo BB-SPI1-01 >/sys/devices/bone_capemgr.*/slots
.
好的一面是,SPI0
未被使用。因此,为了使用它,您所要做的就是在用户空间启用它。要做到这一点,(你已经想通了,但对其他人来说)在命令行输入 echo BB-SPI0-01 >/sys/devices/bone_capemgr.*/slots
,然后只是为了确保 spidev 正在运行,以 root 身份键入 modprobe spidev
。现在,要验证,请键入 ls/dev | grep spi
看看会发生什么。 /dev/spidevX.Y
是您的 SPI 总线,对我来说就是 /dev/spidev1.0
。
很抱歉,说得太啰嗦了,但到目前为止,我正在将我的研究总结到一个点上,希望它能对某人有所帮助。
如有任何问题,欢迎随时提问!
关于linux - 比格骨Linux : issues appending a line to a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17707987/