Linux内核驱动之gpio子系统(一)gpio的使用

Linux内核驱动之gpio子系统(一)gpio的使用

ID:40750313

大小:19.58 KB

页数:7页

时间:2019-08-07

Linux内核驱动之gpio子系统(一)gpio的使用_第1页
Linux内核驱动之gpio子系统(一)gpio的使用_第2页
Linux内核驱动之gpio子系统(一)gpio的使用_第3页
Linux内核驱动之gpio子系统(一)gpio的使用_第4页
Linux内核驱动之gpio子系统(一)gpio的使用_第5页
资源描述:

《Linux内核驱动之gpio子系统(一)gpio的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一概述linux内核中gpio是最简单,最常用的资源(和interrupt,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用的二内核中gpio的使用1测试gpio端口是否合法intgpio_is_valid(intnumber);2申请某个gpio端口当然在申请之前必须配置该gpio端口的pi

2、nmux,否则会导致后面的操作失败或者无效intgpio_request(unsignedgpio,constchar*label)3标记gpio的使用方向包括输入还是输出/*成功返回零失败返回负的错误值*/intgpio_direction_input(unsignedgpio);intgpio_direction_output(unsignedgpio,intvalue);4获得gpio引脚的值和设置gpio引脚的值(对于输出)intgpio_get_value(unsignedgpio);voidgpio_set_value(unsigne

3、dgpio,intvalue);5gpio当作中断口使用intgpio_to_irq(unsignedgpio);返回的值即中断编号可以传给request_irq()和free_irq()内核通过调用该函数将gpio端口转换为中断,在用户空间也有类似方法6导出gpio端口到用户空间intgpio_export(unsignedgpio,booldirection_may_change);内核可以对已经被gpio_request()申请的gpio端口的导出进行明确的管理,参数direction_may_change表示用户程序是否允许修改gpio的

4、方向,假如可以则参数direction_may_change为真/*撤销GPIO的导出*/voidgpio_unexport();三用户空间gpio的调用用户空间访问gpio,即通过sysfs接口访问gpio,下面是/sys/class/gpio目录下的三种文件:--export/unexport文件--gpioN指代具体的gpio引脚--gpio_chipN指代gpio控制器必须知道以上接口没有标准device文件和它们的链接。(1)export/unexport文件接口:/sys/class/gpio/export,该接口只能写不能读用户程序

5、通过写入gpio的编号来向内核申请将某个gpio的控制权导出到用户空间当然前提是没有内核代码申请这个gpio端口比如echo19>export上述操作会为19号gpio创建一个节点gpio19,此时/sys/class/gpio下边生成一个gpio19的目录/sys/class/gpio/unexport和导出的效果相反。比如echo19>unexport上述操作将会移除gpio19这个节点。(2)/sys/class/gpio/gpioN指代某个具体的gpio端口,里边有如下属性文件direction表示gpio端口的方向,读取结果是in或ou

6、t。该文件也可以写,写入out时该gpio设为输出同时电平默认为低。写入low或high则不仅可以设置为输出还可以设置输出的电平,当然如果内核不支持或者内核代码不愿意,将不会存在这个属性,比如内核调用了gpio_export(N,0)表示内核不愿意修改gpio端口方向属性value表示gpio引脚的电平,0(低电平)1(高电平),如果gpio被配置为输出,这个值是可写的,记住任何非零的值都将输出高电平,如果某个引脚能并且已经被配置为中断,则可以调用poll(2)函数监听该中断,中断触发后poll(2)函数就会返回。edge表示中断的触发方式,ed

7、ge文件有如下四个值:none,rising,falling,both。none表示引脚为输入,不是中断引脚rising表示引脚为中断输入,上升沿触发falling表示引脚为中断输入,下降沿触发both表示引脚为中断输入,边沿触发这个文件节点只有在引脚被配置为输入引脚的时候才存在。当值是none时可以通过如下方法将变为中断引脚echo"both">edge;对于是both,falling还是rising依赖具体硬件的中断的触发方式。此方法即用户态gpio转换为中断引脚的方式active_low不怎么明白,也木有用过(3)/sys/class/gp

8、io/gpiochipNgpiochipN表示的就是一个gpio_chip,用来管理和控制一组gpio端口的控制器,该目录下存在一下属性

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。