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

发布者:EtherealEssence最新更新时间: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上移植的实现
下一篇:基于μC/OS-II嵌入式系统的低功耗开发

推荐阅读最新更新时间:2024-05-13 18:36

奥迪电机驱动器(MCU)系统框图、芯片、功能拆解
新能源 电机驱动器 ( MCU )系统框图, 芯片 ,功能 拆解 E-tron的逆变器的电压覆盖范围为150V-460V,10 秒持续的最大 电流 为 530A,持续电流最大为 260A,功率密度为30kVA/L,和 特斯拉 的不同,采用了三个 IGBT 功率模块 。 电机控制 器的系统框图更新如下: 注意,图片中其他运放和 电源 , 通信 芯片等非E-tron所用,仅做示意 控制板上,E-tron采用了1片 Altera 的MAXII系列的 CPLD 芯片,1片旋变解码芯片,1片 英飞凌 的TriCore AURIX 32位 DSP 芯片,1片 BOSCH 的 电源管理 芯片; 附一张FOC的控制图,更好理
[汽车电子]
奥迪电机<font color='red'>驱动</font>器(MCU)系统框图、芯片、功能拆解
Vishay新款2.5 A IGBT和MOSFET驱动器,让工作效率更上一层楼
器件最高输出电流2.5 A,适用于电机驱动、可替代能源和其他高工作电压的应用 日前,Vishay Intertechnology, Inc.宣布,推出新的2.5 A IGBT和MOSFET驱动器---VOD3120A,扩展其光电产品组合。Vishay Semiconductors VOD3120A采用DIP-8和SMD-8封装,低压降输出电流损耗仅为3.5 mA,可用于提高逆变器级工作效率。 日前发布的光耦采用CMOS技术,含有集成电路与轨到轨输出级光学耦合的AIGaAs LED,为门控设备提供所需驱动电压。VOD3120电压和电流使其成为直接驱动1200 V / 100 A额定值IGBT的理想选择。 器件高隔离
[电源管理]
Vishay新款2.5 A IGBT和MOSFET<font color='red'>驱动</font>器,让工作效率更上一层楼
超高亮LED的驱动电路设计方案
引言   发光二极管(Light Emitting Diode,LED)发明于20世纪60年代,它是利用半导体材料中的电子和空穴相互结合并释放出能量,使得能量带(Energy Gat,)位阶改变,以发光显示其所释放出的能量。LED具有体积小、寿命长、驱动电压低、耗电量低、反应速率快、耐震性佳等优点,被广泛应用于信号指示、数码显示等领域。随着技术的不断进步,超高亮LED的研制得到了成功,尤其是白光LED的研制成功,使得它越来越多地用在彩灯装饰、甚至照明领域。 1 超高亮LED的特点   与传统的照明灯相比,超高亮LED具有如下优点:   1)寿命长,可靠耐用,维护费用极为低廉LED可连续使用105h,比普通白炽灯泡长100倍;   
[电源管理]
超高亮LED的<font color='red'>驱动</font>电路设计方案
经典MOS驱动
分享一个比较经典的MOS管驱动电路 问题提出: 现在的MOS驱动,有几个特别的需求: 1,低压应用 当使用5V电源,这时候如果使用传统的图腾柱结构,由于三极管的be有0.7V左右的压降,导致实际最终加在gate上的电压只有4.3V。这时候,我们选用标称gate电压4.5V的MOS管就存在一定的风险。 同样的问题也发生在使用3V或者其他低压电源的场合。 2,宽电压应用 输入电压并不是一个固定值,它会随着时间或者其他因素而变动。这个变动导致PWM电路提供给MOS管的驱动电压是不稳定的。 为了让MOS管在高gate电压下安全,很多MOS管内置了稳压管强行限制gate电压的幅值。在这种情况下,当提供的驱动电压超过稳压管的电压,
[电源管理]
经典MOS<font color='red'>驱动</font>
STC15F2K60S2串口通信程序代码
//********************************************** //STC15F2K60S2串口通信程序,将串口接受到的数据从串口发出去 //采用22.1184M晶振,波特率115200 //为方便大家调试,特附该程序的项目工程文件下载地址,下载打开即可调试下载到单片机 // //********************************************* #include stc15fxxxx.h //调用stc15f系列头文件,下载地址: http://pan.baidu.com/s/1eRUbjLS /*************常量定义************
[单片机]
STC15F2K60S2串口通信程序<font color='red'>代码</font>
基于DSP C54x的数字滤波器设计
前言 一个实际的应用系统中,总存在各种干扰。使用DSP进行数字信号处理时,可以从噪声中提取信号,即对一个具有噪声和信号的混合源进行采样,然后经过一个数字滤波器,滤除噪声,提取有用信号;数字滤波器是DSP最基本的应用领域,也是熟悉DSP应用的重要环节。在系统设计中,滤波器的好坏将直接影响系统的性能。 数字滤波器的基本理论和设计 对于数字滤波器的系统函数可以表示为: 可以直接写成表示输出与输入的关系,即常系数线性差分方程:以下是IIR滤波器的表达式 当全部 , 即系统函数和单位抽样响应,则系统是FIR。 其滤波结构图如图一所示——横向滤波结构 图一横向滤波器结构图 FIR滤波算法实际上是一种乘法累加运算。它不断输入样本,
[模拟电子]
LED恒流驱动芯片开关电源管理芯片PN8326介绍及封装
PN8326 LED恒流驱动芯片开关电源管理ic芯片应用方案 PN8326产品描述: PN8326包括高精度的恒流原边控制器及功率MOSFET,,专用于高可靠、隔离双绕组、极精简外围元器件的中小功率LED照明。该芯片工作在原边调整模式,可省略光耦、TL431;采用了快速DMOS自供电的专利技术可节省变压器辅助绕组和高压启动电阻。该芯片提供了极为全面的自恢复保护功能,包含逐周期过流保护、开环保护、过温保护、Rcs开/短路保护和LED开/短路保护等。内置高压启动电路和极低的芯片功耗有助于获取较高的工作效率。在恒流模式下,电流和输出功率可通过CS脚的Rs电阻进行调节。 PN8326产品特点: ■ 内置700V高雪崩能力的
[电源管理]
MathWorks发布 Simulink 代码生成工具
2012 年 4 月 25 日中国北京 – MathWorks今日宣布Simulink代码生成工具箱已通过Embedded Coder嵌入到Freescale的新款Motor Control Development Toolbox中。该工具箱包括 Simulink 电机控制模块块和代码生成模块,使汽车和工业控制工程师能够在符合 IEC 61508 (SIL3) 与 ISO 26262 (ASIL-D) 标准的系统中使用 Freescale 微处理器设计电机控制系统。 借助 Motor Control Development Toolbox,工程师可以设计电机控制算法,配置并生成所有 Freescale MPC5643L 或 PX
[单片机]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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