Linux嵌入式 应用编程(GPIO)
1.应用层操控硬件的两种方式
1.设备文件
是各种硬件设备向应用层提供的一个接口,应用层通过对设备文件的 I/O 操作来操控硬件设备,譬如 LCD 显示屏、串口、按键、摄像头等等,所以设备文件其实是与硬件设备相互对应的。
设备文件通常在/dev/目录下,我们也把/dev 目录下的文件称为设备节点。
2.sysfs文件系统
基于内存的文件系统,为虚拟文件系统,作用:
将内核信息以文件的方式提供给应用层使用,对系统设备进行管理
3.总结
应用层想要对底层硬件进行操控,通常可以通过两种方式:
1./dev/目录下的设备文件(设备节点)
2./sys/目录下设备的属性文件
一般简单设备会使用sysfs方式操控,其设备驱动在实现时会将设备的一些属性导出到用户空间 sysfs 文件系统,以属性文件的形式为用户空间提供对这些数据、属性的访问支持,譬如 LED、 GPIO 等。
对于一些较复杂的设备通常会使用设备节点的方式, 譬如 LCD 等、触摸屏、摄像头等。
2.应用程如何操作GPIO
通过sysfs方式进行操控,进入到/sys/class/gpio
IMX6ULL包含了5个GPIO,1-5,分别对应 gpiochip0 , 32 , 64, 96, 128。每个gpiochipX管理一组GPIO。
1.gpiochipX
里面包含如下变量:
base:就是gpiochipX里的X,表示这组GPIO里的引脚的最小编号
label:该组GPIO的名字
ngpio:引脚个数
2.export
用于将指定编号的 GPIO 引脚导出。 在使用 GPIO 引脚之前,需要将其导出,导出成功之后才能使用它。 注意 export 文件是只写文件,不能读取,将一个指定的编号写入到 export 文件中即可将对应的 GPIO 引脚导出
3.unexport
将导出的GPIO引脚删除
4.gpioX
这就是gpiochipX导出的引脚,进入这个目录后,参数如下:
1.direction:配置GPIO引脚输入或者输出模式
2.value:控制引脚的高低电平(默认写入0为低电平,写入1为高电平)
3.active_low:跟value配合使用的,可以改成(写入1为低电平,写入0为高电平)
4.edge中断的触发模式
3.应用编程实例
(GPIO:输出/输入/中断)
输入/输出:
0.gpio配置函数(就是往gpioX的具体变量写入数据)
1.判断指定编号GPIO是否导出,如果没有导出,则导出
2.配置输入(输出)模式,极性设置,配置为非中断模式
3.读取GPIO电平状态(控制输出高电平)
中断:
0.同上
1.同上
2.配置输入,极性配置,配置中断触发方式,上升沿和下降沿
3.使用poll来循环读取是否有中断
#Linux##C/C++##C++工程师##嵌入式工程师##嵌入式#