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++工程师##嵌入式工程师##嵌入式#
全部评论

相关推荐

1 4 评论
分享
牛客网
牛客企业服务