USB嵌入式主机控制器设计
扫描二维码
随时随地手机看文章
介绍 过去usb仅应用于个人计算机其在嵌入式系统领域的巨大潜力尚未开发usb在嵌入式系统中的应用包括kvm开关数码相机pda打印机机顶盒及移动电话。 什么是嵌入式系统嵌入式系统被定义为硬件和固件--独立的或作为更大型系统的一部分--通常带有某种操作系统操作系统可以是windows cevxworks或由“自编代码”构成的更简单系统根据上述定义可以认为任何带有处理器的电子装置均可以作为usb嵌入式主机。 嵌入式系统的设计挑战 在基于pc的系统中三种主要部件需要usb操作它们是通常作为pci子系统部分的主机控制器usb堆栈以及usb类驱动器。 主机控制器是集成主板芯片组的部分usb堆栈则包含主板芯片以及uchi通用主机控制器接口ohci开放主机控制器接口的驱动程序以及usb驱动程序(usbd.sys)实现基于pc的usb需要以上所有领域的专门技术。 在usb嵌入式系统中其主要组成部分与pc系统类似这些组成部分为嵌入式主机控制器芯片带ohci堆栈的实时操作系统(rtos)以及专用驱动程序。 现有很多可供选择的主机控制器芯片有些带有处理器有些则以寄存器为基础此处组成部分设备的选择将会影响如下两个层面。 很多公司可提供rtos最好选择一个处理器和与之配合工作的rtos然后在其上添加应用代码如果没有真正的rtos某些控制器带有可构造应用的“框架”以下介绍这种框架的示例以及如何在其上构造应用。 在pc上实现usb时pc具有丰富的可用资源其中包括高达512mb字节的存储器20-60gb的硬盘以及2ghz或速度更快的微处理器此外五年多来windowsmac os以及unix等操作系统一直支持usb世界上有数以百计或数以千计的工程师在设计基于pc的usb应用程序和设备驱动程序。 而另一方面嵌入式系统通常只有不超过64k的存储器以及运行于12mhz - 33mhz范围内的处理器没有硬盘由于usb对于嵌入式系统相对较新因此可能只有为数不多的工程师拥有这方面的经验。 赛普拉斯ez-host控制器 赛普拉斯ez-host器件拥有两个“串行接口引擎”每个引擎包含两个usb端口因此无需使用额外的硬件ez-host便可控制四个usb设备。 ez-host器件具有固件结构可管理大多数usb主机的详细要求该结构的另一个特点是支持网络集线器键盘/集线器组合部件常常出现这样的问题是带有集线器的键盘还是带有键盘的集线器答案是带有键盘的集线器因此要了解位于集线器后的键盘需要提供集线器支持幸好框架代码包含对集线器的支持。 以下章节将介绍框架和某些框架操作示例以及如何将其与应用代码接口。 框架概述 ez-host框架包含所有实现usb主机功能所必需的固件其中包含任务时序设备列举带宽分配以及功率管理。 另一方面应用程序是固件控制专用usb设备并将其数据传递给最终应用。 框架的核心是td处理器td处理器的运作基于称作“任务描述器”(td)的数据结构使用其信息与usb硬件尤其是“串行接口引擎”(sie)进行通信需要注意的是每个sie控制两个端口而且每个sie具有一个td处理器。 ez-host框架使用了多种数据结构实现来其操作这些结构包括td和usb“请求模块”(urb)。 任务描述器是传递给硬件的数据结构包含特定硬件接口如sie的数据字段端口编号终点数收发数据缓冲器长度数据包id编码以及urb结构指示器。 urb包含td所需的逻辑信息该逻辑信息包括usb设备缓冲器安装软件包以及usb设备结构指示器。 在进行usb事务处理时urb含有事务处理分配及其装入的数据结构而后urb提交给td处理器td处理器将urb加入td列表空闲时td处理器处理td列表安排传输时序并将设定好的td传送给ez-host硬件进行处理。 图1所示为基本的usb控制传输该图表为td处理器处理usb传输的示例
图1usb控制传输 为了执行控制转移可以使用框架函数send_request( )send_request( )函数将分配一个传递给td处理器的urb结构。 urb应该包含有关设置状态的信息并且借助参数传递给send_request( )urb需要如下信息。 请求类型 - 表示usb请求类型的字节该字节包含表示传输方向传输类型以及传输接受者的位 请求 - 11种标准usb请求之一这些请求包括 clear_f