基于VxWorks的产品映象设计_第1页
基于VxWorks的产品映象设计_第2页
基于VxWorks的产品映象设计_第3页
全文预览已结束

下载本文档

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

文档简介

1、        摘 要: 本文分析了VxWorks的映象特点,设计了几种VxWorks下产品映象的构造方案,并指出了这些构造设计的应用场合。VxWorks是目前占垄断地位的实时操作系统,在许多领域获得广泛应用,但其产品映象设计却一直是令设计工程师头疼的问题。本文在实践验证的基础上,讨论了基于VxWorks操作系统上的产品映象设计技术,具有很强的实用性。 VxWorks的映象分析VxWorks映象内容包括:代码段(Text segment)、数据段(Data Segment)和符号起始块段(BSS Segment)。

2、其中,代码段指可执行的指令集合;数据段指已经初始化的全局和静态变量;符号起始块段是未初始化的全局和静态变量,ANSI C/C+中要求这些变量初始化为零。VxWorks映象按类型分为:可下载的映象(Loadable images)、基于ROM的映象(ROM-based images)和ROM驻留映象(ROM-Resident images)三种。Loadable images一般用于调试,ROM或Flash中的启动代码BSP打通调试通道后,将其从PC机上装入RAM运行。ROM-based images整个映象在ROM或Flash中,由BSP从ROM或Flash中装载整个映象到RAM中运行,并分为

3、压缩和非压缩方式。ROM-resident images则只拷贝VxWorks的data和bss部分到RAM中运行,运行效率低。基于VxWorks的产品映象设计本文bootable VxWorks映象即为ROM-based images,downloadable应用模块对应Loadable images。VxWorks最终产品映象一般烧录在Flash中,但由于Flash容量有限,并且为了动态更换程序方便,有时需要使用两片Flash。其中,第一片小容量的Flash仅作为启动和下载程序功能,采用插件式,以便替换;第二片大容量的Flash存放用户应用代码,多采用贴片方式。具体VxWorks的产品映象

4、构造可使用以下四种技术方案。方案一Flash中存放BOOT+OS+ APPLICATION代码(Tornado图形环境下选项为bootable映象,rules=VxWorks_rom)。在Flash中的 BOOT启动后,就将OS装入RAM,跳到OS入口点,OS执行,并由OS最终调起用户应用程序。这种设计最为简洁,只需一片Flash装载程序。缺点是,采用插件Flash容量很小,仅适合程序不大的场合;而采用贴片方式的Flash,则有一个头疼的程序烧写问题。方案二第一片小容量Flash放BOOT代码;第二片大容量的Flash放OS+APPLICATION代码(Tornado图形环境下选项为boota

5、ble映象,rules=VxWorks)。由VxWorks的Loadable images启动过程可知,第一片Flash会将BOOT code拷贝到RAM_HIGH_ADRS为起址的RAM空间,BOOT code则将OS拷贝到RAM_LOW_ADRS为起址的RAM空间,并跳到OS入口点,即RAM_LOW_ADRS执行。所以这种方法是在第一片Flash启动后,接着将第二片Flash中保存的OS+APPLICATION映象拷贝到RAM的RAM_LOW_ADRS RAM_HIGH_ADRS之间,然后跳到RAM中的RAM_LOW_ADRS地址处即OS入口点执行。方案三第一片小容量Flash放BOOT代

6、码;第二片大容量的Flash放BOOT+OS+APPLICATION(Tornado图形环境下选项为bootable映象,rules=VxWorks_rom)。第一片BOOT启动后,其代码执行的最后一句跳至第二片Flash的启动代码romInit()处执行。第一片Flash代码用来将程序下载到第二片Flash中,正常情况下则是简单地启动第二片Flash中已有的程序。在做第二片Flash中的BOOT+OS+APPLICATION映象时,需要将BSP中config.h文件的ROM_BASE_ADRS参数修改为第二片Flash的基址,表示基于第二片Flash启动运行。这里第二片Flash执行并不等同

7、复位CPU,只是又执行了一次与第一片Flash中上电复位后内容类似的初始化代码并新启动了一个OS,这个OS重新接管了SDRAM以及CPU的所有寄存器等,而第一片Flash中代码不再执行。下面提供一种方法,通过第一片Flash中的代码,可以将远程PC机上编译好的二进制可执行文件 rom.bin(含有BOOT+OS+APPLICATION)ftp到第二片Flash:/*(1)将PC ftp Server上的二进制可执行文件rom.bin(含有BOOT+OS+APPLICATION)ftp到target的SDRAM缓冲区buf中*/if (ftpXfer ("server", &

8、quot;fred", "magic", "", "RETR %s", "/usr/appl", "rom.bin",&ctrlSock, &dataSock) = ERROR)return (ERROR);while (nBytes = read (dataSock, buf, 5*1024) > 0)buf = buf + nBytes;TotalNum = TotalNum + nBytes;close (dataSock);if (ftpReplyGet

9、(ctrlSock, TRUE) != FTP_COMPLETE)status = ERROR;if (ftpCommand (ctrlSock, "QUIT", 0, 0, 0, 0, 0, 0) != FTP_COMPLETE)status = ERROR;close (ctrlSock);/*(2)将ftp到SDRAM中的内容写入第二片Flash中*/writeFlash2(buf-TotalNum,FLASH2BASE,TotalNum);/*(3)第一片Flash执行的最后一行代码是跳转到第二片Flash中第一条语句执行*/FUNCPTR entry = (FUN

10、CPTR)(FLASH2BASE+0x100);go (entry); 方案四第一片小容量Flash放BOOT+OS+LOADER代码(Tornado图形环境下选项为bootable映象,rules=VxWorks_rom);第二片大容量Flash放APPLICATION(Tornado图形环境下选项为downloadable应用模块且可重定位,rules=objects),此片Flash必须有文件系统。第一片Flash中是一个完整的产品映象,等同于BOOT+OS+APPLICATION,LOADER就是一个简单的APPLICATION,利用VxWorks提供给用户的目标模块加载器loadli

11、b来完成LOADER功能。在第一片Flash启动运行到LOADER时,由LOADER的loadModule()函数将第二片Flash的APPLICATION文件动态加载入RAM,并与OS连接为可直接执行的映象,然后用symFindByName()找到应用代码文件appl.o中用户应用入口点"ApplEntry",最后跳到应用入口函数执行。第一片Flash中的LOADER代码如下:FUNCPTR StartEntry;fd = open ("/Flash2/appl.o", O_RDONLY,0);loadModule(fd, LOAD_ALL_SYMBO

12、LS);symFindByName(sysSymTbl,“ApplEntry”,(char *)&StartEntry,&Type);(*StartEntry)( );其中,(1)loadModule(int fd,int loadFlag)函数从指定的文件fd中装载目标模块,并将Text、Data、BSS段放入目标内存池中;(2)SymFindByName(SYMTAB_ID symTblId, char* name, char* pValue, SYM_TYPE* pType)从符号表中搜寻与指定符号名匹配的符号,并将值考入pValue和pType中。VxWorks产品映象设计方案比较以上方案中,第一种设计只适合代码小的产品映象;第二、三、四种适合大容量代码的映象设计。第二种设计启动最快,但用户可修改性差,不灵活。第三种设计启动两次,速度慢,但可以做到动态远程更新包括BSP在内的整个第二片Flash中的映象。第四种必须在第二片Flash中有闪存文件系统TrueFFS,appl.o以文件形式存放其中,此设计最为复杂,但在增加远程程序下载更新功能方面十分

温馨提示

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

评论

0/150

提交评论