Linux驱动程序设计.pptVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux驱动程序设计.ppt

Linux驱动程序设计 什么是设备驱动? 设备驱动程序是操作系统内核和机器硬件之间的接口。 设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。 设备驱动程序是内核的一部分,它完成以下功能:  1.对设备初始化和释放。  2.把数据从内核传送到硬件和从硬件读取数据。  3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据。  4.检测和处理设备出现的错误。 驱动程序与应用程序的区别 应用程序有一个main 函数。 驱动程序没有main 函数,模块程序在装载时调用init_module(void)函数添加到内核中,在卸载时调用void cleanup_module()函数从内核中卸载。 应用程序从头到尾只执行一个任务。 内核模块程序可以把响应未来请求的事务登记到内核中,然后等待系统调用。 应用程序可以和GLIBC 库连接,可以包含标准的头文件,比如stdio.h stdlib.h。 驱动程序中不能使用标准C 库,不能调用所有的C库函数,如输出打印函数只能使用内核的printk()函数。包含的头文件只能是内核的头文件,比如linux/module.h。 设备分类 Linux的设备文件分为3种类型: 字符型设备文件:可直接读写没有缓冲区的设备,数据的处理以字节为单位逐个进行I/O操作。如并口、触摸屏、按键等。 块设备文件:指输入输出时数据处理以块为单位的设备。块大小一般为512或1024字节。如IDE硬盘、SCSI硬盘、光驱等。只有块设备可安装文件系统。 网络设备文件:指网络设备访问的BSD socket接口,如网卡。 注意: ①字符设备和块设备可以像文件一样被访问,如驱动程序会实现open(打开)、close/release(关闭)、read(读取)、write(写入)等操作。网络设备是一类比较特殊的设备,对它的访问不通过对应的设备文件节点实现。 ②字符型设备和块设备的区别是系统对这两种类型设备的管理方式。应用程序对字符设备的每一个I/O操作,都会直接传递给系统内核对应的驱动程序;对块设备的操作,则经过系统的缓冲区管理,间接传递给驱动程序。 一般说来:只要不挂载文件系统的设备,都已经用字符设备描述。 设备文件 Linux把所有设备都当作文件进行处理,这一类特殊文件就是设备文件,可使用对普通文件和I/O的相关函数来进行操作。 设备文件在/dev下存在一个对应的逻辑设备节点,节点以文件的形式存在。如/dev/hda0 /dev/hda1等。 命名规则:设备文件名+数字或字母。 从Linux2.4 内核开始引入设备文件系统(devfs)。所有的设备文件作为一个可挂载的文件系统,可以被文件系统进行统一管理,从而设备文件就可以挂装到任何需要的地方。一般将主设备建立一个目录,再将具体的子设备文件建立在此目录下。 主设备号和次设备号 设备号是一个数字,是设备的标志,一个设备文件(设备节点)可以通过mknod命令来创建,其中要指定主设备号和次设备号。 主设备号表明某一类设备,主设备号相同的设备使用相同的驱动程序;次设备号用于区分标明不同属性,如不同的使用方法、位置、操作等,它表明着某个具体的物理设备。 如:系统中的块设备IDE硬盘的主设备号是3,而该硬盘在windows下的分区,则分别赋予次设备号1、2、3…… 设备操作宏MAJOR(dev)和MINOR(dev)分别用于获取dev的主次设备号。 宏MKDEV(ma,mi)用于将主设备号和次设备号合并为设备号,这些宏在include/linux/kdev_t.h 中定义。 设备驱动程序接口 设备驱动程序接口指结构体file_operations,定义在include/linux/fs.h 中,该数据结构定义了常见文件I/O函数的入口。 每个设备的驱动程序不一定要实现其中所有的函数操作,一般仅实现其中几个接口函数:read、write、ioctl、open、 release,就可以完成系统所需功能。 file_operations 数据结构说明如下: struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*readdir) (struct

文档评论(0)

docinppt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档