嵌入式实时系统的优盘启动技术_第1页
嵌入式实时系统的优盘启动技术_第2页
嵌入式实时系统的优盘启动技术_第3页
嵌入式实时系统的优盘启动技术_第4页
嵌入式实时系统的优盘启动技术_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要 分析嵌入式实时系统从优盘启动的必要性,给出基于MPC860和SL811HS的嵌入式系统主机端的硬件结构;分析为支持优盘启动,嵌入式系统主机端需要支持的usB驱动协议栈;设计相应的驱动程序和映像文件加载程序;探讨基于vxworks设计的嵌入式实时系统从优盘启动的可行性。关键词 USB VxWorks 启动 优盘 引 言    目前基于VxWorks设计的嵌入式实时系统应用非常广泛。嵌入式实时系统的启动方式多种多样,WindRiver公司提供的参考BSP(Board support Package)包中就提供了几种启动方法。另外在参考文献2中,作者也提出了几种基

2、于VxWorks的嵌入式系统的启动方法。这些方法可根据具体的应用需求,适当选取。笔者在开发CableModem时也都曾实现过这些方法。这些方法存在的共同问题是:虽然能更新板载程序存储器中的映像文件,但由于程序存储器一旦设计后就无法再扩展其存储空间;而在实际应用中,由于嵌入式系统功能的增强,系统映像文件的体积会不断增大,会出现超过目标板的程序存储空间的问题,从而使得新的映像文件无法烧录到目标板中。    随着USB技术的发展,优盘在PC机系统上已得到广泛的应用,基本上取代了软盘,PC机系统可以实现从优盘启动。由于优盘性能稳定,体积小巧,访问速度快,因此它也非常适合作

3、为嵌入式实时系统的存储设备。这为嵌入式实时系统的启动提供了一种崭新的思路,即从优盘启动。这种方法对嵌入式实时系统板上的程序存储空间要求不高,只要在Flash中存储嵌入式实时系统的Bootrom程序即可,将系统的映像文件放在优盘上,实现实时操作系统从优盘加载。本文给出了实现嵌入式实时系统优盘启动的嵌入式主机硬件结构、软件协议栈以及主要程序流程,探讨了实现嵌入式实时系统从优盘启动的可行性。1 嵌入式USB主控制器的硬件结构及驱动    嵌入式系统是软硬件紧密结合的系统。要实现从优盘启动,硬件上必须在嵌入式微处理器外围添加USBHOST主控制器;在软件上必须设计主控制器

4、驱动程序 (HCD)、USB驱动程序、USB Client驱动程序以及应用程序。1.1 嵌入式USB主机硬件结构    嵌入式USB主机硬件结构比较简单,只是在嵌入式微处理器外部加上USB主控芯片即可。在本项目中,嵌入式微处理器采用的是Motorola公司的MPC860T,USB主控制芯片采用的是SL811HS芯片。SL81lHS芯片是Cypress公司生产的、可支持全速数据传输的USB控制芯片,芯片内含USB主,主/从控制器,支持全速(full speed)/低速(low speed)数据传输,并能自动识别全速或低速设备。SL811HS所提供的接口遵从USBl1

5、标准。关于SL811HS更详细的使用方法请见参考文献3。使用SL811HS作为嵌入式USB主机控制器的系统硬件结构如图1所示。1.2 嵌入式USB主机上的软件结构    从参考文献4可知,嵌入式主机要实现对其USB外设操作,必须有图2所示的3个软件结构层次:USB主控制器驱动器(HCD)、USB主驱动器(USBD)、USB没备驱动器。    在协议栈的最底部是USB主控制器USB HC(USBHost Controller),这是主系统中控制每一个USB设备的硬件部分。口前主要有两大类USB主控制器:一种是通用主控制器接口UHCI(U

6、niversal Host Controller Inter-face),另一种是开放主控制器接口OHCI(Open HostController Interface)。硬件厂商一般根据这两个规范设计USB主控制器。对于每一类型的主控制器都有一个与硬件独立的USB主控制器驱动器HCD(Host ControllerDriver)。WindRiver公司提供了两类驱动:usbHedUhciLib(UHCl主控制器库)和usbHcdOhciLib(OHCI主控制器库)。    USB主驱动器USBD(USB host Driver)和HCD之间的接口允许一个或超过一个

7、的底层主控制器,而且WindRiver公司的USBD能够同时连接多个USB HCD。这样的设计特点可以使开发者建立复杂的USB系统。USBD是在HCD之上的与硬件独立的模块。USBD管理每一个与主机相连的USBD设备,向更高层次提供了可与USBD设备通信的路径。它还负责自动处理USBD电力管理以及USBD带宽管理;而且,USBD还管理USBHub。Hub能否正确工作,是对USBD进行评价的标准之一,因此WindRiver公司的USBD设计者要使USBD透明地实现Huh的功能。这意味着USBD还能处理USBHub和设备的动态插拔。    USB客户模块在USBD主驱

8、动协议栈的顶端。USB类驱动(USB Class Driver)是Client模块的典型例子。USBD类驱动负责管理连接到USBD上的不同类型的设备,它们依靠USBD提供与每个设备的通信路径。USBClient模块的其他例子就是那些利用USBD与USB设备通信的应用程序。2 嵌入式实时系统优盘启动软件程序设计    为实现对优盘的操作,在基于VxWorks设计的嵌入式实时系统中,需要设计的程序包括:USB主控制器驱动器、USBD主驱动器、USB块存储设备驱动程序、文件系统的安装以及应用程序通过文件系统读写优盘设备程序等,如图3所示。故要实现从优盘启动,需要在boo

9、tConfigc文件中的usrRoot函数巾添加4个函数。(1)初始化USB主控制器的函数    初始化HCD(USB Host Controler Driver)函数,即初始化SL81lHS并将其连接到指定总线上:LOCAL int fn-cAttach(pHRB_ATTACH pHrb)。    该函数词用SL811Init()初始化SL811控制芯片。执行函数taskSpawn("tSl81lint",0,0,0x4000,(FUNCPTR)intThread,(int)pHost,0,0,0,0,0,0。0

10、,0,O),创建intThread任务对发生的中断作出处理。    这里的intTbaead调用OSS_SEM_TAKE(pHost->in-tPending,interval)阻塞,与中断服务程序intHandle同步。    调用函数processSl811hInterrupt()处理硬件中断,读取中断状态寄存器判断中断类型。    调用UHC_INT_CONNECT(pHost,intHandler,pHost,s)函数连接SL811主控制器芯片中断。UHC_INT_CONNECT是一个宏定义

11、。        函数intHandler完成对中断的处理,调用函数OSS_SEM_GIVE(pHost->imPending),释放用于中断和任务之间同步的二进制信号量。(2)初始化USBD的函数    函数usbdInitialize()初始化内部USBD数据结构,并依次调用其他USB驱动栈模块的入口。    函数usbdlnitialize()调用usbdHcdAttach(execFunc,s1811IOCfg,pToken)把HCD连接到USBD上。这里的ex

12、ecFunc就是函数usbHcdSl811hExee()。    函数usbdInitialize()调用USBEnumerate(USBD_CLIENT_HANDLE clientHandle,FILE*fout)列举所有连接到系统上的USB主控制器、Hub和USB设备。(3)初始化USB存储设备的函数    函数usbBulkDevInit()完成USB盘的初始化并安装DOS文件系统。    函数usbBulkDevlnit调用函数usbdClientRegister("BULK_CLASS

13、",&usbdHandle)及函数usbdDynamicAt-tachRegister(usbdHandle,USB_CLASS_MASS_STORAGE,USB_SUBCLASS_SCSLCOMMAND_SET,USB_INTERFACE_PROTOCOL_BULK_ONLY,usbBulkDc-vAttachCallback),建立同USB的连接,注册回调例程。    函数usbBulkDevlnit调用函数OSS_THREAI)_CRE-ATE(bulkClientThread,(pVOID) fout,OSS_PRIORITYINTERR

14、UPT,"tBulkClnt",bulkTaskId),创建一个任务,管理优盘的插入和移出。    其中bulkCliemThread例程调用pBulkBlkDev=(BLK_DEV*)usbBulkBlkDevCreate (bulkNodeld,NULL,NULL,USB_SCSI_FLAG_READ_WRITEl0);安装USB设备。    调用pBulkDosVol=dosFsDevInit("ud0",pButkBlkDev,NULL);安装DOS文件系统。(4)从优盘加载映像文件的函

15、数    设计USBDLoad(),实现映像文件VxWorks从优盘设备加载。USBDLoad()函数主要包括以下语句:        修改bootConfigc文件中的bootLoad函数,加入对从优盘启动的支持。主要加入以下语句:        重新编译、链接生成新的bootromhex,烧录到板子上的Flash中,将VxWorks映像文件拷贝到优盘上,将优盘插入到嵌入式主机的USB接口上。在启动的过程中,系统会自动装载优盘的VxWorks系统映像文件,实现基于VxWorks的嵌入式实时系统优盘启动。    copy"unixHost:usrwindtargetconfigbspname vxWorks", "ud0vxWorks"3 总 结    在基于MPC860和VxWorks设计的嵌入式实验板上可实现嵌入式实时系统从优盘的启

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论