我只是想知道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
中的GROUP1
为GPIO44
,当我使用Linux GPIO
API时,我们可以使用44。因此,当我使用像“gpio_is_valid”这样的API时,我可以将参数设置为44.因为我想为某些设备编写Linux驱动程序,所以我真的需要知道它是如何定义的。我不关心如何在用户空间中控制GPIO
。
非常感谢。
答案 0 :(得分:1)
答案 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这样的东西。