VxWorks引导启动过程

更新时间:2023-09-14 07:53:01 阅读量: 初中教育 文档下载

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

VxWorks引导启动过程

一.引导过程

1.bootstrap/bootloader/bootrom

bootstrap是固化在CPU的ROM中的一小段指令系列,它是最初级的引导,旨在初始化CPU、时钟、堆栈,目标是让CPU正常运作起来。

引导加载程序(bootloader)是系统上电后运行的第一段软件代码。广义的bootloader可以认为是BootstrapProgram+Boot Image,不过一般就是指Boot Image。Boot Image的地位和作用可类比PC中位于BIOS固件程序(firmware)+硬盘MBR中的OS BootLoader(比如LILO和GRUB 等),它完成系统从上电后的硬件检测和资源分配,并将内核映象加载到RAM中,然后跳转到内核的入口点去运行启动操作系统。

bootrom通常是用来存储BootLoader的ROM/FLASH芯片,在VxWorks文档中的bootrom区是指Boot Image存放的位置。bootrom 完成VxWorks启动前的基本引导工作,如最简初始化硬件,下载映象文件并解压到RAM中等操作。 2.引导流程

CPU从没有电到上电状态,经过自复位的过程后,指令指针指向一个固定的地址。基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被映射到这个预先安排的地址上。因此,在系统上电后,CPU将首先执行这个地址所包含的指令,即Boot Loader程序。

无论如何,CPU开始执行一段指令了,这段指令的作用首先是将可执行程序所需的最小环境搭建起来。这个初始化过程包括初始化CPU、内存控制器及各种必需输入/输出设备、磁盘控制器等等。以X86体系结构来说,需要初始化CPU、北桥、南桥,常说的BIOS就是这样一段初始化程序。在那些没有BIOS的架构中,这一工作由系统的bootrom完成。 建立了最小可运行系统,操作系统的内核就可以运行了。于是,BIOS或bootrom程序将操作系统从能够永久保存内容的存储介质中读取出来加载到内存中。这些可永久保存内容的存储介质可能是NVROM、磁盘、光盘等,例如我们常说的操作系统光盘。

通常,操作系统在加载过程中还会对硬件环境做一次重新初始化,这一次初始化就不仅仅是最小运行环境了。包括CPU在内的全部计算机所包含的硬件都会被操作系统依次初始化,

同时初始化的还包括操作系统内核本身。这样,整个系统就处于一种可控状态,可以开始执行用户应用程序了。

从引导到系统启动是一个bottom-up的过程;启动后,用户交互到系统响应则是一个top-down的过程。 二.VxWorks映象 1.VxWorks映象的组成

VxWorks映象由文本段(.text/.code),数据段(.data)和BSS段(.bss)组成。文本段相当于代码段,是由一些指令组成的;数据段就是由一些初始化过的全局和静态变量组成;BSS段也是由全局变量和静态变量组成,只不过他们都没有经过初始化。 2.VxWorks映象的类型

VxWorks Image的文件类型有两类三种: A.加载型映象(VxWorks类型)

(1)Loadable Image是包含用户程序的VxWorks操作系统映象,其不具备引导功能,需要借助bootrom引导程序通过网口或串口下载到RAM中。bootrom在此扮演了“搬运工”的角色。

B.可引导型映象(BootRom类型)

可引导型(Bootable)映象包含含有用户程序的VxWorks操作系统映象,并包括完整的引导代码,可以在系统上电后自动完成自身的引导。

(2)ROM-basedImage(压缩/没有压缩):即将Image直接烧入ROM/flash,运行时将Image拷入RAM中运行。

(3)ROM-residentImage:Image的指令部分驻留在ROM中运行,仅将数据段部分拷入RAM。

注意这里说的三种映象都是包含真正操作系统VxWorks的映象,其中后两种可以直接启动并运行起来,但是第一种不行,它必须借助另一个叫做Boot Image的映象(可以在Tornado中的build->buildboot rom中生成)才能运行起来,也就是利用Boot Image引导起来然后

通过网口或串口下载真正包含VxWorks的LoadableImage,然后才能运行起来。也就是说Boot Image是和LoadableImage结合使用的。

现在看来一共有四种映象文件,让我们看看它们的组成:

(1)Boot Image:包含一段起始引导程序(BootStrapProgram)和一段ROM引导程序(ROM Boot Program)。

(2)LoadableImage:由操作系统VxWorks和应用组成的映象。

(3)ROM-basedImage(压缩/没有压缩):包含一段叫做BootStrapProgram的程序+LoadableImage(即有操作系统VxWorks和应用组成的映象)。 (4)ROM-ResidentImage:同上。

通过上面我们可以看出,ROM-based Image,ROM-ResidentImage,Boot Image三种映象都包含一段叫做BootStrapProgram的程序,可以把ROM引导程序的代码段和数据段拷贝到RAM中。同时,它具有启动功能。 三.VxWorks映象启动流程

下面让我们看看三种VxWorks的启动过程: 1.BootImage+Loadable Image

前面提到Loadable Image是依靠Boot Image加载启动的,首先由Boot Image中的BootStrapProgram程序把ROM引导程序(ROM Boot Program)加载到RAM中的RAM_HIGH_ADRS处,然后跳转到此处执行ROM引导程序,由ROM引导程序负责一系列简单的硬件初始化(网口,串口等),开始下载LoadableImage(即包含应用的VxWorks操作系统)到RAM_LOW_ADRS,然后跳转到此处启动VxWorks操作系统。 下面的图一是一个简单的流程图,后面的图二是更为详细的流程图。

图一

图二(1)

图二(2)

引导过程成功以后,RAM中ROM引导程序占用的空间(从RAM_HIGH_ADRS开始)可以重新被系统利用。

2.ROM-basedImage(压缩/没有压缩)

这种映象由起始引导程序(BootStrap Program)和基于ROM的VxWorks映象组成。因此,这种bootrom的体积较大。BootStrapProgram把基于ROM的VxWorks映象加载到内存的RAM_LOW_ADRS处,然后直接启动VxWorks操作系统(如果是压缩的,需要先解压缩)。图三是一个简图,图四是更为详尽的流程图。

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

Top