pinctrl子系统(引脚初始化):
示例:
imx6ull-mmc-npi.dts中
![](https://img-blog.csdnimg.cn/direct/17c181fa1b4e4707962196988b0923b8.png)
名称 | 数值 | 含义 | ||
mux_reg | 0x006c |
引 脚 复 用 选 择 寄 存 器 偏 移 地 址
| ||
conf_reg | 0x02f8 | 引脚(PAD)属性控制寄存器偏移地址 | ||
input_reg | 0x0000 |
输入选择寄存器偏移地址
| ||
mux_mode | 5 | 引 脚 复 用 选 择 寄 存 器 模 式 选 择 位 的 值。 | ||
input_val | 0 |
是输入选择寄存器的值
|
这里只是对引脚复用宏定义进行解释,实际不会去修改这个文件,只会对其进行应用,所以我们的重点在PAD(引脚属性)值
注:通常情况下用作GPIO的引脚PAD属性设置为0x000010B1
该寄存器各bit的内容:
gpio子系统:
在设备树中添加rgb_led节点
编译与下载:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make npi_v7_defconfig
make dtbs
检验:
总结:
这种编写方式在设备树中的编写主要有俩个方面 一个是pinctrl子系统 一个是GPIO子系统
1.pinctrl子系统流程:
(1)在&iomucx中编写格式为:
(2)在内核/arch/arm/boot/dts/imx6ulpinfunc.h中寻找对应的引脚复用宏定义
(3)PAD属性设置
2.GPIO子系统流程
(1)添加节点,设置compatible 与驱动做匹配
(2) 设置pinctrl-names="default"与pinctrl-0 = <&pinctrl节点名称>
(3) 指定引脚使用的哪个 GPIO