首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeviceTree中的命名GPIO

DeviceTree中的命名GPIO
EN

Stack Overflow用户
提问于 2016-04-23 04:53:16
回答 2查看 4K关注 0票数 12

我正在尝试为嵌入式系统创建一个设备树,并希望向用户空间公开一些GPIO。这些不是也不应该被内核驱动程序使用。例如,有一个USB设备焊接到由用户空间驱动程序控制的电路板上。它有一条GPIO复位线,用户空间库需要访问它。

我希望它们在sysfs中的某个地方按名称公开,这样用户空间就可以访问/sys/class/gpio/usbreset,而不是需要知道神奇的gpio编号并需要专门“导出”它。我曾尝试将其设置为GPIO hog,这会初始化GPIO,但它的名称不会出现在sysfs中,并且gpio在被占用时无法导出。我知道我可以选择另一种内核驱动程序类型,比如LED,但它不是LED,这对我来说似乎不是很干净。

在sysfs中导出命名GPIO的正确方式是什么?

EN

回答 2

Stack Overflow用户

发布于 2019-03-11 22:10:57

您可以在devtree中使用“gpio-led”类型。确保你的内核中有CONFIG_LEDS_GPIO。按照Documentation/devicetree/bindings/leds/leds-gpio.txt中所述设置您的开发树。我知道,它说的是"LED",但司机只是摆动GPIO,并不关心是什么连接到它。

示例devtree条目(从文档复制):

代码语言:javascript
复制
run-control {
        compatible = "gpio-leds";
        red {
                gpios = <&mpc8572 6 GPIO_ACTIVE_HIGH>;
                default-state = "off";
        };
        green {
                gpios = <&mpc8572 7 GPIO_ACTIVE_HIGH>;
                default-state = "on";
        };
};

这些条目将在sysfs中通过名称访问,您可以在那里的用户空间中操作它们。

票数 2
EN

Stack Overflow用户

发布于 2018-01-21 21:18:10

我建议编写一个简单的内核模块来请求GPIO,然后导出一个链接,该链接可以命名,因此适合您的请求。

https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

从上面的链接:

导出GPIO后,gpiod_export_link()允许从sysfs中的其他位置创建指向GPIO sysfs节点的符号链接。驱动程序可以使用它在sysfs中自己的设备下提供具有描述性名称的接口

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36803143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档