我正在尝试为嵌入式系统创建设备树,并希望向用户空间公开一些GPIO。这些不是也不应该被内核驱动程序使用。例如,有一个焊接到电路板的USB设备由用户空间驱动程序控制。它有一个GPIO重置线,用户空间库需要访问它。
我希望在sysfs的某个地方通过名称公开这些内容,以便用户空间可以访问/sys/class/gpio/usbreset
,而不需要知道神奇的gpio编号,并且需要专门" export"它。我已经尝试将其设置为GPIO hog,它初始化GPIO,但其名称不会出现在sysfs中,并且当gpio被占用时无法导出。我知道我可以选择另一种内核驱动程序类型,例如LED,但它不是LED,这对我来说似乎不太干净。
在sysfs中导出命名GPIO的正确方法是什么?
答案 0 :(得分:0)
我建议编写一个简单的内核模块来询问GPIO,然后导出一个链接,该链接可以被命名,因此适合您的请求。
https://www.kernel.org/doc/Documentation/gpio/sysfs.txt
来自上面的链接:
导出GPIO后,gpiod_export_link()允许创建 从sysfs中其他位置到GPIO sysfs节点的符号链接。司机可以 使用它在sysfs中提供自己设备下的接口 描述性名称
答案 1 :(得分:0)
您可以在devtree中使用“ gpio-leds”类型。确保内核中包含CONFIG_LEDS_GPIO。如Documentation/devicetree/bindings/leds/leds-gpio.txt
中所述设置您的devtree。我知道,它说“ LED”,但驱动程序只是扭动GPIO,而不关心连接到它的内容。
示例devtree条目(从文档中复制):
contact
这些条目将通过sysfs中的名称进行访问,您可以从那里的用户空间对其进行操作。