嵌入式linux中pinctrl子系统驱动用法分析

     Linux系统是一个庞大而完善的系统,尤其是驱动框架,像GPIO这样最基本的驱动不可能采用原始的裸机驱动开发方式,否则就相当于买了一辆车,结果每天推着车去上班。Linux内核提供了pinctrl和gpio子系统用于GPIO驱动,学习借助pinctrl子系统简化GPIO驱动开发。

第一:pinctrl子系统简介

      大家好,对于大多数的32位SOC而言,引脚的设置基本都是这两方面:

       1、设置PIN的复用功能。

        2、如果PIN复用为GPIO功能,设置GPIO相关属性。

       大多数SOC的pin都是支持复用的,比如RK3568的GPIO3_4即可作为普通的GPIO使用,也可以作为PWM1_M0引脚、GPU_AVS引脚等, 此外还需要配置pin的电气特性,比如上/下拉、驱动能力等等。传统的配置 pin的方式就是直接操作相应的寄存器,但是这种配置方式比较繁琐、而且容易出问题(比如pin功能冲突)。pinctrl子系统就是为了解决这个问题而引入的,pinctrl子系统主要工作内容如下:

       1、获取设备树中pin信息。

       2、根据获取的pin信息来设置pin的复用功能。

       3、根据获取到的pin信息来设置pin的电气特性,如驱动能力。

      对于我们使用者来说,只需要在设备树里面设置好某个pin的相关属性即可,其他的初始化工作均有pinctrl子系统来完成,pinctrl子系统源码目录为drivers/pinctrl。</

相关推荐

  1. 嵌入linuxpinctrl子系统驱动用法分析

    2024-06-16 00:44:02       7 阅读
  2. 嵌入linuxGPIO和Pinctrl子系统分享

    2024-06-16 00:44:02       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 00:44:02       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 00:44:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 00:44:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 00:44:02       18 阅读

热门阅读

  1. 光流法大全

    2024-06-16 00:44:02       9 阅读
  2. 设计模式之服务定位模式

    2024-06-16 00:44:02       7 阅读
  3. SpringCloud框架的复习(面试)

    2024-06-16 00:44:02       7 阅读
  4. ORDER BY FIELD

    2024-06-16 00:44:02       4 阅读
  5. C语言题目:排序问题1

    2024-06-16 00:44:02       6 阅读
  6. 0-1 背包问题(动态规划 查询背包元素)

    2024-06-16 00:44:02       3 阅读
  7. 安装nginx的几种方式

    2024-06-16 00:44:02       4 阅读
  8. 游戏心理学Day15

    2024-06-16 00:44:02       6 阅读
  9. mysql大表ddl注意

    2024-06-16 00:44:02       4 阅读