当前位置: 首页 > news >正文

linux驱动-引入pinctrl子系统

        pinctrl(pin controller)可以管理系统中所有的 pin,也可以设置管教的复用关系
电器属性(内部上拉,或者下拉)等。

        在一个SOC芯片上面,大多数GPIO管脚都是功能复用的,在不同的场景下可以设置为不同的功能模式,所以 pinctrl在内核钟使用的频率非常高。

         打开rk3568.dtsi,这个文件都是些一下通用的的东西,所以pinctrl这个节点是由厂家的bsp工程师写的。pinctrl也符合设备模型结构,所以,也可以从设备和驱动,总线。

        pinctrl节点,就相当于设备模型里面的设备这个概念,通过设备树学校和平台总线学习,这些节点如果返回要求,都会被转换成设备

         打开开发板的内核源码树我的是rk356x-lubancat-rk series.dts这个,这部分代码往pinctrl节点中添加了很多东西,添加的这些东西,就是引脚的描述。

        比如下面图片的圈起来的地方,意思是第三组、c5的管脚设置成了gpio功能,并且电气属性是上拉,这部分就是驱动工程师要写的,根据这些工作要求,设置引脚功能。所以会有就可以了,理论不懂问题不大

         

        pinctrl节点设备树,只是描述,具体如何配置得看驱动代码。如何确定 pinctd节点驱动的位置呢?
        通过设备树我们知道节点中compatible属性值为:"rockchip,rk3568-pinctrl",所以我们在内核源码目录下 grep 查找rockchip,rk3568-pinctrl可以找到 pinctrl 的驱动文件为drivers/pinctrl/pinctrl-rockchip.c 这部分的工作是厂家的 BSP 攻城狮来编写

        然后打开这个驱动文件,拉到最后面,看驱动入口的位置,圈者哪里,这里不是用module_init(),而是用这个postcore_initcall(rockchip_pinctrl_drv_register);,目的是要控制驱动加载的顺序,为什么要控制,因为这样加载会更快一些控制加载顺序,因为有时候加载驱动A,需要先加载b,加载完b了才能加在a.....,一个子系统的复杂度是很高的,要被拆成很多模块的。

        再看驱动入口,使用平台总线因为之前学到的,linux所有的设备都要挂载到总线上面,pinctrl也不例外,这样驱动、设备、总线都在知道了,

         设备和驱动匹配成功之后就要调用probe函数了,所以现在要找到probe。下面这些只是一部分

比如说我现在的板块上有一个led灯,现在要把连接到led灯的管家设置成gpio管脚。

抛出疑问:
pinctrl驱区动是在加载 pinctrl,驱动时设置的引脚,还是在加载模块时设置的引脚复用呢?还是
说会设置成俩次呢?
猜想:
猜想 1.是在加载模块时设置的引脚复用。
猜想 2.加载 pinctrl,驱动的时候也会设置,因为也会调用 probe 函数。


http://www.mrgr.cn/news/59893.html

相关文章:

  • Java【多线程】定时器
  • 辣椒病害检测与分类数据集(猫脸码客 第226期 )
  • 搭建 mongodb 副本集,很详细
  • [专有网络VPC]创建和管理网络ACL
  • java动态代理介绍
  • 基于websocket简易封装一个全局消息通知组件
  • 离散化步骤
  • 群控系统服务端开发模式-应用开发-业务架构逻辑开发BaseAPI
  • 企业信息化与数字化 - 信息化是基础,数字化是未来
  • 动态规划-子序列问题——1218.最长定差子序列
  • VS Code 代码提示 重叠 显示不全
  • 小白投资理财 - 看懂 K 线形态下
  • C++的相关习题(2)
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25
  • 多eSIM配置文件(MEP)
  • 网络搜索引擎Shodan(4)
  • C++线程池手写实现
  • 【Linux】MySQL主从复制
  • 宝安区石岩上排停车场(月卡350元)
  • 使用Python实现深度学习模型:智能极端天气事件预测
  • git合并上传小技巧
  • flutter vscode app 的输出在哪里
  • 新160个crackme - 084-slayer_crackme1
  • shutdown abort关库,真的可能起不来吗?
  • 一文彻底搞定MySQL中的JSON类型,效率飞起。
  • 软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答(代码规范与生态管理)