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

如何在linux中找到GPIO的定义,特别是对于beaglebone black?,linux,embedded,embedded-linux,beagleboneblack,Linux,Embedded,Embedded Linux,Beagleboneblack,我只是想知道Linux 3.8中是否有一个头文件来描述硬件板的GPIO端口,尤其是Beaglebone黑板。Beaglebone黑板中有四组GPIO,每组32个GPIO。所以我猜在组X中aGPIO(0)P> > Bea'Beject项目的网站有一个库,它提供了一个C++的GPIO、ADC和PWM API,对于C.< P>,内核从引导环境中拾取默认的PIMUN,为了控制PIN行为而不使用用户空间,可以修补引导环境。首先加载,加载U-Boot环境(U-Boot.bin),加载内核 请记住,我对这方面

我只是想知道Linux 3.8中是否有一个头文件来描述硬件板的
GPIO
端口,尤其是Beaglebone黑板。Beaglebone黑板中有四组
GPIO
,每组32个GPIO。所以我猜在
组X中a
GPIO
(0)P> > Bea'Beject项目的网站有一个库,它提供了一个C++的GPIO、ADC和PWM API,对于C.

< P>,内核从引导环境中拾取默认的PIMUN,为了控制PIN行为而不使用用户空间,可以修补引导环境。首先加载,加载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
u-boot:
board/ti/beagle/beagle.h
arch/arm/include/asm/arch-omap3/mux.h # review to match pin assignments to the technical manual
然后,X-Loader(MLO)将加载U-Boot环境。为了控制内核最初如何处理pin多路复用,以及在加载内核(IIRC)期间,您可以修补U-Boot以定义所需的pin多路复用:

x-loader:
board/omap3530beagle/omap3530beagle.c
include/asm/arch-omap3/mux.h # review to match pin assignments to the technical manual
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上的用户空间中更改pin muxing,因此,除非您需要控制默认行为(例如保持pin较低以保持设备断电),否则使用devmem2之类的工具将更容易。

您需要对此进行研究。我认为术语“pin mux”这是您需要继续研究的内容。这发生在不同的级别上,例如:xload、uboot,然后是内核中的后续部分。如果您需要在电源应用于电路板时定义行为,那么在xloader中定义muxing是必要的;在引导内核时,在uboot中定义muxing是必要的——这就是ass使用xload和uboot(与原始Beaglebone一样)使用Beaglebone,可能不是这样。您正在寻找一个库-仅headee文件是不够的。我认为3.8可能是在它移动到devicetree格式进行硬件描述之前的最后一个版本。根据我对几个Atmel SOC的经验,Linux内核源代码中通常没有包含您所寻求的信息的头文件。我可以找到#在arch/arm/mach xxx/include/mach/中的SoC外设头文件中定义每个GPIO控制器的基址。但是每个控制器的管脚数通常在板文件或设备树中定义。对于Linux用户代码,我必须从裸机软件包手动导入SoC头文件以获取头文件有GPIO注册名和位域的es。感谢上面的所有人!!谢谢,我将试一试。