键盘鼠标.docVIP

  • 13
  • 0
  • 约2.8万字
  • 约 21页
  • 2016-11-27 发布于河南
  • 举报
键盘鼠标

Harbin Institute of Technology at Weihai 操作系统课程设计报告 设计题目: 设备驱动程序的设计 院 系: 计算机科学与技术学院 班 级: 0704102 学 号: 070410209 设 计 者: 王朋 同 组 人: 李秋作 哈尔滨工业大学(威海) 二零零九年七月 操作系统课程设计任务书 姓 名:王朋 学 号:070410209 院(系):计算机科学与技术学院 专 业:计算机科学与技术 任务起止日期: 2009 年12月1日 至 2009年12月11日 课程设计题目:设备驱动程序的设计 问题阐述与分析: 看懂Linux内核自带的USB驱动程序的一般架构:usb-skeleton.c ,掌握它的实现原理,并给程序加上注释,并试着编译并运行此程序。然后可以自己实现一个简单的USB驱动程序,以便加深对USB驱动程序的理解。 主要任务: 掌握USB系统的组成和USB系统的标准和规范; 掌握Linux下的USB驱动程序的一般架构; 掌握Linux下的USB驱动程序的实现原理和运行机制。 目录 1. 背景知识 1 2. 设计原理 1 2.1 USB规范 1 2.2 Linux下USB子系统体系结构 2 2.3 模块 2 2.4 设备文件 3 3. 详细设计 3 3.1 USB驱动的注册与注销 3 3.2 USB设备的探测与断开 4 3.3 IO操作及数据传输 4 3.4 驱动模块的编译配置和使用 5 4. 程序流程图 6 5. 源码及注释 7 6. 测试及运行结果 20 6.1 测试步骤 20 6.2 测试用例 20 6.3 运行结果 21 7. 总结 25 8. 参考文献 25 背景知识 以Intel为首的七家大公司于1994年推出了USB(Universal Serial Bus),通用串行总线)协议,由于USB具有速度高,成本低,功耗低,支持即插即用(Plug Play)和使用维护方便等优点,协议成熟以后迅速占领了计算机低、中速处部设备市场。Linux内核也从2.2.18开始增加了对USB的支持,到2.4.x的内核对USB的支持已比较完善。USB协议规范定义了一套任何类型的设备都可以遵循的标准。如果一个设备遵循该标准,就不需要一个特殊的驱动,对于不符合这些类的其它类型的设备,需要针对特定的设备编写驱动。随着Linux的普及、嵌入式的快速发展和USB设备的广泛应用,Linux下的USB设备驱动开发越来越频繁。 USB是目前在打印机、数字存储设备、输入输出设备、数码相机、MP3播放器等其他外围设备中得到广泛应用的连接方式。USB设备具有使用方便,速度快,连接灵活,即插即用,总线供电等优点。由于USB设备的方便与快捷,因此它们很快得到了用户的认可。 设计原理 USB规范 USB支持分层的菊花链结构如下图所示,USB总结拓朴结构由三种元素组成:主机-Host、集线器-Hub、设备Node。Hub是每个星形结构的中心,用于连接设备和主机,而实际的PC就是主机-Host和根集线器-Root Hub,可以连接外设或Hub, Hub还可以连接其它的外设以及更下层Hub。 图1 USB 总线拓扑结构 每个设备具有一个或多个配置,配置提供功率和带宽等。而每个配置可以有多个接口,一个接口代表了一个基本功能,可同时有效,并可被不同的驱动程序连接。一个接口有多个端点,端点是与设备进行通信的单向(OUT/IN)访问点,是最基本的通信形式。它们提供缓冲区来存储从设备而来的名发送到设备的数据。每个USB设备至少有两个端点,它们分别是进出方向的,编号为0的端点,用于控制总线上的设备,由服务层管理,设备驱动程序不能直接使用。 Linux下USB子系统体系结构 Linux下的USB系统分成三部分:USB core 、USB设备驱动、USB主控制器,如下图所示: 图2 Linux USB体系结构 其中USB core是Linux中USB体系结构的核心,它将USB体系分成包括它自身在内的三个层次,USB core为USB驱动程序提供的一系列用于访问和控制USB硬件的接口,通过这些接口来实现USB设备驱动的数据处理的功能。还提供总线管理,设备维护、配置和应用程序访问USB系统的文件接口等。 USB主控制器驱动(HCD)是USB主机和硬件通信的软件模块。分为通用主控制器接口(UHC

文档评论(0)

1亿VIP精品文档

相关文档