嵌入式LINUX下USB2.0设备驱动设计与实现

嵌入式LINUX下USB2.0设备驱动设计与实现

论文摘要

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 合法且有意义的CBW
  • 3.3.2 合法且有意义的CSW
  • 3.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 测试结果
  • 第六章 结论与展望
  • 致谢
  • 参考文献
  • 个人简历、在学期间的研究成果及发表的学术论文
  • 相关论文文献

    标签:;  ;  ;  ;  ;  

    嵌入式LINUX下USB2.0设备驱动设计与实现
    下载Doc文档

    猜你喜欢