IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux内核的 pinctrl 和 gpio 子系统 -> 正文阅读

[系统运维]Linux内核的 pinctrl 和 gpio 子系统

IMX6ULL的pinctrl子系统驱动

在 imx6ull.dtsi 文件中,有如下一个子节点,这个节点是在 根-> soc->aips1->iomuxc,用于IO复用功能。
在这里插入图片描述
但是该节点的内容主要是追加在 imx6ull-alientek-emmc.dts 文件中,因为不同IO不同需求配置不同,所以就追加在 .dts 文件里。以下就是部分追加内容。
在这里插入图片描述
而在 fsl,pins = < > 里的内容,就是具体的每一个IO复用功能的配置。MX6UL_PAD_XXX__XXX_XXX 都是宏定义,这些宏定义在文件 arch/arm/boot/dts/imx6ul-pinfun.h 中。以下是部分代码。
在这里插入图片描述

举例

MX6UL_PAD_UART1_TX_DATA__CSI_DATA02:含义就是将 UART1_TX_DATA 引脚复用为 CSI_DATA02 模式,

后面的5组字符则是对应寄存器地址或向寄存器地址填入的值。含义如下:

<mux_reg conf_reg input_reg mux_mode input_val>

mux_reg:	复用功能寄存器的偏移地址
conf_reg:	IO属性控制寄存器的偏移地址
input_reg:	输入寄存器的偏移地址
mux_mode:	是向 mux_reg 寄存器内写入的值
input_val:	是向 input_reg 寄存器内写入的值

如图所示寄存器:
在这里插入图片描述

注意

需要注意的是:conf_reg寄存器的值并不是在 arch/arm/boot/dts/imx6ul-pinfun.h 这个文件中被写入,因为这是需要我们自己配置的,所以这个也在 imx6ull-alientek-emmc.dts 文件中。
在这里插入图片描述
综上所述,如果我们要追加某一个IO的复用功能,就可以直接在 .dts文件中找到对应的追加信息即 &iomuxc,创建一个新的属性并写入要用的IO和电气属性即可,属性格式如下:

pinctrl_xxx: xxxgrp {
    fsl,pins = <
        		........
        >;
};

IMX6ULL的gpio子系统

gpio子系统是用于初始化GPIO并提供对应的操作GPIO的API函数。

GPIO信息:

以SD卡的CD引脚为例
IO复用控制设备节点:
在这里插入图片描述
SD卡设备节点:
在这里插入图片描述
GPIO1控制器的信息:
在这里插入图片描述

  1. compatible 属性有两个,分别为“fsl,imx6ul-gpio”和“fsl,imx35-gpio”

  2. reg 属性设置了 GPIO1 控制器的寄存器基地址为 0X0209C000

  3. “gpio-controller”表示 gpio1 节点是个 GPIO 控制器。

  4. “#gpio-cells” 属性和 “#address-cells” 类似,#gpio-cells 为 2,表示一共有两个 cell,第一个 cell 为 GPIO 编号,比如 “&gpio1 3” 就表示 GPIO1_IO03。第二个 cell 表示 GPIO 极性 , 如果为 0 (GPIO_ACTIVE_HIGH) 的 话表示高电平有效,如果为1 (GPIO_ACTIVE_LOW) 的话表示低电平有效。

利用pinctrl 和 gpio 子系统编写 LED设备驱动

一、添加 pinctrl 节点

打开文件 /arch/arm/boot/dts/imx6ull-alientek-emmc.dts ,在 iomuxc 节点下的 imx6ul-evk 子节点下加入 自定义的 led 子节点。节点内描述信息为:将GPIO1_IO03 这个 PIN 复用为 GPIO1_IO03,电气属性值为 0X10B0。

 pinctrl_led: ledgrp {
                        fsl,pins = <
                                MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0x10B0
                        >;
                };

二、添加 LED 设备节点

同样在该文件内找到根节点,在根节点下创建 LED 设备节点,内容如下:

gpioled {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "atkalpha-gpioled";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_led>;
                led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
                status = "okay";
                };

三、给 iomuxc 节点添加信息

(在后来实验中发现,这一步是非必要的)
pinctrl-0 属性设置了节点设备所使用的 PIN 对应的 pinctrl 节点,由于我们在 iomucx 节点下新建了一个 ledgrp 节点,所以要在 iomuxc 节点的 pinctrl-0 属性中添加参数。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtSUmhqf-1652260779987)(C:\Users\15894\AppData\Roaming\Typora\typora-user-images\image-20220507173831300.png)]
该参数在添加 LED 设备节点时被定义。

四、检查 PIN 是否被其它外设使用

这里用到的引脚是 GPIO1_IO03,直接搜索这个引脚,如果被使用了就先屏蔽。

用 vim 编辑器在命令行模式下输入 “/GPIO1_IO03” 就是搜索GPIO1_IO03。

五、重新编译设备树文件

回到内核根目录,输入如下命令:

make dtbs

编译完成后复制到自己的 tftpboot 目录下,输入如下命令:

cp imx6ull-alientek-emmc.dtb /home/swiler/tftpboot

开发板进入uboot,重新下载zImage和imxull-alientek-emmc.dtb 文件,然后启动内核,从网络加载根文件系统,检查 gpioled 节点是否存在。

输入如下命令:

cd /proc/device-tree/
ls -l

设备节点如下图所示,存在gpioled,说明节点存在,接下来编写驱动检测节点是否能成功使用。
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 12:00:08  更:2022-05-13 12:01:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:28:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码