Android使用switch模块进行GPIO口检测(一)-->LINUX驱动部分

本文分享了作者使用两天时间熟悉Switch模块并编写LINUX驱动的经历。Switch模块是LINUX的GPIO口输入监测框架,作者通过创建switch_gpios.c文件,将多个IO口驱动集成在一个文件中。文中详细介绍了实现过程中遇到的问题及解决方案。

费了两天时间将Switch模块熟悉了下并编写了LINUX部分的驱动程序,现在记录下。。。

Switch模块就是LINUX的GPIO口输入监测框架,位于/drivers/switch目录下,默认有switch_class.c与switch_gpio.c两个文件。

switch_class.c作为一个class看看就明白了,switch_gpio.c中在我看来是一个例子,可以仿照该例子自己新建相应的IO口驱动,

我的板子上有四个IO口需要监测,开始我是建立四个相应IO口驱动,然后发现这样做有些重复繁琐的感觉,就决定做一个switch_gpios.c文件,

将几个IO口检测驱动集成到一个文件中,然后就开动吧,主要修改的部分其实就是probe函数部分

过程参考了按键驱动部分,将所有引脚gpio_switch_platform_data结构打包为一个数组传到platform_device的dev.platform_data中,

然后在probe函数中解析出来,申请内存,申请IO中断,默认的IO触发条件为低电平,我按照这样做的结果是当该引脚电平拉低后系统直接卡住了。。。

所以我改成了上升沿与下降沿触发,并添加了工作队列结构,而非直接触发,因为要滤波的么。。。

其他再就没什么要注意的了。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值