- 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)