一直对gpio子系统 与 pinctrl子系统的关系比较模糊,最近理解了一下。
先说结论:
- 理解的关键在于:两者即是独立,又是互相联系。
- 独立指软件上的独立,linux本身对于不同模块都是独立的。
- 联系是指硬件上的联系,因为都是针对硬件上的pin进行操作。
- 芯片手册一般只有gpio章节没有pinctrl章节,pinctrl是软件上的概念,可以理解为一个模块。
- 在linux的软件架构上,gpio又是pinctrl的子集,gpio 子系统依赖于 pinctrl 子系统来实现;在引入设备树之后,GPIO子系统是通过pinctrl子系统来实现的,这一条是重点。
- 只有当pinctrl 子系统将pin配置为GPIO时,才需要配置 gpio 子系统。
- gpio子系统与pinctrl子系统相辅相成,共同构成了一个芯片对pin引脚的管理。
如下图(网上引用来的图):
GPIO与pinctrl子系统在Linux中的角色解析

GPIO与pinctrl子系统在Linux内核中扮演着重要角色。GPIO子系统负责配置引脚为输入/输出,读取电平及中断处理,而pinctrl子系统则专注于引脚功能配置和电气特性设定,如复用功能和驱动配置。二者相辅相成,共同管理芯片的引脚资源。在设备树中,GPIO通过pinctrl实现,只有当pinctrl配置引脚为GPIO时,GPIO子系统才介入。理解这两者的关系有助于更好地进行Linux驱动开发。
最低0.47元/天 解锁文章
1116

被折叠的 条评论
为什么被折叠?



