嵌入式系统中USB-HOST协议栈的设计

发布者:快乐球球最新更新时间:2007-07-09 来源: 现代电子技术关键字:驱动  代码  兼容  频率 手机看文章 扫描二维码
随时随地手机看文章

1 引言

在移动设备大力发展的今天,移动设备间的大量数据交流的需求大大刺激了嵌入式USB主机系统的发展,这必然要求嵌入式系统必须提供USB的主机驱动。而传统意义上的LISB驱动程序的开发都是USB外设驱动程序的开发,主控制器驱动大部分由操作系统来提供,开发者所要做的就是调用操作系统提供的驱动程序的接口。两大主流操作系统中,Windows不公开源码而Linux的代码却不方便移植。对于目前使用μCOS,VxWorks和QNX等OS的嵌入式系统和一些无OS的单片机系统来说,建立好一整套方便移植的USB主机驱动程序将会有更大的意义。

2硬件平台

硬件平台的MCU选择的是TMS320 DM642,他是TIC6000产品系列中的一款,基于C64x的内核,工作频率为600 MHz,兼容C6000平台上的代码。他有3个双通道视频口,可以支持多达6路视频输入输出。DM64.2的处理能力较突出,一块单片的DM642可以同时解码4路MPEG2格式的视频流。

USB主控制器选用的是Cypress的一款主/从控制器SL811HS,其既可以工作在主机(Host)模式又可以工作在从机(Slave)模式,能与全速(Full-Speed)和低速(Low-Speed)外设通讯。SL811HS可以与微处理器、微控制器和DSP无缝连接,并可直接连到诸如ISA,PCMCIA等一些总线上,图1是SL811HS的结构框图。SL811HS提供一个长度为256 B内部RAM空间,该空间的前16 B分配给控制寄存器使用,后面的则作为数据缓冲区(最大240 B)。


3 USB协议栈的基本知识

3.1 USB设备的拓扑

USB的拓扑结构像金字塔,位于塔尖的是根集线器(Root Hub),根集线器是系统中所有USB端口的起点,根集线器提供了一定数量的USB端口,USB设备和附加的集线器可以连接到那里。

3.2 USB主机驱动框架

主机与外设之间的信息流与互连关系如图2所示,主机与设备都被划分成不同的层次。主机上黑实的箭头是实际的数据流向,设备上对应的接口是基于不同实现的。在主机与设备之间的所有通信最终都是通过USB的电缆进行,然而,在上层的水平层之间是一种逻辑的对应关系,其最终的通信还必须是通过黑实箭头标示的方向。这个结构与TCP/IP协议栈的结构类似,因此也可以用USB协议栈来形象的描述USB主机驱动程序。

4 USB协议栈的实现

4.1协议栈的兼容性

为了使协议栈便于移植,整个程序使用C语言编写,将一些诸如进程与互斥操作和数据格式的定义等与操作系统和硬件平台的相关部分从协议栈的核心部分分离开来。在移植到其他操作系统时尽量维持协议栈的核心部分不动或微小改动,只在与操作系统相关程序中添加相关代码即可。

4.2 USB-HOST协议栈的框架

基于图2的USB通信层次图,以对大容量存储设备的支持为例,USB-HOST协议栈的设计如图3所示。

文件系统层提供与用户的交互接口。该层提供对文件的一些基本操作,诸如创建文件、删除文件、读写文件等常用操作。为与Windows兼容,可以在该层实现FAT32,FATl6,NTFS等文件系统。

HDM为每个设备建立统一的数据结构和接口提供给文件系统对硬盘进行读写扇区操作。鉴于系统中可静会同时存在IDE硬盘,HDM对两种硬盘进行统一管理,对文件系统掩盖硬盘的细节,使得文件系统在对两种硬盘操作时没有什么不同。

USB设备驱动层目前只实现了大容量设备类驱动对于其他类型的设备类诸如音频设备类、通信设备类、显示设备类、人机接口设备类驱动在本层添加,对大容量存储设备类,USB规范针对不同的设备又选用不同的协议,如:RBC,SCSH-2,UFI,SFF-8020i,QIC-157等,对于USB硬盘,使用SCSI协议。设备类驱动的协议层将来自USB硬盘的读写操作翻译成SCSI命令,而传输层则将命令分解为一个个USB事务发送到USB总线驱动层。

总线驱动层实现USB总线协议,管理USB设备和USB事务管理以及总线枚举。总线驱动层先初始化所有的主控制器,每当成功检测和初始化一个主控制器,并给这个控制器建立一套虚拟根集线器。在初始化主控制器后,注册所有已支持的驱动。如果有支持的设备插入的话,就可以自动找到相应的驱动工作。

硬件抽象层对上层掩盖硬件细节,为了增加软件可移植性,与USB控制器芯片相关的部分放在该层的HCD部分中,在移植到其他平台上时,针对该平台使用的控制器芯片改动HCD的相关内容即可。此外,数据的最终传输也将在这里完成。

4.3 虚拟根集线器VRH(Virtual Root Hub)

一些USB主控制器会集成一些根集线器,但SI811HS并没有集成集线器的功能,为了配合USB的系统拓扑结构,用软件模拟一个根集线器,称为虚拟根集线器,该集线器只有一个端口。虚拟集线器并不能替代集线器的所有功能,他只是为了满足USB的拓扑结构,同时,提供根集线器的接口,方便驱动程序被移植到其他具有根集线器功能的嵌入式系统中去。

4.4 USB带宽

USB是以1 ms的时间片进行数据传输的,在这1 ms的时间片中能传输的数据长度就是USB的带宽,如何保证在1个时间片上有最大数据的传输,则是决定USB传输速率的关键。由于USB可能被多种设备共享,所以在时间片内可能会有多种类型的USB传输,中断和同步传输对实时性要求高,因此他们在带宽的分配上具有优先权,其次是控制传输,BULK优先权最低,使用剩下的带宽。SI811HS的SOF中断标志着一个时间片的开始。在大容量设备的驱动程序中,主要是控制传输和块(bulk)传输,SOF中断开始后,安排数据传输。此外,在块传输中,数据的完整性则相对重要的多,因此,驱动程序必须提供完善的错误检测和重发机制。对于大容量设备来说,传输数据量大,传输速度也是一个很重要的指标,USB 1.1支持的最大传输速率是1.5 MB/s,但由于协议的开销,数据的传输速率却往往达不到这个峰值速率。除了对代码进行优化外,充分利用带宽将是提高速率行之有效的方法。

4.5协议栈的关键进程

4.5.1 主进程

主进程是USB-HOST协议栈最开始的一个进程,除了初始化外,他的主要任务是监测设备。该进程平时处于锁死状态,当被激活时去检测虚拟集线器的端口状态。有设备插入时,中断处理函数改变端口状态并启动主进程,主进程对端口上的设备进行枚举,并为其分配资源。相反,当有设备拔除时,主进程则将与该设备相关的资源释放。

4.5.2 中断处理函数

中断处理函数也可以看成是一个优先级最高的进程,SL811HS的几个重要的中断是:插入/拔除中断(Insered/Removed)检测从设备的插入和拔除操作,SOF定时器中断(SOF Timer)启动一个时间片,传输完成中断(USB Done Interrupt)标志一次传输的完成,中断处理函数的流程如图4所示。

4.5.3软件狗进程

当有两个中断同时到达时,处理器可能会丢失掉一个中断没有处理,可以设置一个软件狗进程,定时执行中断处理函数。当有丢失的中断时,软件狗会将这个中断处理掉。

5 结 语

本文主要讨论了嵌入式系统中USB-HOST协议栈的设计思路,整个软件基于DSPBIOS系统在CCS的编译环境下调试通过,经过测试,运行稳定。软件的编写采用移植性好的C语言编写,并将与平台相关的部分代码与核心代码分开以增加软件的可移植性。此外,为软件的功能的升级也预留了接口。

如今,随着移动电子产品的大量出现,设备之间直接通信的需求也越来越大,USB占据了嵌人式设备与其他设备之间通信的主要角色。角色也在不停地变化,在这次传输中可能是主机,下次传输就有可能扮演从机的角色,OTG规范在这种需求下诞生,符合USB OTG的设备,既可以作为Host,也可以作为外设来与另一个OTG设备直接实现设备到设备的通信。可预见的将来,嵌入式USB系统的发展趋势将是USB OTG。

关键字:驱动  代码  兼容  频率 引用地址:嵌入式系统中USB-HOST协议栈的设计

上一篇:使用图形化的开发环境——LabView开发嵌入式系统
下一篇:基于μC/OS-II嵌入式系统的低功耗开发

推荐阅读最新更新时间:2024-05-02 20:36

Atmega48 eeprom调试代码
代码很简单如下: #include avrio.h #include avrinterrupt.h #include avreeprom.h #include util/delay.h #include math.h #include string.h #include stdio.h #include stdlib.h int main(void) { uint8_t Edata=0; uint16_t t = 0x19F; //eeprom_write_byte((uint8_t*) t,0x55); Edata=eeprom_read_byte ((uint8_t*) t );
[单片机]
Atmega48 eeprom调试<font color='red'>代码</font>
揭秘国内显示驱动芯片封测市场隐形冠军:汇成股份是怎样赢得全球市场?
近年来,随着京东方、TCL华星等面板厂商的强势崛起,在破除“少屏”之时,也带动了国内面板配套产业发展,包括集创北方、中颖电子、韦尔股份、晶门科技等显示驱动芯片厂商,中芯国际、晶合集成在内的晶圆代工厂以及汇成股份、厦门通富、颀中科技等封测厂商都得到快速发展,市场份额迅速提升。 在众多显示产业链公司当中,合肥新汇成微电子股份有限公司(简称“汇成股份”)的发展尤为突出,该公司成立六年以来做的唯独一件事,就是专注于显示驱动芯片封测领域。 据业内人士透露,汇成股份在国内显示驱动芯片封测领域处于绝对领先地位,公司核心技术已达到国际先进水平。该公司于2020年所封测显示驱动芯片出货量在全球市占率约为5.01%,排行第三;在中国大陆市占率约为
[手机便携]
服务机器人领域所需的各类零部件-②机器人关联零件、装置等:顺畅、精准的关节驱动
实现服务的顺畅、精准驱动的间接驱动的机制。 日本电产集团持有运用滑环和电位计等顺畅地控制服务机器人的关节和旋转部的技术。 例如,物流搬运机器人在使用上要求365天每天24小时运转,也有像看护用机器人和动力辅助服一样,必须具备非常坚固的结构和较高可靠性的机器人。 这些机器人的关节部和旋转部所用到的导线由于反复弯曲有造成断线的危险。 并且,为了确保精准的运转,需要对关节和旋转部进行精密的传感和控制。 滑环 进行旋转部和传递的滑环 通常,用于旋转部和关节的导线会在轴上卷绕或是扭曲,而反复的扭曲造成的金属疲劳有可能导致断线。若在旋转部、关节部使用日本电产伺服公司的滑环,可以防止由于卷绕、扭曲、弯曲造成的断线。并且,不仅可以从供电
[机器人]
引脚兼容的高输入阻抗ADC系列简化驱动并拓宽ADC驱动器选择
自动测试设备、机器自动化、工业和医疗仪器仪表等应用需要精密数据采集系统,以便准确分析并数字化物理或模拟信息。系统设计师为了实现高分辨率精密逐次逼近型(SAR) ADC数据手册中列示的最高性能,常常不得不使用专用高功率、高速放大器来驱动其精密应用中的传统型开关电容SAR ADC输入。这是设计精密数据采集信号链时遇到的常见难点,本文介绍的引脚兼容AD4000ADC系列可解决此问题。该系列16/18/20位精密SAR ADC采用ADI公司高级技术和先进架构设计而成,集成了多种简单易用的特性,提供很多系统级优势,有助于降低信号链功耗和复杂性,提高通道密度,而性能并无明显下降。高阻态模式、低输入电流和长采集阶段的独特结合,降低了ADC驱动挑
[模拟电子]
引脚<font color='red'>兼容</font>的高输入阻抗ADC系列简化<font color='red'>驱动</font>并拓宽ADC<font color='red'>驱动</font>器选择
自动化和智能驱动技术成为“工业4.0”关键点
在“ 工业4.0 ”的大趋势下,智能制造成为时代主旋律和制造业的主攻方向。而制造业中,自动化、智能驱动技术将发挥着越来越重要的作用,这是一场围绕可持续生产力效率提高的创新挑战,从而为传统产业的升级改造和新兴产业的长远发展提供不竭动力。   “工业4.0”的基本概念,即模块化信息物理系统,该系统可以在配合操作员的同时实现彼此之间的实时通信,自动作出判断,从而按需调整生产过程。     为了设计出理想的新产品,制造商在选择相关的运行控制设备时需要综合考虑以下几点:   逻辑控制已无法满足需求 几年前,业界仍普遍使用可编程逻辑控制器(PLC)来控制机器设备。通常情况下,PLC会连接一个独立的运行控制器,而该控制器通过现场总线来调整和
[嵌入式]
测试二极管反向恢复特性的分析仪
测试二极管的反向恢复特性一般都需要复杂的测试设备。必须能够建立正向导通条件、正向闭锁状态、及两者间的过渡。还需要有一种从所得到的波形中提取特征的手段。总而言之,这并不是一项很简单的例行操,作应由专业人员来完成这项复杂的工作。这个事实说明了工程师们为什么通常都会依赖于公布的数据。 但如果测试比较简单,亲自动手来检查反向恢复时间是有好处的。这种设置可以让你在相同的条件和没有这种规范的测试设备下比较不同厂商的设备,如驱动集成电路的衬底二极管,齐纳二极管及标准整流器等。(由于测试参数有很多组合,直接比较数据不太现实。)切记,反向恢复时间不一定越短越好。速度较慢的二极管也很有用。速度较慢的二极管可以生成较短的停滞时间,提高转换器的效率,
[应用]
盲配同轴新品 | 直接对插即用,适配广泛频率
盲配同轴新品 | 直接对插即用,适配广泛频率 随着未来电路板设计越来越趋于复杂化和高密度化,高性能、耐用且易安装的盲配连接器成为消费电子市场的热门选择。 为了克服在操作受限的狭窄空间内装入电子硬件的挑战,确保在电路板或模块之间获得恒定均匀的信号,TE Connectivity(以下简称“TE”)推出最新盲配同轴产品系列。 盲配同轴产品系列 该新品系列采用“直接对插即用”的设计,大大降低了安装难度,帮助技术人员提升组装效率。同时,新品支持 1.60 Ghz 至 67 Ghz 的各种 SMP、SMPM、多端口同轴、大规模同轴和测试探头应用,提供准确的测量和精确的故障排除。 产品优势 ✓组装效率高:采用
[电源管理]
盲配同轴新品 | 直接对插即用,适配广泛<font color='red'>频率</font>
基于MCS-51系列单片机测量频率的设计与实现
对于周期波频率的测量方法很多,但大多是通过测量间接计算频率。本文介绍了用目前应用比较广泛的MCS-51系列单片机对周期波频率进行测量,并通过LED以数字形式直观地示出频率,实现测量的智能化,省去间接对频率计算的麻烦与错误。文章对其测量原理,设计和实现作了说明,介绍了主要程序,并进行了误差分析。 目前单片机广泛应用到国民经济建设和日常生活的许多领域,成为测控技术现代化不可缺少的重要工具。而本文适应这一发展趋势,把MCS-51系列单片机应用于对周期波频率的测量,并通过LED显示器自动显示出来,这对于频率的测量带来了极大的方便。 设计思想 利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号
[单片机]
基于MCS-51系列单片机测量<font color='red'>频率</font>的设计与实现
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved