Linux设备驱动概述.pptVIP

  1. 1、本文档共41页,可阅读全部内容。
  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设备驱动概述 成研所操作系统团队 Linux设备驱动简介 内核和驱动模块 字符型设备 块设备 网络接口设备 中断处理 常用调试技术 设备驱动的作用 系统与硬件的接口 部分应用与硬件的接口 让硬件为用户可用,一般驱动本身不给用户定制策略 许多驱动程序是同用户程序一起发行的,这样对于硬件使用策略提供给了用户态的应用层 设备分类 字符型设备 仅仅是数据通道,其读写实质是数据的输入和输出 存取时没有缓存 块设备 文件系统的宿主 块设备的读写,内核都有缓存来支持,块设备必须能够随机存取 网络设备 不再调用read/write,而是调用数据包协议 上层协议自动调用发送程序 硬件中断通知接收 设备文件 设备文件 Linux认为“一切皆文件”,设备驱动也可以像文件一样读、写、开、关。 驱动设备文件都在/dev下,如/dev/hda1 Block型设备文件类型为b,Character型设备为c,Socket设备为s 查看设备文件 file 设备名 ls -l 设备名 设备文件 主设备号和从设备号 针对字符型和块设备文件,使用主、从设备号来描述设备 主设备编号表示某种驱动程序 辅设备区分不同设备 例如/dev/hda1、2、3(block 3/1) 同一块硬盘的3块分区 3/1的3为主设备号,1为从设备号 创建设备文件 mknod harddisk b 3 0 设备文件 /proc目录 设备文件与驱动的桥梁 访问设备文件时,查找/proc目录下的值,确定驱动模块 /proc目录下的文件为虚拟文件,实际是内核在内存中的参数。 每次启动系统,自动将/etc/fstab中的设置信息作为proc文件加载到/proc目录下。 Linux设备驱动简介 内核和驱动模块 字符型设备 块设备 网络接口设备 中断处理 常用调试技术 内核态与用户态 内核态 内核态程序是运行在特权模式下,可以运行特权指令,可以访问特殊地址空间。 运行于内核态的进程拥有独立的地址空间,各进程互不影响,因此相对于用户态的程序安全而可靠,独立而封闭。 设备驱动通常运行于内核态 用户态 一般为应用程序 用户态进程优先级低于内核态进程 独立性、安全性不如内核态 设备驱动加载方式 内核 包含最基本的驱动 CPU PCI总线 TCP/IP协议 APM(高级电源管理) VFS 内核模块 一般的外设驱动 不一定是硬件的驱动,如ext3文件系统驱动 动态加载进内核后,成为内核一部分 模块命令 lsmod 列出已加载的模块 modprobe 智能插入模块。根据模块间依存关系,以及/etc/modules.conf文件中的内容插入。 insmod 插入模块,但不会解决依赖关系。 rmmod 删除模块 modinfo 查看模块信息 Linux设备驱动简介 内核和驱动模块 字符型设备 块设备 网络接口设备 中断处理 常用调试技术 字符型设备注册 register_chrdev注册函数 int register_chrdev (unsigned int major, const char * name, struct file_operations *fops); major:被请求的主设备号 name:设备名称 fops:一个指向一组操作(open,read等等)表的指 针。这个表的每一个项都指向由驱动程序定义的 处理相应请求的函数。 文件操作数据结构 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 *); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*open) (struct inode *, struct file *); int (*release) (struct inode *, struct file *) } 主要操作 open 递增使用计数 检查设备特定的错误(如未就绪或类似硬件问题) 如果设备是首次打开,则对其初始化 识别次设备号,并

文档评论(0)

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

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

1亿VIP精品文档

相关文档