VxWorks中的任务及调度(三):VxWorks启动流程
2014-03-21 10:20
337 查看
第二节: VxWorks启动流程
此节主要参考:http://www.docin.com/p-602555316.html,欲了解VxWorks映像及启动流程详情,也可访问本链接.
在了解VxWorks启动流程前,需要先了解VxWorks的几种映像(镜像?Image)。VxWorks镜像用于引导目标系统,类似于我们常见的Windows操作系统或Linux内核,镜像启动后应用程序才可能被加载启动。根据应用场合不同,VxWorks映像分为三种:可加载的VxWorks映像、基于ROM的VxWorks映像和驻留ROM的VxWorks映像。
可加载的VxWorks映像:这是一种运行于RAM的可加载的VxWorks映像,它不包含搬移程序,需要借助一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处,这是缺省的开发映像,目前FH的PON单盘基本都是使用这种开发映像。在开发的初期阶段,用户可以根据需要添加或删除一些VxWorks组件,生成自己的可加载的VxWorks映像,存放在开发主机的某个目录下。目标板上电后,由烧结在BOOT中的起始引导程序(BootStrap Programs)将BOOT中的ROM引导程序(ROM Boot Programs)拷贝到RAM的高端地址RAM_HIGH_ADRS处,并跳转至该地址执行ROM引导程序,配置好所选的加载方式(缺省为网络方式),将指定的主机目录下的可加载的VxWorks映像下载到目标板的RAM地址RAM_LOW-ADRS处,并跳转到此处执行。[注:可联想到本地升级,进入boot后选择网络模式并传输写入文件,文件写完后再选择go加载映像]
基于ROM的VxWorks映像:这是一种运行于RAM中,但起初存放于ROM中的VxWorks映像,该映像需要和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映像拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。
驻留ROM的VxWOrks映像:这种映像起初也和搬移程序一起固化在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。
在基于ROM的VxWorks映像BOOTROM中,搬移程序负责将VxWorks映像的文本段和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,再启动VxWorks映像。
对于驻留ROM的VxWorks映像的BOOTROM,VxWorks系统文本段驻留在ROM,搬移程序负责将数据段和bss短搬移到RAM_LOW_ADRS,再直接启动VxWOrks映像(含符号表)。RAM_LOW_ADRS是VxWorks映像的加载点,也是VxWorks数据段的起始点。
以可加载的VxWorks映像为例,说明系统启动流程:
本小结总结:usrAppInit()在内核初始化完成后调用。
第二节: VxWorks启动流程
此节主要参考:http://www.docin.com/p-602555316.html,欲了解VxWorks映像及启动流程详情,也可访问本链接.
在了解VxWorks启动流程前,需要先了解VxWorks的几种映像(镜像?Image)。VxWorks镜像用于引导目标系统,类似于我们常见的Windows操作系统或Linux内核,镜像启动后应用程序才可能被加载启动。根据应用场合不同,VxWorks映像分为三种:可加载的VxWorks映像、基于ROM的VxWorks映像和驻留ROM的VxWorks映像。
可加载的VxWorks映像:这是一种运行于RAM的可加载的VxWorks映像,它不包含搬移程序,需要借助一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处,这是缺省的开发映像,目前FH的PON单盘基本都是使用这种开发映像。在开发的初期阶段,用户可以根据需要添加或删除一些VxWorks组件,生成自己的可加载的VxWorks映像,存放在开发主机的某个目录下。目标板上电后,由烧结在BOOT中的起始引导程序(BootStrap Programs)将BOOT中的ROM引导程序(ROM Boot Programs)拷贝到RAM的高端地址RAM_HIGH_ADRS处,并跳转至该地址执行ROM引导程序,配置好所选的加载方式(缺省为网络方式),将指定的主机目录下的可加载的VxWorks映像下载到目标板的RAM地址RAM_LOW-ADRS处,并跳转到此处执行。[注:可联想到本地升级,进入boot后选择网络模式并传输写入文件,文件写完后再选择go加载映像]
基于ROM的VxWorks映像:这是一种运行于RAM中,但起初存放于ROM中的VxWorks映像,该映像需要和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映像拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。
驻留ROM的VxWOrks映像:这种映像起初也和搬移程序一起固化在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。
在基于ROM的VxWorks映像BOOTROM中,搬移程序负责将VxWorks映像的文本段和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,再启动VxWorks映像。
对于驻留ROM的VxWorks映像的BOOTROM,VxWorks系统文本段驻留在ROM,搬移程序负责将数据段和bss短搬移到RAM_LOW_ADRS,再直接启动VxWOrks映像(含符号表)。RAM_LOW_ADRS是VxWorks映像的加载点,也是VxWorks数据段的起始点。
以可加载的VxWorks映像为例,说明系统启动流程:
本小结总结:usrAppInit()在内核初始化完成后调用。
相关文章推荐
- uCOS II多任务调度的启动流程
- [置顶] [Android] [SystemUI] Recent -- 最近任务的启动流程
- Linux与VxWorks任务调度机制分析
- Windows10环境中 laravel任务调度 如何启动调度
- VxWorks启动后系统自带的任务
- Linux与VxWorks任务调度机制分析
- 深入Spark内核:任务调度(1)-基本流程
- Freertos阅读笔记4~ Systick异常处理,任务调度流程
- Activiti 5.18启动流程到完成所有任务之间的数据库变化
- 如果不用QuickFlow提供的控件来开发工作流页面,如何启动流程,提交任务呢?
- Openstack中Scheduler脚本启动流程和调度流程分析之三
- Spark 任务调度之启动CoarseGrainedExecutorBackend
- Quartz 定时器任务调度配置(以及如何配置quartz启动执行一次)
- Shark编程实例:启动一个流程,获得所有任务的列表,完成一个任务
- VxWorks任务调度
- Linux与VxWorks任务调度机制分析
- VxWorks启动流程
- Yarn源码分析之MapReduce作业中任务Task调度整体流程(一)
- Hadoop0.21.0源码流程分析(3)-Task节点管理启动任务
- [转帖]VxWorks任务调度