VxWorks启动过程详解.doc

VxWorks启动过程详解.doc

ID:49651801

大小:102.50 KB

页数:8页

时间:2020-03-03

VxWorks启动过程详解.doc_第1页
VxWorks启动过程详解.doc_第2页
VxWorks启动过程详解.doc_第3页
VxWorks启动过程详解.doc_第4页
VxWorks启动过程详解.doc_第5页
资源描述:

《VxWorks启动过程详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、vxworks有三种映像:VxWorksImage的文件类型有三种-LoadableImages:由Boot-ROM引导通过网口或串口下载到RAM-ROM-basedImages(压缩/没有压缩):即将Image直接烧入ROM,运行时将Image拷入RAM中运行。-ROM-ResidentImages:Image的指令部分驻留在ROM中运行,仅将数据段部分拷入RAM。注意这里说的三种映像都是包含真正操作系统VxWorks的映像,其中后两种可以直接启动并运行起来,但是第一种不行,它必须借助另一个叫做BootImage的映像

2、(可以在Tornado中的build->buildbootrom中生成)才能运行起来,也就是利用BootImage引导起来然后通过网口或串口下载真正包含VxWorks的LoadableImage,然后才能运行起来。也就是说BootImage是和LoadableImage结合使用的。现在看来一共有四种映像文件,让我们看看它们的组成吧:-BootImage:包含一段叫做BootStrapPrograms的程序+一段ROMBOOTProgram程序。-LoadableImages:有操作系统VxWorks和应用组成的映像。-R

3、OM-basedImages(压缩/没有压缩):包含一段叫做BootStrapPrograms的程序+LoadableImages(即有操作系统VxWorks和应用组成的映像)-ROM-ResidentImages:同上通过上面我们可以看出,ROM-basedImages,ROM-ResidentImages,BootImage三种映像都包含一段叫做BootStrapPrograms的程序,它具有启动功能,可以把ROM中的代码段和数据段拷贝到RAM中;下面让我们看看三种VxWorks的启动过程:èBootImage + 

4、LoadableImages:我们说过LoadableImages是依靠BootImage加载启动的,首先有BootImage中的程序BootStrapPrograms把BootProgram程序加载到RAM中的RAM_HIGH_ADRS处,然后控制权交给BootProgram,由BootProgram负责一系列简单的硬件初始化(网口,串口等),开始下载LoadableImages(即包含应用的VxWorks操作系统)到RAM_LOW_ADRS,然后控制权交给VxWorks操作系统开始执行。下面的图一是一个简单的流程图,

5、后面的图二是更为详细的流程图。图一  图二(1) 图二(2)èROM-basedImages(压缩/没有压缩):这种映像因为其本身就包含BootStrapPrograms程序,因此可以直接启动,所以这种映像中也就不需要BootProgramme了,首先BootStrapPrograms启动,把映像中的VxWorks加载到内存的RAM_LOW_ADRS处并开始运行。图三是一个简图,图四是更为详尽的流程图。  图三 图四èROM-ResidentImages:这种映像的加载和上一种是基本相同的,只不过是加载的只有data段和

6、bss段而已。上一节主要是从映像的分类和各种映像的大致加载流程上看VxWorks的启动过程,这一节让我们从函数级看一下VxWorks的启动过程:èBootImage + LoadableImages:VxWorks借鉴了传统PC操作系统的引导原理,其将整个引导过程分为两个阶段:1.BOOTROM启动,2.通过BOOTROM加载VxWorks内核。下面是具体的流程图:                      其中第一阶段的执行流程使用的是上图的左边的源文件中的那些函数(romInit->romStart->usrInit

7、->sysHwinit->usrKernelinit->usrRoot);第二阶段执行流程使用的是上图中右边源文件中的那些函数(sysInit->usrInit->sysHwinit->usrKernelinit->usrRoot->usrAppInit)。下面具体解释:第一阶段:Ø      romInit.s:romInit()•        系统上电之后,首先调用的函数就是romInit()•        禁止中断•        把启动类型(冷启动/热启动)放在堆栈上•        清除cache•    

8、    初始化CPU基本寄存器,调用SDRAM初始化函数初始化UPM•        直接跳转到bootInit.c:romStart()Ø      bootInit.c:romStart()•        把代码段和数据段从bootrom复制到RAM当中•        完成程序映象的解压缩(如果映象是压缩版本

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。