中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 嵌入系统 >>电子行业新闻正文

基于VxWorks的产品映象设计

时间:2006/8/31 12:23:00  作者:  来源:ic72  浏览人数:1296
 
 

      摘 要: 本文分析了VxWorks的映象特点,设计了几种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:

      /*(1)将PC ftp Server上的二进制可执行文件rom.bin(含有BOOT+OS+APPLICATION)ftp到target的SDRAM缓冲区buf中*/

      if (ftpXfer ("server", "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 (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 = (FUNCPTR)(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提供给用户的目标模块加载器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 **)&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以文件形式存放其中,此设计最为复杂,但在增加远程程序下载更新功能方面十分方便。以上映象构造方案在实际中都得到成功验证,应用设计人员可以按照实际要求灵活选择。

 
【相关文章】
·基于32位低端嵌入式系统的图像采集模块
·基于MB90F462的智能家居数据采集卡设计
·基于TRIMEDIA平台的数字监控DVR的设计实现
·基于VxWorks的产品映象设计
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9