- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8篇 章 设备驱动(初稿) 嵌入式系统课件.ppt
4、同步机制 在操作系统中,多个内核执行流会在同一时间执行,所以和多进程多线程编程一样,内核也需要一些同步机制来同步各执行单元对共享数据的访问。特别的,在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享数据的访问。 在Linux内核中,包含了几乎所有主流操作系统具有的同步机制,由于本文采用的是2.6内核,它包括:同步锁、信号量、原子操作和完成事件。 同步机制 同步锁 自旋锁(Spinlock) 读写锁(rmlock) RCU锁 Seqlock 同步机制 信号量 Linux内核的信号量在概念和原理上与用户态的IPC机制信号量是一样的,但是不能用在内核之外,它是一种睡眠锁 当一个任务试图获得已被占用的信号量时,会进入一个等待队列,然后睡眠 当持有该信号量的进程释放信号量后,位于等待队列的一个任务就会被唤醒,这个任务获得信号量 第8章 设备驱动 提纲 1、Linux驱动程序简介 2、设备驱动程序结构 3、Linux内核设备模型 4、同步机制 5、内存映射和管理 6、工作队列 7、异步I/O 8、DMA 1、Linux驱动程序简介 设备驱动程序是操作系统内核和机器硬件之间的接口 设备驱动程序为应用程序屏蔽了硬件的细节,在应用程序看来,硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对硬件设备进行操作 Linux驱动程序简介 设备驱动程序是内核的一部分,它完成以下的功能: (1)对设备的初始化和释放。 (2)把数据从内核传送到硬件和从硬件读取数据到内核。 (3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据。这需要在用户空间,内核空间,总线以及外设之间传输数据。 (4)检测和处理设备出现的错误。 Linux驱动程序简介 设备的分类 字符设备 无需缓冲直接读写的设备,如系统的串口设备/dev/cua0和/dev/cua1 块设备 以块为单位进行读写,典型的块大小为512或1024字节;块设备的存取是通过buffer、cache来进行并且可以随机访问,即不管块位于设备中何处都可以对其进行读写 网络设备 通过BSD套接口访问 Linux驱动程序简介 Linux设备驱动代码的分布 所有Linux的设备驱动源码都放在drivers目录中,分成以下几类: block:块设备驱动包括IDE(在ide.c中)驱动。块设备包括IDE与SCSI设备。 char:包含字符设备的驱动,如ttys、串行口以及鼠标 等等 Linux驱动程序简介 Linux设备驱动程序的特点 (1)内核代码 (2)内核接口 (3)内核机制与服务 (4)可加载 (5)可配置 (6)动态性 2、设备驱动程序结构 Linux的设备驱动程序与外界的接口可以分成三部分: (1)驱动程序与操作系统内核的接口 (2)驱动程序与系统引导的接口 (3)驱动程序与设备的接口 设备驱动程序结构 驱动程序的注册与注销 向系统增加一个驱动程序意味着要赋予它一个主设备号,这可以通过在驱动程序的初始化过程中调用定义在fs/devices.c中的register_chrdev()函数或者fs/block_dev.c中的register_blkdev()函数来完成。而在关闭字符设备或者块设备时,则需要通过调用unregister_chrdev()或unregister_blkdev()函数从内核中注销设备,同时释放占用的主设备号。 设备驱动程序结构 设备的打开与释放 打开设备是通过调用定义在include/linux/fs.h中的file_operations结构中的函数open()来完成 释放设备是通过调用file_operations结构中的函数release()来完成 设备驱动程序结构 设备的读写操作 字符设备的读写操作相对比较简单,直接使用函数read()和write()就可以了 块设备的话,则需要调用函数block_read()和block_write()来进行数据读写 设备驱动程序结构 设备的控制操作 通过设备驱动程序中的函数ioctl()来完成 设备驱动程序结构 设备的轮询和中断处理 设备执行某个命令时,如“将读取磁头移动到软盘的第42扇区上”,设备驱动可以从轮询方式和中断方式中选择一种以判断设备是否已经完成此命令。 不支持中断的硬件设备,读写时需要轮流查询设备状态 3、Linux内核设备模型 内核设备模型是Linux 2.6之后引进的,是为了适应系统拓扑结构越来越复杂,对电源管理、热插拔支持要求越来越高等形势下开发的全新的设备模型。它采用sysfs文件系统,一个类似于/proc文件系统的特殊文件系统,作用是将系统中的设备组织成层次结构,然后向用户程序提供内核数据结构信息。 Linux内核设备模型 设备模型建立的目的 代码重复最小; 提供如引
您可能关注的文档
- 第6讲 社会态度 社会学 教学教材.ppt
- 第6讲 组合体分析 机械制图课件教学教材.ppt
- 第6讲 配位场理论1-分子轨道理论 颜色成因教程文件.ppt
- 第6讲 配位场理论2 颜色成因教程教案.ppt
- 第6讲如何闯过面试关- 大学生就业指导课件知识介绍.ppt
- 第6讲词汇选项(三)(一) 职称英语综合B精讲课件教程教案.ppt
- 第73讲完形填空 Look on the Bright Side 职称英语综合B精讲课件幻灯片课件.ppt
- 第74讲完形填空 Working Mothers 职称英语综合B精讲课件教程教案.ppt
- 第7一讲完形填空 A Life with Birds(二) 职称英语综合B精讲课件培训资料.ppt
- 第7二讲完形填空 A Lucky Break 职称英语综合B精讲课件教程教案.ppt
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)