Android 如何访问gpiochipX

Android 如何访问gpiochipX,android,linux-kernel,embedded,gpio,sysfs,Android,Linux Kernel,Embedded,Gpio,Sysfs,我们正在基于Android的微控制器上编程,我们希望能够访问主板上的gpio引脚。翻阅文档,我们想要使用的12个gpio引脚是#0-100之间的各种引脚,但是,没有可用于它的gpio芯片。例如,gpiochip576可用,但我们不需要gpios 576+及以上版本。我们希望获得0-100的访问权限。有没有一种简单的方法可以访问它们?我们发现这篇文章:,如果我们是对的,似乎可以访问gpiochip,但需要大量的c代码,在我们的例子中,由于它是android,我们需要重新编译内核和系统映像并将其闪存

我们正在基于Android的微控制器上编程,我们希望能够访问主板上的gpio引脚。翻阅文档,我们想要使用的12个gpio引脚是#0-100之间的各种引脚,但是,没有可用于它的gpio芯片。例如,gpiochip576可用,但我们不需要gpios 576+及以上版本。我们希望获得0-100的访问权限。有没有一种简单的方法可以访问它们?我们发现这篇文章:,如果我们是对的,似乎可以访问gpiochip,但需要大量的c代码,在我们的例子中,由于它是android,我们需要重新编译内核和系统映像并将其闪存到板上。有没有更简单的方法可以通过sysfs(类似于echo“14”>/sys/class/gpio/export)或其他方式获得访问权限?或者是我们修改内核和重新编译的唯一选择。谢谢大家!

只是想为任何未来的用户更新此问题:

我们正在寻找gpio0-120,并假设我们需要gpio0,gpio0的gpion=120,但实际上,应用了一个偏移量,这意味着gpios在576+范围内。只需要给每个管脚添加一个常量


正如SamProtsenko在带问题的评论中所述,任何需要的修改都需要在设备树文件中完成,然后重新编译并上传到您的设备。SamProtsenko很好地解释了需要做什么,所以请检查上面的评论。否则,您需要进一步了解设备树的工作原理。

您说有GPIO引脚可用,但没有您要查找的数字。您是否查阅了控制器的Linux文档以进行pin码映射?不幸的是,LInux驱动程序使用的数字和控制器数据表中的数字可能不完全相同。您的板是什么(或者至少,您的SoC是什么)?您使用的内核版本是什么(以及从何处获得的)?它是使用设备树还是板文件?无论哪种方式,您都能在设备树/板文件中看到gpio芯片设备定义吗?你能看到你的gpio芯片驱动被正确加载吗?如果一切就绪--请检查:您应该能够通过sysfs导出您的GPIO pin,然后使用它(通过将出现的相应目录下的文件)。@AndreasBombe是的,例如,板上的物理GPIO 21对应于GPIO 86或通过sysfs接口使用它。问题是,在我们实际使用gpio 86之前,我们需要一个允许我们访问的gpiochip(例如,可能是gpiochip72,gpion=36。这些是我正在使用的随机数)。我们有物理gpio映射到虚拟gpio,但我们无法通过sysfs访问虚拟gpio。我们有办法打开它吗?@SamProtsenko关于什么是SoC,“扩展头”是一个可以接受的答案吗?内核似乎是“LK”或Little Kerner,它基于android引导加载程序,并且似乎也在使用设备树。我个人在以前的微控制器上从来没有遇到过这个问题(raspberry pi和ifc6410都有现成的必要GPIO芯片),所以我有点不确定从哪里开始。目前,通过sysfs、gpiochip576、gpiochip608。。。等都已加载,但我们需要gpiochip0、gpiochip32,因此我们无法访问所需的gpio引脚。@SamProtsenko您是否有任何资源建议我阅读,或告诉我从何处开始解决此问题?而且,由于这是一个基于android的操作系统,我们是否需要继续重新编译操作系统映像并用它重新刷新主板?如果我是正确的,在Linux上,我们只需要重新编译必要的文件。