加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

为系统处理器编写Linux设备驱动程序

发布时间:2016-01-24 19:31:23 所属栏目:Linux 来源:网络整理
导读:引 言 编写 Linux 设备驱动程序无疑是一项复杂的工作。本文将集中介绍非标准硬件的设备驱动程序编写,探讨硬件应用编程接口,并借用 Cirrus Logic EP9312 片上

字符设备驱动程序实例:触摸屏设备驱动程序

EP9312触摸屏控制器因其数据只能按顺序获取而被列为Linux字符设备。触摸屏字符驱动程序的执行是相当简单的--设备向操作系统注册,并通过文档系统特殊文件进行访问。有关硬件代码包含在文档操作表的一套函数中。我们将从内核初始化开始,解释该驱动程序的执行情况。

初始化EP9312触摸屏的函数是:

 int __init ep93xx_ts_init(void)

该函数处理2项工作:当设备被中断驱动时获取设备IRQ和在操作系统内注册触摸屏设备。

函数request_irq() 在请求IRQ时被调用,并注册中断处理器函数以在设备发生系统中断时处理所需的任务。

而函数 register_chrdev() 则是用来注册字符设备的。该函数表现形式如下:

int register_chrdev(unsigned int major,
  const char * name,
  struct file_operations *fops)

该函数安装了字符设备硬件的内核接口。主要编号用于把驱动程序映射到 /dev 目录中的文档系统特殊文件。设备被赋予一个名称,以便内核识辨。此外,file_operations 结构具有对函数指针表的一个指针,该表指向硬件的相应函数。

然而,仍然有一些字符设备不符合预先确定的字符设备范畴。这些设备就用主编号10一起归于"其他类型",注册设备用以下函数:

 int misc_register(struct miscdevice * misc)

misc_register()用主编号10调用 register_chrdev(),设备名称和函数表指针通过miscdevice数据结构获得。同样,miscdevice 数据结构还保存设备驱动程序所使用的次要号码。

以下是在设备驱动程序代码内注册 EP9312 触摸屏采用的函数调用:

misc_register(&ep93xx_ts_miscdev)

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读