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

发布者:shengju最新更新时间: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协议栈的设计

上一篇:嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实现
下一篇:基于EP7312的新型嵌入式系统的实现

推荐阅读最新更新时间:2024-03-30 21:23

跟名家学电磁兼容——标准、设计、故障分析
    中心议题: 新老基础性抗扰度标准差异性的解读 电子、电气产品EMC的工程设计 电磁骚扰问题的故障点定位分析 电磁兼容与EMI抑制器件技术     电子产品电磁兼容性指标是否合格,直接关系到产品能否上市。随着芯片速率和集成度的不断提高,高密度电子组装技术的广泛采用,电子产品 “轻、薄、短、小”和高功能化发展使工程师的电磁兼容设计面临巨大的挑战。     本期专题邀请到EMC/EMI领域的资深专家,从前期需要了解的电磁兼容国家新老标准的差异化解读、电子产品EMC的工程设计、关键电子元件电磁兼容性能提升,到后期产品认证面临电磁骚扰问题的故障点定位分析,系统的帮助工程师快速完成从电磁兼容
[电源管理]
跟名家学电磁<font color='red'>兼容</font>——标准、设计、故障分析
STM32_IAP详解(有代码,有上位机)
Iap,全名为in applacation programming,即在应用编程,与之相对应的叫做isp,in system programming,在系统编程,两者的不同是isp需要依靠烧写器在单片机复位离线的情况下编程,需要人工的干预,而iap则是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。在工程应用中经常会出现我们的产品被安装在某个特定的机械结构中,更新程序的时候拆机很不方便,使用iap技术能很好地降低工作量. 实现iap有两个很重要的前提,首先,单片机程序能对自身的内部flash进行擦写,第二,单片机要有能够和外部
[单片机]
STM32_IAP详解(有<font color='red'>代码</font>,有上位机)
利用定时器产生方波并通过中断调节方波频率
要求:从P1^0口输出50Hz的方波,并通过S1,S2调整方波的频率。按下S1 频率以1Hz为单位增大,按下S2 频率以1Hz为单位减小。 (代码仅进行过初步验证,可能存在一定的BUG,谨慎使用) #include reg52.h #define uchar unsigned char #define uint unsigned int sbit Iput = P1^0; //------------------------变量区------------------------ float Temp = 50;//初始频率 Hz uint F ;//周期 float a=0;//中间变量 //-
[单片机]
利用定时器产生方波并通过中断调节方波<font color='red'>频率</font>
PowerintLNK457DG高效3.8W可调光LED驱动方案(DER301)
Powerint公司的高效3.8W可调光PFC LED驱动器采用LinkSwitchTM-PL系列的LNK457DG,采用非绝缘的降压拓扑,输入电压190VAC到265VAC,频率47 Hz到63 Hz,230VAC时的效率大于83.5%,PF大于0.91,THD小于25%,起动时间小于300ms,适用于住宅区照明.本文介绍了3.8W可调光LED驱动器主要特性和指标,电路图,材料清单和PCB布局图. This document is an engineering report describing a non-isolated dimmable LED driver (power supply) utilizing a LNK45
[电源管理]
PowerintLNK457DG高效3.8W可调光LED<font color='red'>驱动</font>方案(DER301)
网络安全专家指出,互联设备需要电子商务级的安全标准
2016年7月21日,北京讯 据众多知名技术安全领域专家表示,数以亿计的互联设备正面临潜在的安全风险,除非对安全要求敏感的软件能实现电子商务级的安全标准。 包括ARM, Intercede, Solacia 和 赛门铁克在内的公司纷纷展开合作,评估数以亿计来自不同领域连接设备的安全挑战,包括诸如工业、家庭、健康服务和运输领域。最后得出结论:任何系统都有可能被侵入,除非能建立系统级的信任根(root of trust)。 为了应对该风险,企业达成开放信任协议(OTrP, Open Trust Protocol)合作,利用在大型银行和敏感数据业务在客户端(如手机、平板等)应用中所使用的成熟技术,将安全架构与受信任代码管理(truste
[安防电子]
LabVIEW代码中常见的错误
发现了程序的问题再回头去调试,在查找程序错误时就不可避免地要花大量时间。要调高开发效率,最好是在编写代码时就避免一些常见的低级错误,这样可以节约大量的调试时间。 有些编程错误差不多是每个 LabVIEW 程序员都曾遇到过的。在编写相关代码的时候,对这些问题多留心一下,就可以大大减少调试时间。 1. 数值溢出 图1:数值溢出错误 图1 中的 VI 只做了一个简单乘法 300*300 ,不加思索就应该知道答案是 90000,但程序中乘法节点给出的结果却是 24464。乘法节点是不会错的,错误是由于程序中使用的数据类型是 I16。I16 能表示的最大数目只有32767,所以在乘法计算中出现了溢出。 避免此类错误的方法是,在
[测试测量]
MIUI代码泄露新机:或是Redmi K40
1月2日消息,外媒在MIUI代码中发现了一款神秘新机。 该机搭载了高通骁龙7系列5G芯片,这颗高通骁龙7系列芯片尚未发布,外媒猜测该机可能是Redmi K40。 报道指出,MIUI 12代码中出现的新机使用了高通SM7350芯片,该芯片是高通骁龙765G的继任者,定位是中高端。 考虑到2019年年底推出的Redmi K30 5G使用了骁龙765G芯片,SM7350芯片自然会被联想到被应用在Redmi K40上,而Redmi K40 Pro搭载高通骁龙888旗舰处理器。 这样的产品布局符合Redmi K系列以往的产品策略,即“标准版用骁龙7系,Pro版用骁龙8系”。 目前尚不确定Redmi K40系列的更多细节,此前曝光的真
[手机便携]
MIUI<font color='red'>代码</font>泄露新机:或是Redmi K40
背光驱动电路的选择策略和应用
越来越多的便携式消费电子产品配备了彩色显示屏,例如手机、数码相机、PDA、MP3、PMP播放器等,其中手机又占据了这个市场的绝大部分份额,从而导致了这两年来中小尺寸显示屏产业链的飞速发展。根据应用的不同,显示屏会有不同的种类,例如TFT-LCD、CSTN-LCD以及OLED显示屏,从市场的应用看,OLED显示屏只是在折叠式手机的副屏以及MP3的市场上占有一定的份额,而市场的主流依然是TFT和CSTN,这两种类型的LCD屏占据了现有的中小尺寸显示屏出货量的绝大部分。本文重点就中小尺寸的LCD显示屏的背光驱动解决方案作一个分析介绍。 背光驱动的技术分析 LCD显示屏自身并不发光,为了可以清楚的看到LCD显示屏的内容,需要一定的
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved