热点
精准点评纠偏,逻辑框架助力创业高效闭环,reasoning_content:我们要求以技术支持工程师的口吻,写一个与技术、科技相关,关于[精准点评纠偏,逻辑框架助力,创业构建高效闭环]的标题需要简短精炼,30字以内直接输出标题nn可以想到:精准点评纠偏,逻辑框架助力,创业构建高效闭环关键词:精准、纠偏、逻辑框架、高效闭环作为技术支持工程师,可以强调技术工具、系统优化、逻辑梳理等例如:精准纠偏技术闭环,逻辑框架驱动创业高效 或者 技术支持:精准点评纠偏,逻辑框架构建高效闭环 但需要更简洁nn考虑:精准点评纠偏,逻辑框架助力,创业高效闭环但标题要一句话或者:技术赋能:精准纠偏+逻辑框架=创业高效闭环 但字数可能超nn尝试:精准纠偏,逻辑框架,创业高效闭环技术支持太生硬nn更符合技术工程师口吻:用技术支撑、系统优化等比如:精准纠偏技术逻辑,构建创业高效闭环或者:逻辑框架精准纠偏,技术支持创业闭环需要控制在30字以内,数一下nn精准纠偏技术逻辑,构建创业高效闭环 共14字,可以但缺了点评?原要求有精准点评纠偏,所以最好包含点评?但点评在技术语境中可能指代码审查或系统反馈可以改为:精准点评纠偏,逻辑框架构建创业高效闭环 共16字,但缺少助力动词也可以:精准点评纠偏,逻辑框架助力创业高效闭环 共18字或者更紧凑:精准纠偏+逻辑框架=创业高效闭环(技术支撑) 但括号可能不好nn直接输出:精准点评纠偏,逻辑框架助力创业高效闭环 19字,符合要求但作为标题,可以更科技感一点比如:技术精准纠偏,逻辑框架构建创业闭环 14字或者:精准纠偏技术赋能,逻辑框架闭环创业 14字nn考虑到技术支持工程师的口吻,可以加技术二字最终决定:精准纠偏技术逻辑,构建创业高效闭环 14字,简洁有力或者精准点评纠偏技术,逻辑框架助力闭环 14字nn我选择:精准点评纠偏,逻辑框架助力创业高效闭环 这是最直接的,也包含了所有关键词但19字,在30字以内,没问题
6 9 月 2026, 周日

本文就直接深入分析 pinctrl 子系统。
 
使用 pinctrl 和 gpio 子系统进行 GPIO 驱动开发,是嵌入式驱动工程师的基本操作,但大部分驱动工程师只会用子系统提供的 API 接口,不会对其底层实现进行分析,本文对其底层实现进行分析,文末有参考文章链接。
 
 
 
在此框架中,(1)、(2)、(3)由半导体厂商搞定,半导体厂商会利用 Linux 提供的框架,根据自己的芯片,客制化代码。普通的驱动工程师就是调用 API 即可,就算是写驱动了。
 
本文着重讲解(2),所以由图我们知道,pinctrl 子系统和 gpio 子系统都依赖于(2)的驱动。
 
工具
分析源码可以在线查看 Linux 内核源码,在线网址跳转函数和查找结构体也很方便:
 
https://elixir.bootlin.com/linux/latest/source
 
对嵌入式工程师来讲,较少谈及设计模式、重构等,因为我们受限于两个方面:硬件、系统(Linux、Android)。很多东西操作系统都规定好了,留给我们重新设计的很少,我们不做设计题,我们做填空题。
 
在 Linux 内核源码中,pinctrl 子系统的代码大都在 kernel/drivers/pinctrl/…,不同平台有不同的文件夹。gpio 子系统的代码大都在 kernel/drivers/gpio/…目录下。
 
博主买了正点原子 imx6ull 开发板,所以就以此板为例程,进行分析。
 
一、主要结构体
pinctrl 子系统主要结构体关系:
 
 
 
pinctrl_dev 是 pinctrl 子系统的根源结构体,它主要包含三条路:
 
1、pinctrl_desc:这里包含了pinctrl 子系统三个最重要的结构体,有三个操作函数集,pinctrl_ops 包含了对 PIN 的操作函数集,pinmux_ops 包含了对 PIN 的复用函数集,pinconf_ops 包含了对 PIN 的配置函数,大家可以在自己平台中点进去看看自己平台实现了哪个函数,如何实现的。
 
2、pinctrl 结构体:这里包含了 PIN 控制器所控制 PIN 的状态 state,state 里面包含了 setting,这个 setting 就是在设备树中对PIN的设置,大家点进去看相关数据结构就可以看到自己在设备树中用到的字符串。
 
3、gpio 相关的结构体,我们说过 pinctrl 子系统和 gpio 子系统是耦合的,我们从结构体就可以看得出来,它包含了最重要的结构体 gpio_chip。
 
我们已经阐述了pinctrl 子系统主要的数据结构,后面讲述函数调用关系。
 
二、函数调用逻辑
在文件 drivers/pinctrl/freescale/pinctrl-imx6ul.c 中有如下内容:
 
 
 
驱动的入口是 arch_initcall 中声明的函数,类似于我们经常写的 module_init,只是 arch_initcall 会先调用,具体我在这边写过:
 
Linux 驱动挂载顺序分析
 
我们从下往上看,可以看到最后调用的是 imx6ul_pinctrl_probe 函数,和普通驱动的 probe 函数一样,也就是说,pinctrl 子系统的驱动也是一个标准的 platform 驱动框架,分为:驱动、设备、总线。platform 虚拟总线会按照 of_device_id 结构体中的 compatible 属性去匹配 pinctrl 驱动和设备。
 
 
 
在不同芯片厂商的 probe 函数中,都是对上面所描述数据结构的初始化、填充、调用,释放。
 
我们看 292 行,是匹配结构体,根据 compatible 和设备树的compatible 字段进行匹配,匹配成功执行这个 probe 函数。每个平台 probe 函数都有区别,就不详讲了。
 
我们看 292 行的 of_device_id 定义的数组,最后一个是空元素,这是必须的,原因是 platform 本身的 match 函数中需要判断是否达到末尾,of_device_id 定义的 compatible 经常不止一个,系统需要知道是否匹配到最后一个元素,这一点一定要注意。

dawei

【声明】:邵阳站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

您错过了

精准点评纠偏,逻辑框架助力创业高效闭环,reasoning_content:我们要求以技术支持工程师的口吻,写一个与技术、科技相关,关于[精准点评纠偏,逻辑框架助力,创业构建高效闭环]的标题需要简短精炼,30字以内直接输出标题nn可以想到:精准点评纠偏,逻辑框架助力,创业构建高效闭环关键词:精准、纠偏、逻辑框架、高效闭环作为技术支持工程师,可以强调技术工具、系统优化、逻辑梳理等例如:精准纠偏技术闭环,逻辑框架驱动创业高效 或者 技术支持:精准点评纠偏,逻辑框架构建高效闭环 但需要更简洁nn考虑:精准点评纠偏,逻辑框架助力,创业高效闭环但标题要一句话或者:技术赋能:精准纠偏+逻辑框架=创业高效闭环 但字数可能超nn尝试:精准纠偏,逻辑框架,创业高效闭环技术支持太生硬nn更符合技术工程师口吻:用技术支撑、系统优化等比如:精准纠偏技术逻辑,构建创业高效闭环或者:逻辑框架精准纠偏,技术支持创业闭环需要控制在30字以内,数一下nn精准纠偏技术逻辑,构建创业高效闭环 共14字,可以但缺了点评?原要求有精准点评纠偏,所以最好包含点评?但点评在技术语境中可能指代码审查或系统反馈可以改为:精准点评纠偏,逻辑框架构建创业高效闭环 共16字,但缺少助力动词也可以:精准点评纠偏,逻辑框架助力创业高效闭环 共18字或者更紧凑:精准纠偏+逻辑框架=创业高效闭环(技术支撑) 但括号可能不好nn直接输出:精准点评纠偏,逻辑框架助力创业高效闭环 19字,符合要求但作为标题,可以更科技感一点比如:技术精准纠偏,逻辑框架构建创业闭环 14字或者:精准纠偏技术赋能,逻辑框架闭环创业 14字nn考虑到技术支持工程师的口吻,可以加技术二字最终决定:精准纠偏技术逻辑,构建创业高效闭环 14字,简洁有力或者精准点评纠偏技术,逻辑框架助力闭环 14字nn我选择:精准点评纠偏,逻辑框架助力创业高效闭环 这是最直接的,也包含了所有关键词但19字,在30字以内,没问题