网站大量收购独家精品文档,联系QQ:2885784924

linux设备驱动开发-20132014-2分析.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux设备驱动开发 主要内容 设备驱动程序概念 设备管理的总体流程 设备驱动程序的开发流程及其环境 设备驱动程序编写的基本方法 用户应用程序编写的基本方法 字符设备驱动具体示例 8.1Linux设备驱动程序概述 Linux设备驱动程序是处理或操作硬件控制器的软件,集成在内核里,使得硬件能够进行正常使用,没有驱动,硬件就无法工作。 Linux允许设备驱动程序作为内核可加载模块实现,即除了可以在系统启动时进行注册外,还可以在启动后进行加载注册。 更详细的来说: 驱动介于硬件和linux内核之间 内部编程接口---使得应用程序能够通过标准化调用来操作硬件。 映射---驱动将标准化调用映射在具体的硬件和相关操作上 设备管理总体结构示意(同P174,图8.1) Linux驱动程序的开发环境(扩展) 本机编译调试 开发环境配置简单 无需网络环境 适用于配置较高的x86机器 主机+目标机 主机可以自由选择Linux或Windows+Cygwin 主机和目标机通过网络共享文件系统 内核崩溃不会影响主机 Linux驱动程序的开发环境(扩展) 主机+目标机环境包括 主机运行的工具链∶cross gcc + glibc + gdb, 如果是windows主机还要有cygwin仿真环境 主机运行远程服务,常用的有tftp用来传送内 核映像、initrd,NFS用来共享文件系统 目标机运行ssh或telnet等远程登陆服务,用来 调试驱动程序 Linux驱动开发流程(扩展) 熟悉设备的特性 确定设备驱动程序类别 编写测试用例 搜集可重用的代码 编写自己的驱动程序代码 编码、调试、测试 8.2驱动设计的基础知识 内核模块: 驱动是集成在内核中的(驱动位置)方式: 直接编译进内核 编写成模块,在有需要的时候调用进内核 Linux驱动程序模块加载 内核模块 ---两种方式的优缺点 直接编译进内核 优点:用户可随时调用,无需安装 缺点:占用空间 编译成模块加载进内核 优点:减少内核消耗、无需每次重新编译内核、可以进行独立升级 缺点:每次寻找模块的时候会增加系统资源的占用和运行时间 8.2.2设备驱动程序的基本类型 字符设备 所有能够象字节流一样访问的设备都通过字符设备来实现 它们被映射为文件系统中的节点,通常在/dev/目录下面 一般要包含open read write close等系统调用的实现 块设备 通常是指诸如磁盘、内存、Flash等可以容纳文件系统的存储设备。 块设备也是通过文件系统来访问,与字符设备的区别是:内核管理数据的方式不同 它允许象字符设备一样以字节流的方式来访问,也可一次传递任意多的字节。 8.2.2设备驱动程序的基本类型 网络接口设备 通常它指的是硬件设备,但有时也可能是一个软件设备(如回环接口loopback),它们由内核中网络子系统驱动,负责发送和接收数据包。 它们的数据传送往往不是面向流的,因此很难将它们映射到一个文件系统的节点上。 杂项设备 定义为misc device 驱动结构同字符设备类似 8.2.3设备文件(扩展) 设备文件 Linux使用设备文件来统一对设备的访问接口,将设备文件放在/dev/目录下 设备的命名一般为设备文件名+数字或者字母表示的子类,例如/dev/hda1, /dev/hda2等 Linux 2.4以后引入了设备文件系统(devfs)的概念,所有的设备文件作为一个可以挂装的文件系统,这样就可以被文件系统统一管理,从而设备文件就可以挂装到任何需要的地方。一般将主设备建立一个目录,再将具体的子设备文件建立在此目录下。例如,/dev/had/1, /dev/mtdblock/0 8.2.3主次设备号 对设备的访问是通过设备文件进行访问的。 设备文件存放于/dev目录中:通过ls –l /dev进行查看 设备号(主+次):同一类设备拥有相同的主设备号,具体设备通过次设备号区分,“一个主设备号对应一个驱动程序” 8.2.3 主次设备号 内核中保存设备号的结构体:dev_t(32位) 获取方式:宏 MAJOR(dev); MINOR(dev); 内核2.6以前,主设备号255和次设备号255个 内核2.6以后,可以大于255个 8.2.4字符设备相关数据结构 驱动程序使用的2个重要结构 struct file struct file_operations Struct inode 设备驱动程序接口( struct file_operations ) 设备驱动程序接口( struct file_operations), 标记化方法: static struct file_operations demo_fops = { owner: TH

文档评论(0)

琼瑶文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档