基于Linux的触摸屏驱动程序的设计与实现
0 引言
触摸屏是嵌入式系统最基本的用户交互设备之一,触摸屏按工作原理的不同分为表面声波屏、电容屏、电阻屏和红外屏几种。触摸屏设备的主要功能是随时报告用户触摸,并标识触摸的坐标,在每次触摸时,通过中断实现。通常该设备的驱动程序都是在W indows系统中运行的,在嵌入式Linux系统中要使这些设备能够正确运行,就要开发相应的驱动程序。
1 Linux下驱动程序结构及主要的数据结构
Linux的设备驱动程序分为自动配置和初始化子程序、服务于I/O请求的子程序和中断服务子程序3部分。其中自动配置和初始化子程序,主要是检测设备是否正常及对正常设备进行相应的软件初始化工作,该部分只在驱动程序对设备进行初始化时进行调用。中断服务子程序又称为驱动程序的下半部分,Linux不通过中断向量表来处理中断事件,而是由Linux系统直接接收来自硬件的中断,然后再调用中断服务子程序,因此中断服务子程序的调用是独立于任何运行进程的状态。服务于I/O请求的子程序,又称为驱动程序的上半部分,它提供了系统操作和使用硬件设备的访问接口。Linux系统访问设备就像访问文件一样,使用一组通用的入口函数完成。例如打开设备使用系统调用open( ),关闭设备使用系统调用close;Linux采用这些系统调用来实现对硬件的使用。
如何将这些系统调用与对硬件设备操作的控制函数相关联,在Linux下通过重要的数据结构file_opera-tions来完成。在实现驱动程序时,要在驱动程序中将硬件的控制函数注册到该结构相应的调用位置处。该结构定义在linux/fs. h文件中,随着内核的升级该结构的内容也会更新。该数据结构的主要内容如下:
2 Linux设备中断的处理和驱动程序的加载方式
2.1 中断处理
在Linux系统中,对中断的处理是属于系统的核心部分。内核中断处理相关的重要函数是中断申请request_irq()和中断释放free_irq()函数,这2个函数的定义在include/linux/interrup.t h文件中声明。
其中, irq表示所要申请的硬件中断号; handler为向系统登记的中断处理子程序, dev_id为申请时的设备标识, deivce为设备名, flag是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是中断处理程序是快速处理程序还是慢速处理程序。在快速处理程序运行时,所有中断都被屏蔽,而慢速处理程序运行时,除了正在处理的中断外,其他中断都没有被屏蔽。2.2 驱动程序的注册与卸载
设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行注册,以便系统在适当的时候调用。在Linux系统中,通过调用register chrdev向系统注册字符型设备驱动程序。register_chrdev定义为:
相关文章
- 2022-08-18现场总线技术解析与其发展趋势
- 2024-01-25秒表检定测量不确定度的评定
- 2024-01-19电子束吸收剂量标准液体化学剂量测量系统的研究
- 2023-02-22三级建模微型机电系统多学科优化设计法
- 2021-12-25基于模糊神经网络的移动机器人沿墙导航控制设计
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。