当前位置: 首页> 文旅> 旅游 > 软件开发的本质_上海工程公司排名_如何推广网上国网_seo科技网

软件开发的本质_上海工程公司排名_如何推广网上国网_seo科技网

时间:2025/7/9 1:54:24来源:https://blog.csdn.net/weixin_49529507/article/details/143275543 浏览次数:0次
软件开发的本质_上海工程公司排名_如何推广网上国网_seo科技网

        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 函数。

关键字:软件开发的本质_上海工程公司排名_如何推广网上国网_seo科技网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: