我正在使用Linux内核3.17.4,Fedora 21 ARM的beaglebone black。如果我考虑内核引脚8(gpio0 [8]或P8.35)...
$ sudo grep 'pin 8 ' /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins
收益pin 8 (44e10820.0): (MUX UNCLAIMED) (GPIO UNCLAIMED)
$ sudo grep 'pin 8 ' /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
收益pin 8 (44e10820.0) 00000027 pinctrl-single
据我所知,引脚8在模式7下通过下拉电阻启用接收。
然后$ echo 8 | sudo tee -a /sys/class/gpio/export
创建/sys/class/gpio/gpio8
。 $ echo out | sudo tee -a /sys/class/gpio/gpio8/direction
将其设置为out。 $ echo 1 | sudo tee -a /sys/class/gpio/gpio8/value
应将引脚设置为高电平。
我的观察是,虽然value
文件读数很高,但gpio引脚的电压很低。
如果我将“8”更改为“60”,我可以控制引脚,但文件系统开始变得很时髦,大概是因为该引脚被用于某些东西。值得注意的是,引脚显示:pin 60 (44e108f0.0) 00000030 pinctrl-single
。
所以我的问题是 - 为什么引脚8(gpio0 [8]或P8.35)不工作?
答案 0 :(得分:1)
我错误地认为内核引脚计算为32 * N + M
gpioN[M]
。内核引脚由44e10的偏移量决定。
pin 8
偏移820
,对应gpio0[22]
和p8.19
。如果导出22并检查p8.19,则会生成所需的结果。
有趣的是,关于这一事实的大部分博客文档都是不正确的。我不会链接到这些网站,以防止它们扩散。另一方面,这篇文章完全准确,帮助我理解发生了什么:
http://www.valvers.com/embedded-linux/beaglebone-black/step04-gpio/