当前位置:首页 > 电源 > 松哥电源
[导读]哈喽,我是老吴,我来继续分享我的学习心得啦。gpio和pinctrl子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。本文目录:一、gpio 与 pinctrl二、内核里如何引用 gpio三、gpio 子系统框架四、应用层如...

哈喽,我是老吴,我来继续分享我的学习心得啦。

gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。

本文目录:

一、gpio 与 pinctrl
二、内核里如何引用 gpio
三、gpio 子系统框架
四、应用层如何访问 gpio

一、gpio 与 pinctrl

本文主要关注 gpio 子系统,但是老吴认为必要先说明一下 pinctrl 子系统和 gpio 子系统的之间关系。

pinctrl 的作用:

  • 引脚复用,例如某个引脚即可用作为普通的gpio,也可以作为UART的TX;
  • 引脚配置,一般包括上下拉、驱动能力等;

点击查看大图
gpio 的作用:

  • 作为输入功能时,支持读引脚值;
  • 作为输出功能时,支持输出高低电平;
  • 部分 gpio 还负责接收中断;
gpio 的使用依赖于 pinctrl:

点击查看大图
本文的关注点是 gpio driver --> gpio subsystem core -> gpio consumer 这一路径,读者如果想更深入地了解 pinctrl 子系统,可以参考内核文档:Documentation/driver-api/pinctl.rst。

gpio 子系统内核文档:

Documentation/driver-api/gpio:

文档简介
index.rst文档目录和源码清单
intro.rstgpio 简介
driver.rst描述如何编写 gpio controller driver
consumer.rst描述 gpio consumer 如何使用 gpio
board.rst描述设备如何申请 gpio
drivers-on-gpio.rst列举一些使用了gpio子系统的常见驱动,例如 leds-gpio.c、gpio_keys.c 等
legacy.rst描述 legacy gpio 接口
注:本文基于 Linux-4.19。

二、内核里如何引用 gpio

2 个步骤:

1) 设备树里添加 gpio mappings

示例:

foo_device {
compatible = "packt,gpio-descriptor-sample";
led-gpios = <
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭