论文摘要
USB2.0接口和基于LINUX的驱动程序的应用已经非常广泛,特别在电子消费类领域。基于LINUX下的USB2.0设备则更是市场的需求。本文介绍一种基于嵌入式LINUX的USB2.0设备驱动的设计,主要对一种USB海量存储设备驱动的设计及其测试驱动的设计进行讨论。该驱动是基于学校自主研发的AHB_USB2.0 IP核而设计的。该IP核支持USB 2.0协议,并兼容USB 1.1协议;支持AMBA 2.0协议和UTMI 1.05协议。该IP核一侧通过UTMI接口或ULPI接口的PHY与USB2.0主机端进行通信;另一侧则通过AHB总线与ARM相连。USB2.0设备驱动的设计分为三个大模块:系统初始化和端点0解析、块数据传输和UFI协议分析。系统初始化和端点0解析模块主要解析USB协议,实现了USB设备的总线列举;块数据传输模块主要解析USB海量传输协议BULKONLY协议,实现了数据的块传输;UFI协议分析模块则通过解析USB媒质接口协议UFI命令集,实现了内存虚拟FLASH的读写。该驱动设计遵循USB协议、Bulk Only协议和UFI协议,由外挂ARM实现USB设备命令和UFI命令的解析,并执行相应的操作,实现常规数据读写访问、内部DMA或外部DMA等多种方式的切换。该IP及驱动验证测试可分为寄存器测试、通道测试和业务测试三层。寄存器测试主要用于测试寄存器读写是否正确;通道测试用于测试各个端点的各种传输模式是否工作正常;业务测试则是通过完成一个完整的U盘驱动并测试其是否能够完整完成一个U盘功能。本项目最终已经通过EDA验证和FPGA测试,并且已经在内嵌ARM核的FPGA系统上实现了多个U盘。这个FPGA系统的正确工作,证明了整个项目是成功的,也证明了USB2.0驱动以及测试程序是成功的。
论文目录
摘要ABSTRACT第一章 引言1.1 课题研究背景1.2 USB2.0 以及嵌入式 Linux 概述1.3 本文课题来源、目标和本人任务1.4 本文结构第二章 USB 2.0 协议简介2.1 USB 协议总览2.2 USB 的系统结构2.2.1 总线的拓扑结构2.2.2 内部层次关系2.2.3 数据流模式2.3 USB 传输模式2.3.1 控制传输2.3.2 同步传输2.3.3 中断传输2.3.4 块传输第三章 BULK-ONLY 海量存储协议3.1 BULK-ONLY 协议简介3.1.1 Command Block Wrapper (CBW) 介绍3.1.2 Command Status Wrapper (CSW)3.2 BULK-ONLY 传输条件3.2.1 命令传输3.2.2 数据传输3.2.3 状态传输3.2.4 相位错误3.2.5 复位恢复3.3 主机/设备之间的数据传输3.3.1 合法且有意义的CBW3.3.2 合法且有意义的CSW3.3.3 设备端错误处理3.3.4 主机端错误处理3.3.5 错误的类别3.4 CBW 命令段(UFI 命令)3.4.1 UFI 命令格式3.4.2 UFI 命令简介第四章 USB 海量存储设备驱动详细设计4.1 概述4.2 Linux 环境下加载驱动4.3 初始化模块及端点0 解析4.3.1 概述4.3.2 变量描述4.3.3 函数描述4.4 块数据传输4.4.1 概述4.4.2 变量描述4.4.3 函数描述4.5 UFI 协议解析4.5.1 概述4.5.2 变量描述4.5.3 函数描述4.6 U 盘驱动总体流程图第五章 软件验证的测试程序详细设计5.1 测试目的及方法5.2 测试环境及概述5.2.1 寄存器测试5.2.2 通道测试5.2.3 业务测试5.3 寄存器测试程序详细设计5.3.1 测试方法5.3.2 测试程序设计5.4 通道测试详细设计5.4.1 测试方法5.4.2 测试程序设计5.5 业务测试5.6 测试结果第六章 结论与展望致谢参考文献个人简历、在学期间的研究成果及发表的学术论文
相关论文文献
标签:嵌入式论文; 通用串行总线论文; 驱动论文; 海量存储论文; 媒质接口论文;