按键驱动(一)-中断
来源:互联网 发布:淘宝买黄金项链可靠吗 编辑:程序博客网 时间:2024/05/18 03:06
想写linux的按键驱动,那么需要补充许多的基础知识,比如linux的中断申请,linux 等待队列,linux定时器、异步通知等。我们会依依的简单复习一下。我们再来明确一下目标,一会就奔着目标去。
目标:按键通过中断,异步通知上层应用,驱动点亮led并上报按下的状态。
Linux中断子系统向驱动程序提供了一系列的API,其中的一个用于向系统申请中断:这时内核2.6.30之后的api,内核版本不断变化,api也会变,但是用法基本上一样,大框架变化不大,不知道怎么怎么变化的时候,就参考你自己用的内核,内核自带的一些驱动程序,看看就好了,只要有基础。
int request_threaded_irq(unsigned int irq, irq_handler_t handler,rq_handler_t thread_fn, unsigned long irqflags,const char *devname, void *dev_id)
- irq是要申请的IRQ编号,
- handler是中断处理服务函数,该函数工作在中断上下文中,如果不需要,可以传入NULL,但是不可以和thread_fn同时为NULL;
- thread_fn是中断线程的回调函数,工作在内核进程上下文中,如果不需要,可以传入NULL,但是不可以和handler同时为NULL;
- irqflags是该中断的一些标志,可以指定该中断的电气类型,是否共享 等信息;
- devname指定该中断的名称;
- dev_id用于共享中断时的cookie data,通常用于区分共享中断具体由哪个设备发起;
我写程序需要用韦东山的JZ2440,我直接用的linux-2.6.22.6的内核,中断注册函数为:
int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)
- irq是要申请的硬件中断号。
- handler是向系统注册的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev_id参数将被传递给它。
- irqflags是中断处理的属性。
- devname设置中断名称,通常是设备驱动程序的名称 在cat /proc/interrupts中可以看到此名称。
- dev_id在中断共享时会用到,一般设置为这个设备的设备结构体或者NULL。
request_irq()返回0表示成功,返回-INVAL表示中断号无效或处理函数指针为NULL,返回-EBUSY表示中断已经被占用且不能共享。
其实基本上差不多的,看看就好了,问题不大。还有一些接口,我能就先按按照我用的内核进行说吧。
/*有申请注册就有一个注销释放*/void free_irq(unsigned int irq, void *dev_id);/*中断处理函数,名字可以任意,只要利用中断申请函数绑定就好了,假设我们按下按键,linux收到中断就会进入这个处理程序*/static irqreturn_t key_interrupt(int irq, void *dev_id)
最后我们写程序的时候就是,利用request_irq向内核注册中断和key_interrupt函数进行绑定。最终的使用,后来我会写个完整的程序的。这样最基本的中断就书写完毕,要想深入还需要慢慢的积累。
阅读全文
0 0
- 按键驱动(一)-中断
- 中断处理(按键驱动)
- linux驱动之按键(中断)
- 按键驱动(平台文件、中断)
- 外部中断按键驱动
- fl2440按键中断驱动
- 按键中断驱动实例
- s3c6410中断按键驱动
- s5pc100中断按键驱动
- TQ2440 中断按键驱动
- OK6410 按键中断驱动
- 按键中断驱动
- 按键中断驱动
- 按键中断驱动
- mtk 按键中断驱动
- 中断按键驱动
- 驱动-按键-中断模式
- S3C6410 按键驱动(二) ---按键中断的基本流程
- scala代码风格指南--<嵌套块>
- *单例集合、泛型
- MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的
- 数组先小于等于再大于等于的调整
- HDU-2546-饭卡(01背包)
- 按键驱动(一)-中断
- uikit——Auto Layout——NSLayoutAnchor
- Git学习之本地分支和远程分支关联
- C
- 数据字典依赖easyui onShowPanel 版本
- 在数组中找到第 k 小的数
- uikit——Auto Layout——UIView——anchor
- 四大组件之service
- 各种mysql版本下载