【Linux】Pinctrl子系统简介

这篇具有很好参考价值的文章主要介绍了【Linux】Pinctrl子系统简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

我们工作开发中非常常用的就是GPIO,在Linux开发中,是有必要去熟悉并理解的。在Linux内核中也有提供相应的子系统pinctrl子系统,本文从大的面上去了解它

参考学习:Linux笔记老师课程(Pinctrl子系统)

https://live.csdn.net/v/219059?spm=1001.2014.3001.5501

https://xuesong.blog.csdn.net/article/details/109522945?spm=1001.2014.3001.5502

https://blog.csdn.net/qq_33487044/article/details/123468166

https://blog.csdn.net/qq_33487044/article/details/110010020

现阶段,先学到这里了,这一部分的内容后续会结合具体的例子实践,深入学习理解。

一、Pinctrl子系统概述 

gpio引脚除了作为普通输入输出端口之外化具有接入其他控制器的功能。但是引脚的功能分配和特性配置是个繁琐的工作。这个问题如何去解决呢?

Pinctrl子系统就是来解决上述问题的,它主体上有两类设置,其中一类是功能选择,即用作iic、uart还是作为普通gpio。另一类则是gpio的特性配置,即上拉、下拉、驱动能力和速率的配置。 

【Linux】Pinctrl子系统简介

总述,Linux Pinctrl子系统提供的功能:

  • 管理系统中所有的可以控制的pin,在系统初始化的时候,枚举所有可以控制的pin,并标识这些pin.
  • 管理这些pin的复用 (Multiplexing) 。对于SOC而言,其引脚除了配置成普通的GPI0之外,若干个引脚还可以组成一个pin group,特定的功能。pin controlsubsystem要管理所有的pin group。
  • 配置这些pin的特性。例如使能或关闭引脚上的pul-up、pull-down电阻,配置引脚的driver strength。

二、Pinctrl的具体框架

Pinctrl整个驱动模块可以分为4个部分:

  • pinctrl api:提供给上层用户调用的接口
  • pinctrl common framework:提供给上层用户调用的接口
  • pinctrl driver:平台需要实现的驱动
  • board configuration:设备pin配置信息。

【Linux】Pinctrl子系统简介

  • 在Pinctrl core可以看到有三个状态,default、sleep以及idle。系统正常运行时,会先按默认的配置或者处于空闲的状态;系统进入休眠状态时,为节省功耗,需要对设备pin进行另一组配置。
  • Pinctrl framework 主要处理 pinstate、pinmux 和 pinconfig 三个功能,映射关系如上图所示。

三、Pinctrl dts配置例子

uart0_pins: uart0-pins {
	pins = "18", "19";
	function = "uart0";
};
uart0_sleep_pins: uart0-pins {
	pins = "18", "19";
	function = "gpio";
};
...
&uart0 {
	pinctrl-names = "default","sleep";
	pinctrl-0 = <&uart0_pins>;
	pinctrl-1 = <&uart0_sleep_pins>;
	status = "okay";
};

pinctrl-0对应上述uart0-pins,这里pin会配置为uart功能,对应18、19号引脚。pinctrl-1对应上述的uart0_sleep_pins,系统进入休眠时,这里pin会配置为gpio功能。文章来源地址https://www.toymoban.com/news/detail-466699.html

到了这里,关于【Linux】Pinctrl子系统简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux IIO 子系统简介

    IIO 子系统系统框架 而在IIO子系统内部,则主要包括如下四部分的内容: iio buffer用于处理需要进行连续采集的数据,当一个IIO device的各通道数据支持连续采集时,则调用iio buffer模块提供的接口,创建iio buffer用于存储连续存储的数据,同时该模块提供字符设备文件的注册,因

    2024年02月16日
    浏览(33)
  • Linux内核安全子系统简介(下)

    内容来源:deepin社区 作者:zhanglei       Linux内核安全子系统简介(上) 资源隔离是一个历史悠久又异常有效的安全手段。 从操作系统的角度来看,它对各个进程的管理实际上就是一个隔离。每个进程都拥有从0开始的连续一大片地址空间可以使用,但实际上在物理地址上,

    2024年04月08日
    浏览(49)
  • RK3588 设备树pinctrl gpio子系统解析,解决GPIO无法正确拉高拉低的问题,RK3588设备树详解

    firefly的官方说明文档RK3588gpio系统说明 其中,bank是所属的组,Core-3588J 有 5 组 GPIO bank:GPIO0-GPIO4,每组又以 A0-A7, B0-B7, C0-C7, D0-D7 作为编号区分。 首先,对于firefly的rk3588j的开发板,其设备树有几个比较重要的文件, 分别是 /kernel/arch/arm64/boot/dts/rockchip/rk3588s-pinctrl.dtsi ; /ker

    2024年02月06日
    浏览(41)
  • Win11 专业工作站版安装安卓子系统方法 (离线包安装)

    目录 Windows 11 上运行Android软件 Android子系统的要求 一、安装 Windows Hyper-V支持 二、Win11 专业工作站版安装安卓子系统方法 (离线包安装)  操作方法: 三、在Win11 安卓子系统安装 APK 软件包教程 Windows 11 WSA 安装 APK 方法:  系统环境变量配置 Windows 11的新功能中,“ Windows Sub

    2024年02月05日
    浏览(48)
  • 【Windows 11】安装 Android子系统 和 Linux子系统

    本文使用电脑系统: 主要就是安装一个名为: 适用于Android的Windows子系统 (WSA)的软件。 首先在电脑的设置里面:时间和语言——语言和地区里面把地区改为美国。 然后到微软商店搜索: Amazon AppStore 。 安装亚马逊应用商店的时候,会首先提示你安装前面说的WSA。如此,我

    2024年02月09日
    浏览(52)
  • Window10安装linux子系统及子系统安装1Panel面板

    原文地址:Window10安装linux子系统及子系统安装1Panel面板 - Stars-One的杂货小窝 最近看到halo博客发布了2.10.0,终于是新增了个备份功能,于是有了念头想要升级下 但是目前我还是使用halo1.5版本,所以跨版本迁移可能会有问题,官方提议还是先用个测试环境进行测试验证是否有问题 但

    2024年02月08日
    浏览(50)
  • Linux reset子系统

    文章代码分析基于linux-5.19.13,架构基于aarch64(ARM64)。 复杂IC内部有很多具有独立功能的硬件模块,例如CPU cores、GPU cores、USB控制器、MMC控制器、等等,出于功耗、稳定性等方面的考虑,有些IC在内部为这些硬件模块设计了复位信号(reset signals),软件可通过寄存器(一般

    2024年02月16日
    浏览(38)
  • Linux Input子系统

    按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做  input 子系统 的 框架 来处理输入事件。本质属于字符设备。 1. input子系统结构如下:  input 子系统分为 input 驱动层、input 核心层、input 事件处理层,最终给用户空间提供可访问的设备节点

    2024年02月10日
    浏览(41)
  • Linux内核(十四)Input 子系统详解 I —— 子系统介绍以及相关结构体解析

    input子系统就是管理输入的子系统 ,和Linux其他子系统一样,都是Linux内核针对某一类设备而创建的框架。 鼠标、键盘、触摸屏等都属于输入设备,Linux将这些设备的共同特性抽象出来,这就形成了input子系统的框架。 Linux内核只需要通过input框架向用户层上报输入事件 (如:

    2024年02月05日
    浏览(43)
  • Windows系统开启Linux子系统(Ubuntu)

    Linux是一种开源的操作系统,它拥有强大的功能和稳定的性能,广受开发者和用户的喜爱。但是,如果我们的电脑是Windows系统,要使用Linux系统,我们通常需要安装虚拟机,这样会占用很多的资源和空间,而且也不够方便。 其实,对于大多数用户来说,只需要开启Windows系统自

    2024年04月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包