admin管理员组

文章数量:1568306

2024年3月27日发(作者:)

计算机光盘软件与应用 

工程技术 

Computer CD Software and Applications 2012年第l6期 

基于U盘升级在自动化测试系统中的研究及应用 

黄佳玉 

(电子科技大学广电信息学院,成都610054) 

摘要:以自动化测试系统为研究对象,针对目前自动化测试系统软件升级操作的难题,提出了基于u盘自动升级的 

自动化系统引导固件方案。该方案主要是利用了当前芯片成功和功能对的优势,已软件智能替代手工操作。通过u盘智 

能升级免去了专业升级人员的现场支持和升级失误的风险,给自动化测试集成厂商节约了大量成本的同时也让用户有了 

更好地体验。 

关键词:智能升级;嵌入式系统;引导系统;自动化测试;ARM9 

中图分类号:TP31 1 文献标识码:A 文章编号:1007 9599(2012)16—0168 02 

1 引言 

目前,随着科技的日益发展和人力成本的逐渐升高, 

工业生产的自动化需求也日益强烈。目前主要的升级方式 

有远程式自动升级和串口和下载器的现场升级方式,前者 

需要有前后台的配套软硬件支持,成本较高,后者虽然成 

本低但需要复杂的操作设置,需要专业人员作业。针对这 

现状,此方案兼顾了简易操作性和成本低的问题提出进 

行深入剖析,并提出以下可行的实施方案。 

2系统引导原理 

BootLoader是系统加电启运行的第一段软件代码,整 

个系统的加载启动任务就完全由BootLoader来完成.比如 

在一个基于ARM920T core的嵌入式系统中,系统在上电 

或复位时都从地址OxO0000000开始执行.而在这个地址处 

安排的通常就是系统的BootLoader程序。简单地说 

BootLoader就是在操作系统内核或用户应用程序运行之前 

运行的一段小程序。通过这段小程序,就可以初始化硬件 

设备、建立内存空间的映射图(有的CPU没有内存映射功 

能如¥3C44B0),从而将系统的软硬件环境带到一个合适 

的状态,以便为最终调用用户应用程序准备好正确的环境。 

这次设计主要是针对特定的¥3C2440处理器,其存储分布 

如下: 

bootloader boot Current User other 

parameters appliction User 

appliction 

总体启动过程跟其他处理器相似,整个启动过程分为 

两个阶段:在此不再详述。整体详细启动流程比较复杂, 

主要涉及人机交互部分,U盘读取部分接口,应用程序参 

数设置部分。人机交互界面主要是完成一些环境参数的配 

置,标准输入输出的设置,以及进入何种下载方式的选择 

问题。由于这个程序比较固定,在这个升级中实质只需一 

个按钮拨到系统升级就解决了。 

3总体设计方案及实现 

引导系统作为嵌入式系统必不可少的一部分,其设计 

的好坏直接涉及到用户的体验感受和产品的性能。自然这 

个部分也是设计中比较复杂的一部分,其复杂源于没有统 

的标准,不同的硬件平台就不同的启动细节,而且是直 

接汇编硬件编程。基于此,详细的启动大致流程设计如下。 

设雷中 向荤l 一:二 、 

设置系统时钟 I l 、 :: 

初始化定时器 l 

环境参数有效 l I us基子系统浩除 l l查找指定文件 f 

初始化碗件 

上 

 

I 

FA

 统建 l

硬0件 初始化 l

 

 

I 

』 

 I

安 

\ 一 

在这个USB软件协议栈的整个框架中,依然遵循通用 

的分层架构设计方式,每层完成自己的功能,层与层之间 

都是通过接口完成,基本上上层应用都只依赖于下一层, 

对于个别层的功能实现需要依赖其下的2层,从上到下依 

次为文件操作API层、文件操作实现层、U盘操作命令层、 

UFI命令层、USB HOST设备管理层、OHCI软件接口层、 

寄存器读写接口层。 

在USB HOST的通信过程中,必须实现的几个重要的 

数据结构,分别是端点描述符,传输描述符,简略描述如 

下,具体请查阅相关文献。 

端点描述符:struct ed 传输描述符:struct td 文 

件描述符:struct iflesystem 

{ { 

{ 

U32 hwINFO ; U32 hwlNFO : 

ifledefetfs

fun detect; 

U32 hwTailP : U32 hwCBP : 

ifle

lsfun ls; 

——

U32 hwHeadP: U32 

hwNextTD ifle

readfun read; 

U32 hwNextED: U32 hwBE; 

const char name[12】; 

struct ed ed rn-i list; struct td next dl td; 

ifle remove fun remove; 

struct usb device usb dev: 

usb dev; file write fun *write ̄ 

} 

) 

(下转第155页) 

168— 

本文标签: 系统升级测试启动设置