大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。
今天给大家分享一下,linux系统里面pinctrl和gpio子系统控制实验,操作硬件为I.MX6ULL开发板。
第一:pinctrl和gpio子系统简介
Linux系统是一个庞大又完善的系统,如果采用原始裸机驱动开发方式,相当于买了一辆车,结果推着去上班。我们要学会如何使用pinctrl和gpio子系统来简化驱动开发过程。
传统方式配置pin的方式就是直接操作相应的寄存器,但是这种配置方式比较繁琐、而且容易出问题。pinctrl子系统就是为了解决这个问题而引入的,pinctrl子系统主要工作内容如下:
1、获取设备树中pin信息。
2、根据获取pin信息来设置pin的复用功能。
3、根据获取到的pin信息来设置pin的电气特性,比如上/下拉,速度,驱动能力等。
对于开发者来说,只需要设置设备树里面某个pin的相关属性即可,其他的初始化工作均有pinctrl子系统来完成,pinctrl子系统源码目录为drivers/pinctrl。
第二:实验程序编写与分析
1、添加 pinctrl 节点
I.MX6U-ALPHA 开发板上的 LED 灯使用了 GPIO1_IO03 这个 PIN,打开 imx6ull-