vxworks引导启动过程剖析

上传人:今*** 文档编号:105961581 上传时间:2019-10-14 格式:DOCX 页数:14 大小:131.69KB
返回 下载 相关 举报
vxworks引导启动过程剖析_第1页
第1页 / 共14页
vxworks引导启动过程剖析_第2页
第2页 / 共14页
vxworks引导启动过程剖析_第3页
第3页 / 共14页
vxworks引导启动过程剖析_第4页
第4页 / 共14页
vxworks引导启动过程剖析_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《vxworks引导启动过程剖析》由会员分享,可在线阅读,更多相关《vxworks引导启动过程剖析(14页珍藏版)》请在金锄头文库上搜索。

1、一 基本概念及引导概述1 bootloader/bootrom/bootstrapCPU上电经自复位的过程(由硬件时序逻辑决定的Power-On StrappingSequence)后,指令指针指向一个固定的地址(after-reset startingpoint)。这个固定地址因体系架构而异:在一个基于 ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000 处开始执行;在一个MIPS体系架构的嵌入式系统中,系统在上电或复位时通常都从地址0xBFC00000(0x1FC00000)处开始执行。无论是ARM中的0x00000000,还是MIPS中的0x1

2、FC00000,这个入口地址处往往存放的就是系统的Boot Loader程序。这个地址往往映射(可参考具体datasheet的Memory Map)为Boot Rom的地址空间,这里的Boot Rom通常为NOR Flash或者SPI Flash(早期的可能为EEPROM等非易失性存储介质)。由此可见,bootloader(引导加载程序)是系统上电后运行的第一段软件代码。bootrom则是用来存储bootloader的ROM/Flash芯片。当然bootrom(ROM/Flash)上不仅仅只是存储bootloader,往往还存储着系统映像、应用程序资源和用户配置数据等信息。这样,嵌入式设备每次

3、重新上电后,总能加载系统和恢复上一次的配置。因为嵌入式设备中往往没有配备磁盘,SDRAM又是易失的,因此bootrom上往往还存放着系统映像等数据(可能是压缩的)。在嵌入式系统中,通常没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动微码),因此整个系统的加载启动任务就完全由Boot Loader来完成。此时,CPU只认得指令,因此bootloader一般以纯汇编指令开始,而不应该包含任何ELF格式的文件头信息(这些信息只有特定OS才能识别)。bootstrap是bootloader的一部分,是最初级的引导,旨在初始化CPU、内存控制器、时钟、堆栈,目标是让CPU正常运作

4、起来。我们可以认为bootloader = bootstrap program + boot image。boot image往往初始化最小OS内核,搭建网络下载通道,提供一个可以交互的命令行,以便自我更新(update boot)或下载更新系统映像(update vxWorks)。bootloader通常都分为Stage1和Stage2两个阶段,这里的bootstrap program对应Stage1,boot image则对应Stage2。下面从代码构成角度入手,阐述VxWorks下的bootstrap program和boot image的含义。在vxWorks中,若含有bootlade

5、r(即下文提到的Boot Image + Loadable Image组合类型),则bootstrap program主要是指romInit.s+bootInit.c,boot image主要是指有bootConfig.c、sysAlib.s、sysLib.c以及BSP目录下的其他文件编译链接而成。通常为了节省空间,boot image部分被压缩作为数据段存储在bootstrap program之后bootrom.bin。bootstrap program是在ROM/Flash中运行的,当然为了执行更快,其后半部分也可能拷贝到RAM中执行。很显然,bootstrap program是不能压缩的

6、,否则无法完成自举。对于没有bootloader的引导型映像(即下文提到的ROM-based Image类型,vxWorks_rom*.bin),其固化在ROM/Flash的第一部分bootstrap program可能有romInit.s+romStart.c组成,后面无boot image,紧随其后的为vxWorks映像(可能被压缩)。2 vxWorks的bootrom类型bootrom的类型前缀或后缀说明bootrom压缩的bootrom映像(除bootstrap代码外)bootorm_uncmp非压缩的bootrom映像bootrom_resROM驻留型的bootrom映像无后缀ELF

7、可执行文件格式.hexMotorola S-record文件格式.bin裸的二进制格式(一般烧到ROM/Flash零地址处)3 引导流程概述系统上电后,CPU开始从预先安排的地址上开始执行一段指令,这段指令的作用首先是将可执行程序所需的最小环境搭建起来。这个初始化过程包括初始化CPU、内存控制器及各种必需输入/输出设备、磁盘控制器等等。以X86体系结构来说,需要初始化CPU、北桥、南桥,常说的BIOS就是这样一段初始化程序。在那些没有BIOS的架构中,这一工作由系统的bootloader完成。建立了最小可运行系统,操作系统的内核就可以运行了。于是,BIOS或bootloader程序将操作系统从

8、能够永久保存内容的存储介质中读取出来加载到内存中。这些可永久保存内容的存储介质可能是NVROM、磁盘、光盘等,例如我们常说的操作系统光盘。通常,操作系统在加载过程中还会对硬件环境做一次重新初始化,这一次初始化就不仅仅是最小运行环境了。包括CPU在内的全部计算机所包含的硬件都会被操作系统依次初始化,同时初始化的还包括操作系统内核本身。这样,整个系统就处于一种可控状态,可以开始执行用户应用程序了。从引导到系统启动是一个bottom-up的过程;启动后,用户交互到系统响应则是一个top-down的过程。二 VxWorks映象1 VxWorks映象的组成VxWorks映象由文本段(.text/.cod

9、e),数据段(.data)和BSS段(.bss)组成。文本段相当于代码段,是由一些指令组成的;数据段就是由一些初始化过的全局和静态变量组成;BSS段也是由全局变量和静态变量组成,只不过他们都没有经过初始化。2 VxWorks映象的类型(1).VxWorks(Loadable binary VxWorks image)RAM based VxWorks image, linked toRAM_LOW_ADRS.It is loaded into RAM via some external program such as abootROM.This is the default developme

10、nt image.(2).vxWorks_rom(Uncompressed ROMable binary VxWorks image)RAM based image thatstarts in ROM. The ROM startup code copies the entireimage to RAM and then jumps to it. This image generally has a slower startup time, but faster execution time, than vxWorks_romResident.(3).vxWorks_romCompress(c

11、ompressed ROMable binary VxWorks image)CompressedRAM based image thatstartsin ROM. This image can fit almost twice the code as other ROM images.But it has the slowest boot time, since the image must be uncompressed. The run-time speed is the same as for vxWorks_rom.(4).vxWorks_romResident(ROM-reside

12、nt version binary VxWorks image)ROM resident image.The program textremainsin ROM, only the data iscopiedto RAM. This image has the fastest boot time and uses the least amount of RAM, but runsslower on boards with slow ROM access.相关后缀的含义同bootrom。我们可将VxWorks Image的文件类型划分为两类三种:A加载型映象(VxWorks类型)(1)Loada

13、ble Image是包含用户程序的VxWorks操作系统映象,其不具备引导功能,需要借助bootloader引导程序通过网口或串口下载到RAM中。bootloader在此扮演了“搬运工”的角色。B可引导型映象可引导型(Bootable)映象包含含有用户程序的VxWorks操作系统映象,并包括完整的引导代码,可以在系统上电后自动完成自身的引导。我们在前面已经分析过,该类映像往往由bootstrap program(romInit.s+romStart.c)和紧随其后的为vxWorks映像(可能被压缩)组成。(2)ROM-based Image(压缩/没有压缩):即将Image直接烧入ROM/fl

14、ash,运行时将Image拷入(如果压缩则需解压)RAM中运行。(3)ROM-resident Image:Image的指令部分驻留在ROM中运行,仅将数据段部分拷入RAM。注意,以上三种映象都是包含完整VxWorks操作系统的映象,其中后两种可以直接启动并运行起来,但是第一种不行,它必须借助另一个叫做Boot Image的映象(可以在Tornado中的build-build bootrom中生成)才能运行起来,也就是利用Boot Image引导起来后通过网口或串口下载真正包含VxWorks的Loadable Image,然后才能运行起来。也即Boot Image往往和Loadable Ima

15、ge结合起来使用。现在看来一共有四种映象文件,让我们看看它们的组成:(1)Boot Image:包含一段起始引导程序(BootStrap Program)和一段ROM引导程序(ROM Boot Program)。(2)Loadable Image:由操作系统VxWorks和应用组成的映象。(3)ROM-based Image(压缩/没有压缩):包含一段叫做BootStrap Program的程序+Loadable Image(即有操作系统VxWorks和应用组成的映象)。(4)ROM-Resident Image:同上。通过上面我们可以看出,ROM-based Image,ROM-Reside

16、nt Image,Boot Image三种映象都包含一段叫做BootStrap Program的程序,可以把ROM引导程序的代码段和数据段拷贝到RAM中。同时,它具有启动功能。三 VxWorks映象启动流程下面让我们看看三种VxWorks的启动过程:1 BootImageLoadableImage注意:这里和下文的Boot Image是指存放在bootrom中的bootloader映像。前面提到LoadableImage是依靠Boot Image加载启动的,首先由Boot Image中的BootStrap Program程序把ROM引导程序(ROM Boot Program)加载(如果压缩则需解压)到RAM中的RAM_HIGH_ADRS处,然后跳转到此处执行ROM引

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号