新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > VxWorks系统的映像及其装载过程解析

VxWorks系统的映像及其装载过程解析

作者:时间:2012-03-27来源:网络收藏

  跳到位于RAM_LOW_ADRS地址的解压的VxWorks的入口点,引导代码和堆栈空间将被覆盖。
  (2)VxWorks_romResident(如图2)
            
  该映像包含引导代码,在重启时清空RAM,引导代码只将data段拷贝到RAM 中的RAM_LOW_ADRS处。而系统的运行是在ROM 中进行的。
  相对其他映像,这种映像启动速度快,需要的RAM 空间少,但是运行速度慢。
  (3)VxWorks

  该映像本身不包含引导程序,需要一个独立的引导程序从本地存储器或者经由网络获取该映像,然后将其下载到RAM中的RAM_LOW_LADRS处运行。这个独立的引导程序就是上文提到的BootRom 类型映像,它可以分为BootRom_res、BootRom_uncmp和BootRom三种。在开发过程中,独立的引导程序需要使用传统的BSP机制来配置和构建。
图3所示是压缩型的引导程序映像BootRom的标准启动流程,而BootRom_uncmp是非压缩型的引导程序映像,BootRom_res是常驻ROM 型的引导程序映像。
          
  对BootRom型的引导映像来说,启动过程稍微复杂点。它包括压缩部分跟非压缩部分,这个无压缩的部分就是romInit.s+ BootInit.c,称为Bootstrap。一上电时,Bootstrap就在Flash/ROM中执行,入口点就是romInit.s的第一条语句。Bootstrap首先把自己拷贝到RAM_LOW_ADRS (因为此时还没有加载VxWorks主映像,所以先借用一下),然后解压缩自身到RAM_HIGH_ADRS。然后跳到RAM_HIGH_ADRS运行引导程序。引导代码执行后,把VxWorks映像装入到起始地址为RAM_LOW_ ADRS的RAM 中(覆盖掉了先前拷贝的bootstrap程序),然后跳转到VxWorks映像装入点运行。
  对BootRom_uncmp来说,过程与BootRom 相似,只不过一开始就把自身拷贝到RAM_HIGH_ADRS地址上运行,省去了解压缩的过程。
  对BootRom_res类型映像来说,仅仅将它的数据段拷贝到RAM_HIGH_ADRS位置。然后在Flash/ROM中运行引导程序。其余过程同上。
  采用独立引导程序的VxWorks系统,不但可以通过本地存储器(如硬盘)获取VxWorks主映像,还可以通过网络获取。图4所示就是这个过程。被下载的VxWorks主映像位于RAM中的RAM_LOW_ADRS处,映像的顶端叫FREE_RAM_ADRS。下载完VxWorks后,引导程序跳到下载映像的sysInit()入口点处(位于RAM_LOW_ADRS)。从这以后,引导程序就完成了它的工作。
           
3 结束语
  总之,VxWorks系统包括多种不同的映像,各自之间的差别造成装载过程的不同,正确的理解这些差异,灵活地使用这些映像,将给开发者带来事半功倍的效果。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭