微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 浅谈嵌入式系统中USB-HOST协议栈设计

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

时间:06-23 来源:互联网 点击:

B的拓扑结构,同时,提供根集线器的接口,方便驱动程序被移植到其他具有根集线器功能的嵌入式系统中去。

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。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top