嵌入式系统中usb主机控制器的设计

嵌入式系统中usb主机控制器的设计

ID:23932241

大小:55.00 KB

页数:7页

时间:2018-11-11

嵌入式系统中usb主机控制器的设计_第1页
嵌入式系统中usb主机控制器的设计_第2页
嵌入式系统中usb主机控制器的设计_第3页
嵌入式系统中usb主机控制器的设计_第4页
嵌入式系统中usb主机控制器的设计_第5页
资源描述:

《嵌入式系统中usb主机控制器的设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式系统中USB主机控制器的设计

2、第1在基于PC的系统中,USB操作一般需要三种部件,分别是通常作为PCI子系统的主机控制器、USB堆栈以及USB类驱动器。主机控制器是集成主板芯片组的一部分,USB堆栈则包含主板芯片及通用主机控制器接口(UCHI)和开放主机控制器接口(OHCI)驱动程序以及USB驱动程序(usbd.sys),在PC上实现USB需要上述领域的专门技术。在嵌入式USB系统中,其主要组成部分与PC系统类似,如嵌入式主机控制器芯片、带OHCI堆栈的实时操作系统(RTOS)以及专用驱动程序。现有很多可供选择的主机控制器芯片,有些带有处理器,有些则是基

3、于寄存器的,对器件的选择将影响到其下面两层。很多公司都可提供RTOS,最好选择一个能配合在一起工作的处理器和RTOS,然后在其上添加应用代码。如果没有真正的RTOS,某些控制器则用一个“框架”,可在其上构造应用程序。我们后面将介绍这种框架以及如何在上面构建应用。在PC上实现USB具有非常丰富的可用资源,包括高达512MB的存储器、20-60GB的硬盘以及2GHz或更快的微处理器。此外,多年来e。*值:特殊请求字段。*索引:特殊请求字段。*长度:相关数据缓冲器的大小载入用于URB的设置信息之后,便可将其它设备信息装入URB,如地址、速度、终点数以及传输方向,还有

4、表示传输类型的字节和“回调”函数指示器。利用回调函数可以在框架内进行某些并行操作,也可在硬件处理USB操作的同时执行其它任务。TD需要USB传输类型信息,这样框架就可以安排正确的传输类型时序。此外,与批量或中断传输相反,框架一次只允许进行一个控制传输操作。装入所有URB信息之后,URB便被提交给TD处理器。TD处理器是框架的组成部分,它与硬件直接通信,处理有关传输的低级详细资料。TD完成任务后,TD处理器将程序控制权由原始调用指定的“回调”函数转给send_request()函数(图1)。图2显示了调用带回调函数的send_request()。这里我们使用控制

5、传输以获得某键盘的国家代码,在get_country_code()函数中可看到send_request()的调用,注意send_request()调用中的最后一个参数是回调函数。在TD处理器确定硬件完成处理后执行该函数,此时回调函数将获得返回的数据缓冲器,将其与HID描述器结构相匹配,并存取与国家代码对应的字节,然后URB被释放。EZ-Host框架值得注意的最后一个特点是设备驱动程序的使用。在执行过程中,设备驱动程序将执行三个功能,即停止、启动和运行。启动某设备驱动程序便是运行它的run()函数,该函数对某些数值进行初始化,并分配一个用于数据传输的重复出现的U

6、RB。对于鼠标或键盘,该URB将每隔10毫秒发生一次。数据传输完成后,TD处理器将控制转交给interrupt_in_plete()函数,通过检查URB可得知数据是来自键盘还是来自鼠标,该回调函数负责将键盘或鼠标数据发送至应用层(图3)。当某驱动程序停止时,其重复出现的URB将从TD列表中除去并释放出空间,然后传送一个消息至应用层,去掉相关设备。如果停止的驱动程序相关设备是集线器,则与该集线器相连的所有设备也要去除,且驱动程序同时停止。当然,如果去除的设备中还有集线器,则与该集线器相连的设备将以同样方式去除。500)this.style.ouseg(this)

7、">在驱动程序运行期间,系统可执行各种任务。对于集线器设备驱动程序,要检查集线器的端口,以了解是否有设备插入和去除。这里键盘和鼠标驱动程序运行函数不起任何作用。框架数据流框架代码执行过程是这样的:上电复位、微处理器对所有寄存器和计数器以及设备结构进行初始化,然后进入如下的循环:1.检查主机USB端口是否存在状态改变(设备插入或去除)。2.检查TD处理器,并获得两个SIE上运行的所有TD状态信息。3.查看运行设备驱动程序列表并执行每个程序的运行函数。检查主机USB端口以了解状态变化需要检查变量的改变,如果发生变化,可通过端口变化中断处理程序设定变量。如果端口发生

8、改变,将执行枚举代码进行处理。通过集线器至主机的中断传输完成相连集线器变化值检查,如果发生设备添加或去除,它们将像上面那样枚举出来。发现新设备时,需要找到设备驱动程序然后装入。根据设备寻找设备驱动程序的方法有很多种,框架代码将首先尝试将某驱动程序与某设备的供应商ID以及产品ID进行匹配,但只有存在特定的制造商且特定设备在特定驱动程序中运行这种方法才有效。如果没有实现匹配,框架代码会尝试对设备的种类和子类进行匹配,这可以利用更普通的驱动程序与设备匹配。设备插入和去除检查还有两项额外的任务。如果连接的设备是集线器,则必须对其端口进行检查,以查看它们是否带有设备。如

9、果去除的设备是集线器,那么所有与之连接

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。