【s3c2440的USB裸机枚举】涉及的是在没有操作系统支持的情况下,直接在硬件层面操控S3C2440处理器的USB主机接口进行设备枚举的过程。S3C2440是一款基于ARM920T内核的微处理器,其集成的USB主机接口遵循OHCI(Open Host Controller Interface)v1.0规范,该规范是针对USB主机控制器驱动和控制器硬件之间的接口标准。 在USB系统中,枚举是设备连接到主机后识别和配置的过程。了解枚举过程需要掌握USB v1.1协议的基础知识,因为OHCI规范建立在此之上。USB体系由客户软件、USB驱动、主机控制器驱动(HCD)、主机控制器(HC)四大部分构成。HCD和HC通过OHCI接口交互,HCD是软件实现,而HC是硬件实现。其中,HCD负责管理ED(Endpoint Descriptor)和TD(Transfer Descriptor)。 数据传输在USB中分为四种类型:控制传输、批量传输、中断传输和同步传输。在OHCI中,数据传输被划分为周期性和非周期性两种,同步和中断传输为周期性,控制和批量为非周期性。每个USB帧(1.0毫秒)的带宽分配通常是:发送Start Of Frame (SOF)、非周期传输、周期传输,如有剩余时间则继续进行非周期传输。 ED是描述端点特性的数据结构,包含端点地址、传输速度、最大包大小等信息,并通过TD链表管理数据传输。TD则是实际数据传输的内存缓冲,指示数据的来源或目的地。当HC处理一个ED并找到有效的TD时,就执行一次数据传输。完成传输后,TD会被解链并放入完成列表,供HCD处理以获取传输完成信息。 ED的数据结构包括16字节,关键字段如:FA(Function Address)是USB设备地址,EN(Endpoint Number)是端点号,D(Direction)指示传输方向,S(Speed)表示传输速度,K(Skip)用于跳过当前ED,F(Format)定义TD格式,MPS(Maximum Packet Size)是最大包大小,TailP、HeadP和NextED分别指向TD链表的尾部、头部和下一个待处理的ED。 创建ED时,我们需要指定ED的地址、最大包大小、TD格式、是否跳过、传输速度、方向、端点号、功能地址、TD链表的尾指针、头指针、进位位和下一个ED的指针。这些参数用于初始化ED结构体,确保正确地控制和管理USB传输。 在裸机环境下编写USB驱动,开发者需要深入理解USB协议、OHCI规范以及S3C2440的硬件特性,这样才能有效地控制USB设备,实现数据的收发。此外,内存对齐和适当的函数调用也是实现枚举过程中不可忽视的细节。
剩余18页未读,继续阅读
- ydcr1682013-03-07确实是,没怎么入门,还要进一步学习。
- vans882014-05-05代码不完整需要,但提供了基本思路,可以继续完成
- omnbmh912018-09-28确实是,没怎么入门,还要进一步学习。
- ddicode2013-12-19可惜代码不完整了
- andy010101012012-07-27下来了,太难了,还没怎么看懂!
- 粉丝: 6
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 精选微信小程序源码:汤总便利小程序(门店店铺类)小程序(含源码+源码导入视频教程&文档教程,亲测可用)
- Excel弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接” 场景范例
- C语言《基于ROS melodic,底盘控制器基于STM32的一个2D激光SLAM自主导小车》+项目源码+文档说明
- winform上位机图像采集控件.zip
- 工具变量全国供应链创新试点城市DID数据集(2007-2023年).xlsx
- SasAppsUserKeyBarUserTech_86_1.0.0.1.kop
- 项目售后服务及培训.docx
- 贪心算法介绍及入门案例
- 项目实施管理方案.docx
- 精选微信小程序源码:熊猫签证小程序(含源码+源码导入视频教程&文档教程,亲测可用)