误解beaglebone GPIO pinmux

时间:2014-12-15 05:10:48

标签: fedora beagleboneblack gpio

我正在使用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)不工作?

1 个答案:

答案 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/