VxWork BSP 和启动过程
VxWorks启动过程详解

VxWorks启动过程详解vxworks有三种映像:VxWorks Image的文件类型有三种- Loadable Images:由Boot-ROM引导通过网口或串口下载到RAM- ROM-based Images(压缩/没有压缩):即将Image直接烧入ROM,运行时将Image拷入RAM中运行。
-ROM-Resident Images:Image的指令部分驻留在ROM中运行,仅将数据段部分拷入RAM。
注意这里说的三种映像都是包含真正操作系统VxWorks的映像,其中后两种可以直接启动并运行起来,但是第一种不行,它必须借助另一个叫做Boot Image的映像(可以在Torn ado 中的build->build boot rom中生成)才能运行起来,也就是利用Boot Image引导起来然后通过网口或串口下载真正包含VxWorks的Loadable Image,然后才能运行起来。
也就是说Boot Image是和Loadable Image 结合使用的。
现在看来一共有四种映像文件,让我们看看它们的组成吧:-Boot Image:包含一段叫做BootStrap Programs的程序+一段ROM BOOT Program程序。
-Loadable Images:有操作系统VxWorks和应用组成的映像。
-ROM-based Images(压缩/没有压缩):包含一段叫做B ootStrap Programs的程序+ Loadable Images(即有操作系统VxWorks和应用组成的映像)-ROM-Resident Images:同上通过上面我们可以看出,ROM-based Images,ROM-Resid ent Images,Boot Image三种映像都包含一段叫做BootStrap Programs的程序,它具有启动功能,可以把ROM中的代码段和数据段拷贝到RAM中;下面让我们看看三种VxWorks的启动过程:Boot Image +Loadable Images:我们说过Loadable Images是依靠Boot Image加载启动的,首先有Boot Image中的程序BootStrap Programs把Boo t Program程序加载到RAM中的RAM_HIGH_ADRS处,然后控制权交给Boot Program,由Boot Program负责一系列简单的硬件初始化(网口,串口等),开始下载Loadable Images(即包含应用的VxWorks操作系统)到RAM_LOW_ADRS,然后控制权交给VxWorks操作系统开始执行。
VxWorks内核映像及BSP启动流程

函数。
基于处理器的特殊要求,
函数实现的开始处放置一个系统异常表。
该文件完全使用汇编代码编写,主要功能是完成平台的初始化(控制器初始化、屏蔽中断系统等),调用romInit函数。
bootInit.c文件中,且用C语言编写。
C语言程序,该函数被romInit 函数调用,他的主要功能是将代码从ROM复制到系统RAM 中。
对于被压缩的映像文件,在复制过程中,还要解压压缩
映像执行必要的代码重定位、解压和进行判断:如果接收到的启动命令是“
保存在line里,如果不是相应的命令也仍然从超级终端接收,并将此值保存在line数组中,并从这个数组中取出先前保存的值,根据这个值进行不同的操作。
当判断接收到的值为“@”
使目标机通过网络端口从上位机中加载
当判断接收到的值为“O”或“
本地文件系统加载VxWorks内核映像;当判断接收到的值为“l”或“L”时,则调用bootload
在bootload函数执行过程中,将
图5 BSP的启动流程图。
vxworks系统的bsp概念及启动过程

VxWorks 系统的BSP 概念及启动过程乔从连(船舶重工集团公司723所,扬州225001)摘要:VxWorks 作为一个高性能的嵌入式实时操作系统,已经得到了广泛的应用。
介绍了实时操作系统VxWorks 的BSP 的概念及组成,详细分析了VxWorks 系统的初始化流程和启动过程。
关键词:板级支持包;初始化;启动过程中图分类号:TP316.89 文献标识码:B 文章编号:CN3221413(2005)0120061204Concept and Starting Procedure of VxWorks System BSPQ IAO Cong 2lian(The 723Institute of CSIC ,Yangzhou 225001,China )Abstract :As a high 2performance embedded real 2time operating system ,VxWorks has been already applied widely.This paper introduces t he concept and component of VxWorks BSP ,analyses t he initialization flow and starting p rocedure of VxWorks system in detail.K eyw ords :board support package ;initialization ;starting p rocedure0 引 言板级支持包(board support package ,BSP )是介于硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好地运行于硬件。
在使用嵌入式系统VxWorks 时,有时需要根据硬件平台移植BSP 或者对某一配件的驱动进行开发修改。
BSP映像分析和启动流程

BSP映像分析和启动流程Vxworks映像有:bootrom,bootrom_uncmp,bootrom_res,vxworks,vxworks.st,vxworks_rom,vxworks.st_com,vxworks.res_com,vxworks.res_rom_nosym。
引导代码通常也是一种Vxworks映像,习惯称之为引导映像。
BSP本质上就是执行bootrom.bin,vxworks.bin这两个文件中的所有指令。
(也有可能是.st文件)Bootrom.bin就是bootrom(引导)映像。
Vxworks.bin就是vxworks映像。
映像区别:1.基于RAM,还是基于ROM?2.是否是ROM驻留型?3.是否压缩?4.是否带符号表?Bootrom (引导) 映像典型执行过程:romInit.s:romInit()→bootInit.c:romStart()→bootConfig.c:usrInit()→bootConfig.c:usrRoot()→ bootConfig.c:bootLoad()类型划分:1.基于ROM的压缩映像----bootrom将bootrom或flash中的代码段(即TEXT段)和数据段解压搬移到RAM中执行。
在bootInit.c的romStart()函数中实现。
2.基于ROM的非压缩映像----bootrom_uncmp将bootrom或flash中的代码段和数据段直接搬移到RAM中执行。
3.驻留ROM的非压缩映像----bootrom_res仅将bootrom或flash中的数据段搬移到RAM中,代码在ROM或Flash中执行。
Vxworks映像执行过程:sysAlib.s:_sysInit()→ usrConfig.c:usrInit()→ usrConfig.c:usrRoot()类型划分:1.可加载(Loadable)的映像类型:可加载型映像的执行需要通过引导代码(在引导映像中)把它加载到目标机RAM的RAM_LOW_ADRS中执行。
VxWorks引导启动过程

VxWorks引导启动过程一.引导过程1.bootstrap/bootloader/bootrombootstrap是固化在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完成。
建立了最小可运行系统,操作系统的内核就可以运行了。
VxWorks系统的BSP概念及启动过程

VxWorks系统的BSP概念及启动过程
乔从连
【期刊名称】《舰船电子对抗》
【年(卷),期】2005(28)1
【摘要】VxWorks作为一个高性能的嵌入式实时操作系统,已经得到了广泛的应用.介绍了实时操作系统VxWorks的BSP的概念及组成,详细分析了VxWorks系统的初始化流程和启动过程.
【总页数】4页(P61-64)
【作者】乔从连
【作者单位】船舶重工集团公司723所,扬州,225001
【正文语种】中文
【中图分类】TP316.89
【相关文献】
1.基于Pentium处理器VxWorks实时操作系统BSP的设计 [J], 张勇
2.嵌入式实时操作系统VxWorks下BSP分析及VxWorks裁减 [J], 褚哲;孟小锁
3.嵌入式语音通信系统中VxWorks BSP的设计实现 [J], 孙敬国;刘庆华
4.VxWorks系统的BSP设计与实现 [J], 王彦刚;吕遵明;万留进
5.基于MPC850 VxWorks系统的BSP设计 [J], 冯先成;李寒;张铁男
因版权原因,仅展示原文概要,查看原文内容请购买。
vxWorks应用程序加载的另一种办法
vxWorks应用程序加载的另一种办法
现在我们的工作中,应用程序一般都是和BSP 联编,然后将
vxworks_rom.bin 烧到班子里。
在BSP 启动后,调用应用程序的函数的。
但是这样有个问题,就是应用程序和BSP 结合的太紧密了。
BSP 开发者得将BSP 代码给应用程序开发者,或者应用程序开发者得将应用程序编译后的.a 文件给BSP 开发者,才能完成程序的升级!
那么下面的方法是我这两天弄出来的,可以将应用程序和BSP 开发分离的一个办法。
只要开始将接口约定好就可以了!还不是很成熟,我也还没有正式在项目中使用,但是我相信这是一个不错的选择!
首先,要建立一个文件系统,TFFS 的文件系统就可以。
磁盘大小只要可以放的下应用程序编译后的文件就好了。
这步就不赘述了。
然后,在BSP 工程的usrApp 中添加下载应用程序模块和启动接口程序的代码。
下面主要说明这步,代码如下:
#include loadLib.h
#include stdio.h
#include taskLib.h
#include ioLib.h
extern SYMTAB_ID sysSymTbl;
void usrAppInit (void)
{
#ifdef USER_APPL_INIT
USER_APPL_INIT; /* for backwards compatibility */
#endif。
vxworks bsp制作概要
VxWorks BSP制作概要要了解vxworks BSP的制作,首先要对vxworks的启动过程有个大体的了解,下面我们从vxworks的启动过程开始介绍。
VxWowks的启动过程一般来说,所有的处理器执行相同的逻辑步骤初始化和加载VxWorks,但一些处理器可能会有一些特殊的步骤,而另外一些则可能跳过一些步骤。
但它们都要进行以下步骤,如:初始化处理器,并在存储器的特定位置提供一段代码(可能还有一些表)以供处理器上电或重启时运行。
这段代码设置处理器的状态,初始化存储器和存储器地址,关中断把控制权交给启动代码(bootstrapping code)。
1. 处理器首先跳到ROM的入口地址,设置状态字并创建一个哑堆栈(dummy stack);2. 跳到C程序的入口地址,根据哑堆栈中的参数决定是否清零内存RAM(如是冷启动(cold start)则清零),再把ROM段的剩余部分拷贝到RAM(如果ROM 代码是压缩的,还要解压);3. 处理器跳到RAM的入口地址(bootConfig.c),使cache无效,清零bss段,初始化向量表,进行板级初始化。
4. 启动多任务内核。
VxWorks的boot ROM本身就是一个独立的应用。
开发者可用它来通过网络启动一个VxWorks映像并和应用代码连接。
1 VxWorks启动流程romInit()——》romStart()——》sysInit()——》initVectBaseSet()——》sysHwInit()——》usrKernelInit()——》kernelInit()——》usrRoot()2文件和程序说明romInit.S:romInit()关中断,把启动类型(cold/warm)入栈,清零cache后跳到romStart的入口。
bootInit.C:romStart()把ROM代码和数据段拷贝并重定位到RAM,清零RAM的未用部分,需要的话要进行解压缩,然后跳到sysInir()的入口地址。
VxWork介绍及编程
VxWork介绍及编程VxWorks BSP和系统启动装载顺序VxWorks系统简介及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
WindRiver公司网址实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度迚程轮流运行,分时操作系统由调度程序自动计算迚程的优先级,而不是由用户控制迚程的优先级。
这样的系统无法实时响应外部异步事件。
实时操作系统能够在限定的时间内执行完所规定的功能,幵能在限定的时间内对外部的异步事件作出响应。
分时系统主要应用于科学计算和一般实时性要求不高的场合。
实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
VxWorks的特点∙可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
∙实时性实时性是指能够在限定时间内执行完规定的功能幵对外部的异步事件作出响应的能力。
实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。
VxWorks 的实时性做得非常好,其系统本身的开销很小,迚程调度、迚程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。
vxworks安装方法
安装方法如下:
1。解压
2。拷贝 Tornado2.2SETUPcracklicense.dat 到 cflexlm (没有的话,新建该文件夹)
3。注册环境变量:
在 桌面 点“我的电脑”的右键,选择“属性”,再选择“高级”,再选择“环境变量”,可以选择“系统变量”中的“新建”,变量名:LM_LICENSE_FILE 变量值:cflexlmlicense.dat
1、启动Tornado2.2,选择Build->Build Boot Rom,在弹出的对话框里选择pcPentium3和 bootrom_uncmp、gun,OK等build output里出现done,再将$(WIND_BASE)\target\ pcPentium3下的bootrom_uncmp文件拷贝到$(WIND_BASE)\host\x86-win32\bin,在此目录下运行 mkboot a: bootrom_uncmp就可以创建启动盘
(3)除此之外,还可以在shell底下对程序进行断点设置,单步跟踪等,使用方法于VC类似。
(4) 将D:\test\first\PENTIUM3gnu下的first.out拷贝到映像vxworks所在目录,就可以直接在目标机上看到此文件。在目标机键盘上键入ls,可以看到first.out。再键入 ld < first.out,从主机下载该文件,然后键入函数名first,就可以看到和shell底下一样的结果了。
然后都点确定就可以了。
4。双击 目录下的 Tornado2.2hostx86-win32binTornado.exe,出现一个安装界面,按要求选择即可。
vxworks_install key,:cAQ8i-qP2I&-g$vT6-3&gjw-bEk9g
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VxWork BSP 和启动过程开发BSP主要的两点:系统image的生成,image的种类,image的download下载过程,系统的启动顺序和过程,调试环境的配置及远端调试的方式和方法,相应BSP设置文件的修改(网络,串口..),BSP各文件的组成和作用.要对系统底层驱动清楚,也就是对CPU及相关的硬件有所了解.主要是32微处理器(上电启动过程, download image的方式方法,读写ROM,地址空间分配,MMU,寄存器,中断定义,..).参照硬件资料,多读一些源码会有所帮助.Tornado 2 开发调试环境协议框图主机开发(Host Development System) 目标机(Target System)协议通信两个主要两个协议WTX协议(Wind River Tool eXchange): 用于开发机内部Tornado工具与Target Server之间通信.WDB协议(Wind DeBug): 用于主机Target Server与目标机之间的通信.一.基本概念BSP定义:Provides VxWorks with primary interface to hardware environment.作用:在通电后,初始化硬件.支持VxWorks和硬件驱动通信.使hardware-dependent 和hardware-independent在VxWorks系统中很好的结合.主要BSP主要文件目录的组成及主要文件的作用:目录target/config/All:这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件.configAll.h:缺省定义了所有VxWorks的设置.如果不用缺省的设置,可在BSP目录下的config.h文件中用#define或#undef方式来更改设置.bootInit.c:在romInit.s后,完成Boot ROM的第二步初始化.程序从romInit.s中的romInit()跳到这个文件中的romStart().来执行必要的解压和ROM image的放置.bootConfig.c: 完成Boot ROM image的初始化和控制.usrConfig.c: VxWorks image的初始化代码.目录target/config/comps/src:涉及系统核心的components,主要由target/config/All中usrConfig.c中函数调用目录target/config/bspname:包含系统或硬件相关的BSP文件.Makefile一些命令行控制images的生成,参见BSP设置部分及生成下载READMEBSP发布纪录,版本,总的文档config.h包括所有涉及CPU主板的设置及定义(includes,definations),参见BSP设置文件及生成下载configNet.h网络驱动的主要设置文件,主要对END驱动设置.romInit.s汇编语言文件,是VxWorks Boot ROM和ROM based image的入口,参见系统启动部分sysALib.s汇编语言文件,程序员可以把自己的汇编函数放在这个文件里,在上层调用.VxWorks image的入口点_sysInit在这个文件里,是在RAM中执行的第一个函数.sysLib.c包含一些系统相关的函数例程,提供了一个board-level的接口,VxWorks和应用程序可以以system-indepent的方式生成.这个文件还能包含目录target/config/comps/src的驱动. sysScsi.c可选文件用于Scsi设备设置和初始化.sysSerial.c可选文件用于所有的串口设置和初始化.bootrom.hexASIC文件包含VxWorks Boot ROM代码VxWorks运行在目标机上,完整的,连结后的VxWorks二进制文件.VxWorks.sym完全的,连结后带有符号表的VxWorks二进制文件VxWorks.st完全的,连结后,standalone,带有符号表的VxWorks二进制文件BSP用"make"来编译连接生成(Created),而不是用Tornado的工具.BSP和应用程序都可以在"make"或"tornade"上开发(developed)BSP被设置包括以下驱动:中断控制interrupt controller,计时器timer(sys/aux),串口UART(serial),显示屏LCD,键盘Keyboard(opt),触摸屏touch-screen(opt).前面三个是BSP的主要部分.BSP默认的download VxWorks RAM image方式是从ethernet.串口电缆需要用来和开发板(COM1)通信,通过协议WDB.VxWorks Image的种类:Loadable images.ROM-based images---compressed/uncompressed.ROM-Resident images.ROM-resident image 对一些系统内存RAM资源较少的情况下,为了节省资源,只拷贝image 中的数据部分(data segment)到内存RAM,留下程序部分(text segment)在ROM中执行。
这样空出更多的RAM空间给应用程序。
并不是所用得板子都支持这种VxWorks image.VxWorks boot images---A VxWorks image designed to load another VxWorks images containing application code (often refer to as "boot code")"Burned" into ROM or loaded into Flash.Maybe execute in ROM/Flash (ROM-resident).Maybe execute out of RAM.VxWorks images---A VxWorks image containing "end-user" code,Sub-types:Loadable VxWorks image--VxWorks images loaded by VxWorks boot image.Loadable VxWorks image是通过VxWorks boot image装载的VxWorks images.VxWorks ROM image--VxWorks image "burned" into ROM or loaded into Flash.May execute in Flash.VxWorks images consist of:Text segment---executable instruction.Data segment---Initilized global and static varibles.BSS.VxWorks Image文件类型的说明Uploaded images(通过网口或串口下载到RAM):vxWorks - basic Tornado, shell 和symbol table 在主机端vxWorks.st(文件很大)- 独立的image,包含shell和symbol table在目标板运行ROM based images(直接烧入ROM的VxWorks):vxWorks_rom - Tornado in ROM,非压缩, 在RAM 中运行vxWorks.res_rom_nosym - Tornado in ROM, 非压缩,在ROM 中运行vxWorks.st_rom - Stand-alone in ROM, 压缩, RAM 中运行vxWorks.res_rom - Stand-alone in ROM, 非压缩, ROM 中运行非BSP make文件中包括:include $(TGT_DIR)/h/make/rules.libraryinclude $(TGT_DIR)/h/make/defs.default(define default value for makefile) ...............BSP make文件中包括: include $(TGT_DIR)/h/make/rules.bsp ...ARM7 做VxWorks imgage 时,在makefile 文件中用MACH_EXTRA 代替LIB_EXTRA, 这样生成的VxWorks时不压缩的在ROM中运行的程序(uncompressed ROM-based VxWorksimage),否则就是压缩的在RAM中运行的程序(compressed RAM-based VxWorks image).启动顺序的一些概念The sequence of events which occur as power-up are a function of type VxWorks image with will run.处理器"跳"到再ROM或Flash中Boot-strap 程序的起点. 这个程序主要有以下作用:关闭中断(来自处理器)初始化目标内存(target memory)装载要运行的VxWorks image segmentsJumps to code to place target in quiet state启动顺序Boot Sequence--Loadable VxWorks imageBootstrap code executes and loads text and data segments of boot code(from ROM or Flash) into RAM.具体执行如下:Boot code compressed-Decompression during copyBoot code uncompressed-copyBoot code is ROM-resident-copy data segment onlyBoot program executes and loads VxWorks image into RAM.Jumps to VxWorks load point. System initialization code statically linked into loaded VxWorks image executes and completes initialization.Startup Sequence--VxWorks 初始化做以下工作:Place hardware environment in a quiet state.Initalize and start the wind kernelSpawn a tast to complete system initializationSystem initialization task will initialize support for end-user specified facilities,and start the end-user's application二.系统启动顺序VxWorks image分为在ROM中运行和在RAM中运行两种.两者启动顺序的区别在于sysInit()函数的调用.该函数在RAM运行的VxWorks中初始化RAM.ROM中运行的VxWorksVxWorks在ROM中运行,即写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks.注意:ROM运行的VxWorks并不支持所有的主扳,应以主扳手册为准.文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->文件usrConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...)VxWorks在ROM中运行主要是为了节省RAM空间,以便应用程序有更大的空间运行.只把VxWorks image的data段复制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中执行.ROM中运行的VxWorks缺点是运行速度慢.RAM中运行的VxWorksVxWorks在RAM中运行,即写入ROM中的Boot或VxWorks Image是压缩的,需要先解压copy所有的text和data到RAM的LOCAL_LOW_ADRS中,下面sysInit()主要是初始化RAM用的,系统直接跳到RAM的首地址,运行VxWorksusrInit()前面不压缩,即romInit(),romStart()不能压缩.文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->sysaLib.s中的sysInit()---->文件usrConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...) RAM运行的Boot或VxWorks image的text段或data段会从ROM复制到RAM,在RAM 中运行.其中usrRoot()是VxWorks启动的第一个任务,由它来初始化driver,network等描述: romInit.s first execute in flash,minal initiliz,then jump to romStart.romStart() 开始装载和解压image到RAM,sysaLib.s是在RAM中执行的第一个函数. BootROM imageBootROM image最少的系统初始化,主要用于启动装载VxWorks image.一般有压缩和不压缩两种形式,如bootrom和boot_uncmp.与VxWorks image的区别在于一个Bootrom调用bootConfig.c,而VxWorks调用usrConfig.c.文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->文件bootConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...)其中/target/config/all/bootConfig.c是Boot ROM设置模块.用于通过网络加载VxWorks image.usrRoot()---->bootCmdLoop(void)命令行选择,或autobooting----->bootLoad(pLine, &entry)加载模块到内存(网络,TFFS,TSFS...)----->netifAttach()---->go(entry)----->(entry)()从入口开始执行,不返回.各个函数的主要作用romInit()-----power up,disable interrupt,put boot type on the stack,clears caches.romStart()-----load Image Segments into RAM.usrInit()-----Interrupt lock out,save imformation about boot type,handle all the Initialization before the kernel is actually started,then starts the kernel execution to create an initial task usrRoot().This task completes the start up.sysHwInit()-----Interrup locked,Initializes hardware,registers,activation kernelKernelInit(usrRoot,...)-----Initializes and starts the kernel.Defines system memory partition.Activates a task tUsrRoot to complete initalization.Unlocks inierrupts.Uses usrInit()stack.usrRoot()初始化内存分区表(memory partition library)初始化系统系统时钟(system clock)初始化输入输出系统(I/O system)----可选Create devices----可选设置网络(Configure network)--------可选激活WDB目标通信(Activate WDB agent)---------可选调用程序(Activate application)VxWorks Image在RAM中解压的位置RAM Low Address,RAM High Address和有关定义在BSP,config.h,makefile文件中定义.可参见BSP配置文件及生成下载VxWorks 在ROM注:浅蓝色为整个VxWorks Image.其中RAM_LOW_ADRS, RAM_HIGH_ADRS 等一些地址在makefile 和BSP config.h中定义.可参见BSP配置文件及生成下载。