VxWorks启动过程描述及主要宏开关含义

更新时间:2023-10-20 17:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 三种不同的VxWorks映象比较

VxWorks是一种灵活的、可裁剪的嵌入式实时操作系统。用户可以根据需要创建自己的VxWorks映象,由它来引导目标系统,而后下载并运行应用程序。

根据应用场合的不同,VxWorks映象可分为三类:可加载的VxWorks映象、基于ROM的VxWorks映象和驻留ROM的VxWorks映象。 1.1 可加载的VxWorks映象

这是一种运行于RAM的VxWorks映象。它不包含搬移程序,需要借助于一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处。这是缺省的开发映象。

图1、可加载的VxWorks映象

在开发的初期阶段,用户可以根据需要添加或删除一些VxWorks组件,生成自己的可加载的VxWorks映象,存放在开发主机的某个目录下。目标板上电后,由烧结在BOOT中的起始引导程序(BootStrap Programs)将BOOT中的ROM引导程序(ROM Boot Programs)拷贝到RAM的高端地址RAM_HIGH_ADRS处,并跳转至该地址执行ROM引导程序,配置好所选的加载方式(缺省为网络方式),将指定的主机目录下的可加载的VxWorks映象下载到目标板的RAM地址RAM_LOW_ADRS处,并跳转到此处执行。如图1所示。

这种映象的优点是生成的VxWorks映象可以存放在开发主机PC机上,不用烧到BOOT中,节省了BOOT容量,也便于随时修改不同的VxWorks映象,适用于调试的初期阶段。不足之处是需要在主机上维护一个正确的VxWorks映象,对于调试硬件无关的上层应用程序显得不是很方便。

在Tornado工作台的Build窗口中,选择Rules属性页中的VxWorks即可生成可加载的VxWorks映象。

1.2 基于ROM的VxWorks映象

图2 基于ROM的VxWorks映象

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

该映象根据是否被压缩又可分为:

1.基于ROM的未压缩的VxWorks映象,可直接从ROM拷贝到RAM中

2.基于ROM的压缩的VxWorks映象,这种映象主要是为了节约BOOT空间,在从ROM拷贝到RAM的过程中需要解压缩,因此与上述未压缩的映象相比,它的引导过程相对较慢,但两者在RAM中的运行速度是一样的。 1.3 驻留ROM的VxWorks映象

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

图3 驻留ROM的VxWorks映象

这种映象的优点是具有最快的引导速度,占用最少的RAM空间,适用于RAM空间有限的目标板。但是由于该映象在ROM中运行,运行速度在三种映象中是最慢的。 2 几种不同的BOOTROM的比较

针对上述三种不同的VxWorks映象,可以生成以下几种不同的BOOTROM,主要体现在执行搬移程序romStart( )( 位于bootInit.c文件中)时不同: 2.1 用于可加载VxWorks映象的BOOTROM

由图1所示可知,用于可加载VxWorks映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和ROM引导程序(ROM Boot Programs)。 起始引导程序驻留在ROM中,主要包含:

1.汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射

2.搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。

ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。可分为三种不同的类型: 1.压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行 2.未压缩的ROM引导程序,可直接拷贝,在RAM中执行

3.驻留ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段仍旧在ROM中执行 在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM?可以选择生成以上三种BOOTROM,分别为:bootrom_uncmp.hex(未压缩的BOOTROM),bootrom.hex(压缩的BOOTROM),bootrom_res.hex(驻留的BOOTROM)。

静态连接到可加载的VxWorks映象的系统初始化代码执行并完成整个初始化过程。 引导过程成功以后,RAM中ROM引导程序占用的空间(从RAM_HIGH_ADRS开始)可以重新被系统利用。

图1中所示的各地址含义为:

1.LOCAL_MEM_LOCAL_ADRS 是RAM的起始地址

2.RAM_LOW_ADRS 是VxWorks的加载点,也是VxWorks代码段的起始位置 3.FREE_RAM_ADRS 是VxWorks映象的结束点。通常也是系统内存池和目标服务器内存池的起始地址

4.RAM_HIGH_ADRS 是ROM引导程序的加载点。它也是ROM引导程序(除驻留ROM引导程序之外)的代码段的起始位置,或驻留ROM引导程序数据段的起始位置。 2.2 用于基于ROM的VxWorks映象的BOOTROM

由图2所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和基于ROM的VxWorks映象。搬移程序bootInit.c负责将VxWorks映象的文本段

和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,如果需要进行必要的解压缩,然后直接启动VxWorks映像。

因此BOOTROM的容量相对于2.1中描述的BOOTROM要大一些,但无需在主机目录下维护一个可用的VxWorks映象。

基于ROM的VxWorks BOOTROM有压缩和未压缩之分。在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_rom即可生成基于ROM的未压缩的VxWorks BOOTROM,选中VxWorks_romCompress即可生成基于ROM的压缩的VxWorks BOOTROM。 2.3 用于驻留ROM的VxWorks映象的BOOTROM

由图3所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和驻留ROM的VxWorks映象,VxWorks系统文本段驻留在ROM,搬移程序bootInit.c负责将数据段和bss段搬移到用户定义的低端内存地址RAM_LOW_ADRS,直接启动VxWorks映像(含符号表)。此时,RAM_LOW_ADRS是VxWorks映象的加载点,它也是VxWorks数据段的起始点。

在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_romResident即可生成驻留ROM的VxWorks BOOTROM。

3 VxWorks的启动过程

根据上述所采用的BOOTROM的不同,VxWorks的启动过程会有所不同。 3.1 使用可加载VxWorks映象的启动过程

此时,从目标板上电复位到启动用户定义的任务的整个流程如下:

sysALib.s : sysInit( ) 锁住中断,关闭cache(如果使用了话),初始化处理器的寄存器(包括C堆栈指针)至缺省值 开始在RAM中运行VxWorks usrConfig.c : usrInit( ) 设置cache的工作模式,板级硬件初始化,初始化Win内核,启动usrRoot( ) usrConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,添加用户应用程序 romInit.s : romInit 设置机器状态字及其它硬件相关寄存器,关闭中断,禁止程序和数据CACHE,初始化内存,并设置堆栈指针 bootInit.c : romStart( ) 将ROM中的程序搬移至RAM中 bootConfig.c : usrInit( ) 设置cache的工作模式,板级硬件初始化,调用sysHwInit( ),usrKernelInit( ),KernelInit( ),初始化Win内核,产生根任务usrRoot( ) bootConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,产生任务bootCmdLoop bootConfig.c : bootCmdLoop( ) 调用自动引导程序autoboot( ),此函数若成功则不返回 bootConfig.c: autoboot( ) 延时7s,以默认参数启动 用户按键中断 bootConfig.c :bootCmdLoop( ) 启动命令行用于配置VxWorks启动参数 bootConfig.c: bootLoad( ) 加载VxWorks映象,并转向它进行重启 等待超时

本文来源:https://www.bwwdw.com/article/hxaf.html

Top