如何在linux中找到GPIO的定义,特别是对于beaglebone black?

时间:2014-07-13 08:07:26

标签: linux embedded embedded-linux beagleboneblack

我只是想知道Linux 3.8中是否有头文件来描述硬件板的GPIO端口,特别是对于Beaglebone黑板。 Beaglebone Black板有四组GPIO,每组有32个GPIO。所以我想GPIO中的GROUP X(0 <= X <= 3) PORT Y (0 <= Y <= 31)会映射到GPIO端口(32 * X + Y)。例如,GPIO12中的GROUP1GPIO44,当我使用Linux GPIO API时,我们可以使用44。因此,当我使用像“gpio_is_valid”这样的API时,我可以将参数设置为44.因为我想为某些设备编写Linux驱动程序,所以我真的需要知道它是如何定义的。我不关心如何在用户空间中控制GPIO

非常感谢。

2 个答案:

答案 0 :(得分:1)

BeagleBone项目的网站有一个名为BlackLib的库,为C ++提供GPIO,ADC和PWM API。对于C.

也是this

答案 1 :(得分:1)

内核从引导环境中选择默认引脚muxing。要在不使用用户空间的情况下控制引脚行为,可以修补引导环境。首先加载X-Loader(MLO),它加载U-Boot环境(u-boot.bin),它加载内核。

请记住,我对此的了解是从2011年开始的,因此在以后的版本中可能有更好的方法来实现这一点...另外,我使用的是Gumstix Overo(类似于BeagleBoard)。看起来BeagleBone Black使用与原始BeagleBoard相同的引导环境,所以我试着回答你的问题(我引用了BeagleBoard使用的文件,这对于BeagleBoard可能有所不同)黑色)。

为了控制设备首次上电时的GPIO行为,您可以修补X-Loader以定义所需的引脚多路复用:

x-loader:
board/omap3530beagle/omap3530beagle.c
include/asm/arch-omap3/mux.h # review to match pin assignments to the technical manual

X-Loader(MLO)将加载U-Boot环境。为了控制内核最初处理引脚复用的方式,以及在加载内核(IIRC)期间,您可以修补U-Boot以定义所需的引脚复用:

u-boot:
board/ti/beagle/beagle.h
arch/arm/include/asm/arch-omap3/mux.h # review to match pin assignments to the technical manual

启动后,您可以在用户空间中切换或读取GPIO:)。

此外,使用devmem2可以在Overo上的用户空间中更改引脚多路复用,因此除非您需要控制默认行为(例如保持引脚低电平以保持设备断电),否则将更容易使用像devmem2这样的东西。