




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图像编码与软件电子科技2009年第22卷第10期收稿日期:2009201215作者简介:常赟杰(1980-,男,硕士研究生,助教。研究方向:嵌入式系统。刘连浩(1959-,男,博士,教授。研究方向:信息安全与嵌入式系统。基于嵌入式L inux 的中断驱动程序设计常赟杰1,2,刘连浩1(11中南大学信息科学与工程学院,湖南长沙410083;21湖南工学院计算机科学系,湖南衡阳421002摘要首先阐述了嵌入式L inux 操作系统下,设备驱动程序的实现原理和编写方法,然后说明了中断处理在设备驱动程序中的应用,并详细论述了中断方式下,编写设备驱动程序的具体开发流程,进一步分析了编写中断处理程序时所用
2、到一些数据结构。应用证明,在编写L inux 设备驱动程序的时候,采用中断方式的程序效率会更高。关键词AR M;L inux;设备驱动;中断中图分类号TP316文献标识码A 文章编号1007-7820(200910-074-03D esi gn of I n terrupt D ev i ce D r i vers Ba sed onE m bedded L i n uxChang Yunjie1,2,L iu L ianhao2(11School of Infor mati on Science and Engineer,Central South University,Changsha 4
3、10083,China;21Depart m ent of Computer Science,Hunan I nstitute of Technol ogy,Hengyang 421002,China Abstract First,the p rincip le of i m p lementation and p r ogramm ing method of device drivers on embedded L inux operati on system is intr oduced .Then,the app lication of interrup t handling in de
4、vice drivers is p resen 2ted,with a detailed discussi on of the devel opment p r ocesses of device drivers under interrup t .Finally,s omei m portant data structures used in interrup t handling p r ogramm ing are further analyzed .Practical app lication in 2dicates that higher p r ogram efficiency i
5、s achieved with the use of interrup t in the L inux device driver p rogram 2m ing .Keywords ARM;L inux;devices drivers;interrup t随着电子技术的飞速发展,嵌入式L inux 有着广泛的适用硬件平台,高效稳定的内核代码、丰富的应用软件、良好的网络接口等特点,已经成为嵌入式系统领域中的研究热点。在嵌入式系统中,对硬件的管理是通过内核中的驱动程序来实现的,因此在嵌入式系统开发中,大量工作是对各种设备进行驱动程序的开发。中断管理是嵌入式操作系统的核心任务之一,设备驱动程序中使
6、用中断可以提高应用程序的效率。L inux 为中断处理提供了良好的接口,L inux 设备驱动程序中有很多都是通过中断方式来实现的。1中断方式L inux 驱动程序实现方法111设备驱动程序概述设备驱动程序是为特定的硬件提供给用户程序的一组标准化接口,它隐藏了设备的工作细节。L inux 系统中,硬件设备被抽象为一个设备文件,应用程序可以像操作普通文件一样来对硬件设备进行操作。(1设备驱动程序的注册和注销。L inux 系统为每个设备分配了一个主设备号(Maj or 和次设备号(M inor ,主设备号标识设备对应的驱动程序,次设备号对应具体设备的实例。通常在应用中,主设备号都是采用动态分配的
7、方式获取,即以设备号“0”进行申请,然后由系统返回一个可用设备号作为主设备号。(2设备操作。在L inux 内核中,结构struct file_op reti ons 中定常赟杰,等:基于嵌入式L inux的中断驱动程序设计图像编码与软件义了对设备的各种操作,例如打开设备使用open (,关闭设备使用cl ose(,从设备读取数据用read(,将数据写入设备用write(。编写驱动程序,主要是实现struct file_op reti ons中的函数。(3模块化设计。L inux内核中采用了可加载的模块化设计。驱动采用模块化编写以后,它可以在系统启动后的任何时刻把驱动程序添加到内核代码中;当不
8、需要这个模块时,可以将模块从内核中卸载和删除。当模块被加载时,程序从int_module(函数开始执行;卸载的时候,程序从exit_module(函数开始执行,释放掉它占用的系统资源2。L inux提供两个宏,module_int和module_exit来显示的命名模块的注册和注销函数,即为Moudle_int(init_module;Moudle_exit(exit_module;112L inux中的中断处理L inux在驱动程序中应用到中断的时候,必须先把中断处理程序注册到系统中。当有硬件中断请求发生后,操作系统调用中断处理程序,完成对设备的操作4。注册中断处理程序采用的函数是reque
9、st_iqr,其原型为int request_irq(unsigned int irq,Void(3handler(int irq,void dev_id, struct p t_ges3ges,Unsigned l ong irq_flags,const char3 devna me,void3dev_id函数调用成功时,返回0;失败时返回负值。其中的参数irq为要申请的硬件中断号;handle为中断处理子程序,中断产生时由系统来调用,调用参数iqr为中断类型号,dev_id为申请时告诉系统的设备;标识regs为中断发生时寄存器的内容; irq_flags决定中断处理程序的特性,例如设置sa
10、_ interrup t就是个快中断,不设置就是慢中断; devna me指向设备名称的字符指针,记录了哪个设备使用这个中断号;dev_id为申请中断时间告诉系统的设备标识,由于中断可以被共享,不同的中断处理通过dev_id来区分。注销中断采用的函数是free_irq,其原型为Void free_irq(unsigned int irq,void3dev_id它的参数与request_iqr函数中参数意义完全一样。113中断处理函数的实现中断处理程序的功能,就是将有关中断接收的信息反馈给设备,并根据要服务中断的不同含义进行相应的读写。由于中断处理程序是在中断时间内运行的,它不能向用户空间发送或
11、接收数据,因为它不在任何进程的上下文中执行。通常在中断处理程序中用到以下几个数据结构3:(1等待队列。当应用程序对设备进行读的时候,如果暂时还没有数据可读,就必须让进程睡眠来等待数据。如果中断向进程发出了信号,指示它们等待的事件已经发生,那么就可以唤醒在设备上睡眠的那些进程。进程的睡眠和唤醒就是通过一个叫做等待队列的数据结构来实现的。在L inux中,等待队列由一个wait_queue_head_t类型的数据结构来管理。interrup tible_sleep_on(函数用来让进程睡眠, wake_up_interrup tible(函数用来唤醒睡眠的进程。(2环形缓冲区。在驱动程序使用循环缓
12、冲区是处理并发访问问题的一种有效方法。当设备的一些操作来不及处理的时候,就先存放到缓冲区中。缓冲区共有两个指针进行寻址:head和tail。Head指向数据的写入位置,tail指向数据的读出位置。(3系统时钟。在编写中断处理程序的时候,必须要保证程序执行的时间尽可能短。系统执行时间由系统时钟来控制。系统时钟是通过ti m e_list结构可以实现的5。使用时钟时,首先调用init_ti m e_list进行初始化。ti m e_list结构中参数exp ires表示时钟的周期,其单位采用L inux全局变量jiffies。系统内核还提供了Hz来定义每秒种最小时间间隔的数目。系统计时到一定时间就
13、调用functi on函数,并把此子程序从定时队列里删除,如果想要每隔一定时间都执行一次的话,就必须在functi on函数里再一次调用addt_i m er函数。2中断方式驱动程序设计211按键控制原理硬件采用s3c2410处理器I/O口的GPF3, GPF4,GPF5,GPF6这4个端口对应4个按键。当按键按下时,分别产生eint3,eint4,eint5,eint64个外部低电平的中断请求。s3c2410根据中断来判图像编码与软件常赟杰,等:基于嵌入式L inux的中断驱动程序设计断按键被按下。212按键驱动程序的实现(1首先设计一个按键的设备结构体。该结构体中包含一个缓冲区,当多次按键
14、无法被及时处理的时候,使用该缓冲区缓存按键。此外,还包含按键状态标志和一个等待队列。为了实现软件延时,定时器也是必要的,但不包含在设备结构体中;(2接着定义一个按键结构体,来保存4个按键的所对应的中断号,GP I O引脚及键值;(3按键驱动的模块加载和卸载函数;(4按键设备中断处理函数。在键被按下后,将发生中断,在中断处理程序中,延时20m s,去除抖动;(5按键设备的打开、释放函数。按键设备驱动的打开和释放函数比较简单,主要是设置keydev1head、keydev1tail和按键事件函数指针keyEvent的值;(6按键设备的读取函数。按键设备驱动的读函数是驱动程序和用户的接口,在读取/d
15、ev/key2 board/ra w文件的时候被读取。当keydev1head!= keydev1tail时,表示缓冲区有数据,它从缓冲区的尾部读取一个按键事件,直接返回给用户。当缓冲区为空时,根据用户空间是阻塞读还是非阻塞读,分为如下两种情况来处理:1若采用非阻塞读,则因为没有按键缓存,直接返回-Eagain;2若采用阻塞读,则在keydev1wq等待队列上睡眠,直到有按键被记录入缓冲区后再被唤醒。3结束语L inux216内核中,添加了可抢占(Pree mp tible的处理中断方式,使中断处理的实时性更加强大。在编写L inux设备驱动程序的时候,采用中断方式的程序效率会更高。参考文献1
16、刘淼.嵌入式系统接口设计与L inux驱动程序设计M.北京:北京航空航天大学出版社,2006.2田泽.AR M9嵌入式开发与实践M.北京:北京航空航天大学出版社,2006.3Rubini A,Corbet J.L inux设备驱动程序M.魏永明,骆勇,姜均,译.北京:中国电力出版社,2002.4董志国,李式巨.嵌入式L inux设备驱动程序开发J.计算机工程与设计,2006,27(20:3737-3740.5李世勇,肖竟华.基于L inux驱动的编写技术J.电脑与信息技术,2006,14(3:43-45.(上接第21页6结束语文中给出了该新型智能化变换器式功率表6的设计,综述了该仪表系统的工作原理和设计思想,重点介绍了功率检测电路的原理和设计。本仪表经实际使用证明,具有体积小、成本低、精度高、可靠性好等优点,有较好的市场前景。此外,还可以针对不同的用户,进一步修改软硬件系统,增加功
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络管理员考试学习路径试题及答案
- 福建省福州教育学院附属中学2025届八下数学期末质量跟踪监视试题含解析
- 2025年经济波动风险试题及答案
- 战略执行与绩效管理试题及答案
- 共享经济中的技术应用考题试题及答案
- 吉林省延边州安图县联考2025届八下数学期末质量检测试题含解析
- 计算机系统集成的流程与方法试题及答案
- 2025年的商业模式创新与战略试题及答案
- 2025年数字技术与企业战略的协同试题及答案
- 公司战略专利试题及答案手册
- DB43∕T 604-2010 日用炻瓷-行业标准
- 法商小课堂传承保险法商课婚姻保险法商课32张幻灯片
- 《品牌策划与管理(第4版)》知识点与关键词解释
- 《刘姥姥进大观园》课本剧剧本3篇
- 房屋买卖合同解除协议书
- 司法局PPT模板
- 干部选拔任用工作全部系列表格12张
- 五年级奥数《盈亏问题》(课堂PPT)
- 建设工程质量安全管理奖罚制度汇编
- 小学语文四年级上册作业设计《21.古诗三首》(附答案)部编版
- FC西游记后传金手指
评论
0/150
提交评论