0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于VxWorks实时操作系统的映象特点和构建方案

电子设计 来源:电子设计应用 作者:郑更生,郑炜煜 2020-09-29 09:36 次阅读

本文分析了VxWorks的映象特点,设计了几种VxWorks下产品映象的构造方案,并指出了这些构造设计的应用场合。

VxWorks是目前占垄断地位的实时操作系统,在许多领域获得广泛应用,但其产品映象设计却一直是令设计工程师头疼的问题。本文在实践验证的基础上,讨论了基于VxWorks操作系统上的产品映象设计技术,具有很强的实用性。

VxWorks的映象分析

VxWorks映象内容包括:代码段(Text segment)、数据段(Data Segment)和符号起始块段(BSS Segment)。其中,代码段指可执行的指令集合;数据段指已经初始化的全局和静态变量;符号起始块段是未初始化的全局和静态变量,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中运行,并分为压缩和非压缩方式。ROM-resident images则只拷贝VxWorks的data和bss部分到RAM中运行,运行效率低。

基于VxWorks的产品映象设计

本文bootable VxWorks映象即为ROM-based images,downloadable应用模块对应Loadable images。VxWorks最终产品映象一般烧录在Flash中,但由于Flash容量有限,并且为了动态更换程序方便,有时需要使用两片Flash。其中,第一片小容量的Flash仅作为启动和下载程序功能,采用插件式,以便替换;第二片大容量的Flash存放用户应用代码,多采用贴片方式。具体VxWorks的产品映象构造可使用以下四种技术方案。

方案一

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图形环境下选项为bootable映象,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代码;第二片大容量的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执行并不等同复位CPU,只是又执行了一次与第一片Flash中上电复位后内容类似的初始化代码并新启动了一个OS,这个OS重新接管了SDRAM以及CPU的所有寄存器等,而第一片Flash中代码不再执行。

下面提供一种方法,通过第一片Flash中的代码,可以将远程PC机上编译好的二进制可执行文件 rom.bin(含有BOOT+OS+APPLICATION)ftp到第二片Flash:

基于VxWorks实时操作系统的映象特点和构建方案

方案四

第一片小容量Flash放BOOT+OS+LOADER代码(Tornado图形环境下选项为bootable映象,rules=VxWorks_rom);第二片大容量Flash放APPLICATION(Tornado图形环境下选项为downloadable应用模块且可重定位,rules=objects),此片Flash必须有文件系统。

第一片Flash中是一个完整的产品映象,等同于BOOT+OS+APPLICATION,LOADER就是一个简单的APPLICATION,利用VxWorks提供给用户的目标模块加载器loadlib来完成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_SYMBOLS);

symFindByName(sysSymTbl,“ApplEntry”,(char **)%26;amp;StartEntry,%26;amp;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以文件形式存放其中,此设计最为复杂,但在增加远程程序下载更新功能方面十分方便。以上映象构造方案在实际中都得到成功验证,应用设计人员可以按照实际要求灵活选择。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1621

    浏览量

    147735
  • 操作系统
    +关注

    关注

    37

    文章

    6732

    浏览量

    123182
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68326
收藏 人收藏

    评论

    相关推荐

    什么是VxWorks操作系统

    VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种实时操作系统VxWorks拥有良好的持续发展能力、高性能的内核以及良好的用户开发环境,在
    发表于 06-07 14:17

    Vxworks实时操作系统分析

    1 前言目前市场上比较著名的实时操作系统有:VxWorks、PSOS、Nucleus、QNX、VRTX、Windows CE、PalmOS、LynxOS等。 其中,VxWorks是一个
    发表于 07-22 07:21

    VxWorks操作系统具有哪些优点

    1.嵌入式Linux2. VxWorks(推荐课程:VxWorks应用开发培训班(TSVW0701))VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式
    发表于 12-22 08:12

    VxWorks操作系统实时多任务程序设计

    VxWorks操作系统实时多任务程序设计
    发表于 03-25 10:38 13次下载

    实时操作系统VxWorks下的并口通信技术

    实时操作系统VxWorks下的并口通信技术
    发表于 03-29 12:26 11次下载

    实时操作系统VxWorks下PCI总线配置技术

    实时操作系统VxWorks下PCI总线配置技术
    发表于 03-29 12:26 19次下载

    基于VxWorks操作系统的WindML 2D显示方案

    基于VxWorks操作系统有多种2D 显示的解决方案,但由于种种原因,仅介绍基于VxWorks操作系统的WindML 2D显示解决
    发表于 12-05 16:35 14次下载

    什么是VxWorks操作系统

    VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种实时操作系统VxWorks拥有良好的持续发展能力、高性能的内核以及良好的用户开发环境,在实
    发表于 06-17 00:33 4057次阅读

    VxWorks实时操作系统的USB驱动程序

    VxWorks是一种由开发的先进的实时操作系统,广泛地应用于各种嵌入式实时应用领域。论文是作者实践的结果。首先在简单介绍了VxWorks
    发表于 09-16 15:20 44次下载
    <b class='flag-5'>VxWorks</b><b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>的USB驱动程序

    风河VxWorks实时操作系统引入应用商店体验

    风河Marketplace允许客户从风河合作伙伴生态系统中挑选最佳组合方案,增强VxWorks。 VxWorks应用商店包括安全、防卫、储存、互联性、图形和开发工具等软件包。
    发表于 06-17 10:45 960次阅读

    关于实时操作系统VxWorks下的并口通信技术

    关于实时操作系统VxWorks下的并口通信技术
    发表于 08-31 15:21 4次下载
    关于<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b><b class='flag-5'>VxWorks</b>下的并口通信技术

    VxWorks嵌入式操作系统特点与应用

    VxWorks嵌入式操作系统特点与应用
    发表于 10-26 10:40 6次下载
     <b class='flag-5'>VxWorks</b>嵌入式<b class='flag-5'>操作系统</b>的<b class='flag-5'>特点</b>与应用

    VxWorks实时操作系统的新增功能及简介

    VxWorks 是美国 Wind River System 公司( 以下简称风河 公司 ,即 WRS 公司)推出的一个实时操作系统。Tornado 是WRS 公司推出的一套实时
    发表于 12-02 10:20 2507次阅读

    实时操作系统特点_实时操作系统的组成

    本文主要阐述了实时操作系统特点及组成。实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又
    发表于 09-01 16:48 5058次阅读

    嵌入式实时操作系统:Intewell操作系统VxWorks操作系统有啥区别

    Intewell操作系统VxWorks操作系统都是工业领域常用的操作系统,它们各有特点和优势。以下是它们之间的一些主要区别:
    的头像 发表于 07-08 14:16 367次阅读
    嵌入式<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>:Intewell<b class='flag-5'>操作系统</b>与<b class='flag-5'>VxWorks</b><b class='flag-5'>操作系统</b>有啥区别