VxWorks中的任务及调度(三):VxWorks启动流程



第二节: VxWorks启动流程

此节主要参考:http://www.docin.com/p-602555316.html,欲了解VxWorks映像及启动流程详情,也可访问本链接.

在了解VxWorks启动流程前,需要先了解VxWorks的几种映像(镜像?Image)VxWorks镜像用于引导目标系统,类似于我们常见的Windows操作系统或Linux内核,镜像启动后应用程序才可能被加载启动。根据应用场合不同,VxWorks映像分为三种:可加载的VxWorks映像、基于ROMVxWorks映像和驻留ROMVxWorks映像。

可加载的VxWorks映像:这是一种运行于RAM的可加载的VxWorks映像,它不包含搬移程序,需要借助一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处,这是缺省的开发映像,目前FHPON单盘基本都是使用这种开发映像。在开发的初期阶段,用户可以根据需要添加或删除一些VxWorks组件,生成自己的可加载的VxWorks映像,存放在开发主机的某个目录下。目标板上电后,由烧结在BOOT中的起始引导程序(BootStrap Programs)BOOT中的ROM引导程序(ROM oot Programs)拷贝到RAM的高端地址RAM_HIGH_ADRS处,并跳转至该地址执行ROM引导程序,配置好所选的加载方式(缺省为网络方式),将指定的主机目录下的可加载的VxWorks映像下载到目标板的RAM地址RAM_LOW-ADRS处,并跳转到此处执行。[注:可联想到本地升级,进入boot后选择网络模式并传输写入文件,文件写完后再选择go加载映像]

 

基于ROMVxWorks映像:这是一种运行于RAM中,但起初存放于ROM中的VxWorks映像,该映像需要和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映像拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。

 

驻留ROMVxWOrks映像:这种映像起初也和搬移程序一起固化在BOOT中,目标板上电后,首先运行BOOT中的引导搬移程序,但仅将VxWorks映像的数据段和BSS段拷贝到RAM地址RAM_LOW_ADRS处,映像的代码段仍然留在ROM中,从ROM中开始执行。

 

以上各种VxWorks映像中都有一个概念搬移程序,即romStart(),定义在工程的romStart.c(有一些系统为bootInit.c,来自互联网举例)中。

 

 

各种映像的BOOTROM及加载方法(启动)也各不相同。

可加载VxWorks映像的BOOTROM包含两部分:起始引导程序(Boot Strap Program)ROM引导程序(ROM Boot Program)。起始引导程序驻留在ROM中,主要包含:汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射搬移程序romStart.c(bootInit.c),将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。ROM引导程序用于系统的进一步初始化,并配置加载方式,将VxWorks映像加载至RAM

 

在基于ROMVxWorks映像BOOTROM中,搬移程序负责将VxWorks映像的文本段和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,再启动VxWorks映像。

对于驻留ROMVxWorks映像的BOOTROMVxWorks系统文本段驻留在ROM,搬移程序负责将数据段和bss短搬移到RAM_LOW_ADRS,再直接启动VxWOrks映像(含符号表)。RAM_LOW_ADRSVxWorks映像的加载点,也是VxWorks数据段的起始点。

以可加载的VxWorks映像为例,说明系统启动流程:

 

本小结总结:usrAppInit()在内核初始化完成后调用。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值