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

合集下载

VxWorks使用说明书

VxWorks使用说明书

VxWorks使用说明书1、概述VxWorks操作系统的集成环境叫Tornado。

T ornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。

Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(T arget Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。

它主要由以下几部分组成:VxWorks高性能的实时操作系统;* 应用编译工具;* 交互开发工具;下面对T ornado集成环境的各组件功能分别介绍:* Tornado开发环境Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。

* WindConfig:T ornado系统配置通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。

通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。

* WindSh:Tornado外壳WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。

Tornado外壳还能解释常规的工具命令语言TCL。

WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。

它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。

* 浏览器Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。

VxWorks内核映像及BSP启动流程

VxWorks内核映像及BSP启动流程

函数。

基于处理器的特殊要求,
函数实现的开始处放置一个系统异常表。

该文件完全使用汇编代码编写,主要功能是完成平台的初始化(控制器初始化、屏蔽中断系统等),调用romInit函数。

bootInit.c文件中,且用C语言编写。

C语言程序,该函数被romInit 函数调用,他的主要功能是将代码从ROM复制到系统RAM 中。

对于被压缩的映像文件,在复制过程中,还要解压压缩
映像执行必要的代码重定位、解压和进行判断:如果接收到的启动命令是“
保存在line里,如果不是相应的命令也仍然从超级终端接收,并将此值保存在line数组中,并从这个数组中取出先前保存的值,根据这个值进行不同的操作。

当判断接收到的值为“@”
使目标机通过网络端口从上位机中加载
当判断接收到的值为“O”或“
本地文件系统加载VxWorks内核映像;当判断接收到的值为“l”或“L”时,则调用bootload
在bootload函数执行过程中,将
图5 BSP的启动流程图。

(完整word版)VxWorks及BSP启动流程与顺序

(完整word版)VxWorks及BSP启动流程与顺序

目录1vxworks映像类型 (1)1.1 可加载的映像类型(vxwoks) (1)2vxworks映像启动顺序 (2)2。

1 可加载型vxworks映像启动顺序 (2)2。

2 基于ROM的vxworks映像启动顺序 (3)2。

3 基于ROM驻留型vxworks映像启动顺序 (4)3BSP基础知识 (4)3.1 BSP的定义 (4)3。

2 BSP的功能 (4)3.3 BSP的组成 (5)4BSP的启动 (5)4。

1 BSP的启动流程 (6)4。

2。

1 ............... romInit.s:romInit()函数74.2.2 bootInit。

c:romStart()函数 (21)4.2。

3 ......................... bootConfig。

c分析374。

2。

4 .................. sysLib.s:sysInit()函数404.2.5 usrconfig。

c:usrInit()函数 (42)4.2.6 usrconfig。

c:usrRoot()函数 (43)5总结 (47)VxWorks及BSP启动流程与顺序———李守轩摘要:本文首先介绍vxworks映像的类型及各类型vxworks映像的启动顺序;然后介绍BSP的启动流程与初始化顺序.关键词:vxworks映像;BSP启动;代码分析1 vxworks映像类型对于vxworks映像的启动情况,从根本上看,在初始化和装载vxworks映像的过程中,处理器所执行的步骤在逻辑上是一样的.对于有些处理器可能需要增加一些额外的步骤,而另一些处理器可能会省略掉某些步骤。

当构造vxworks映像时,根据需要可以构造不同类型的映像,系统把这些映像划分成以下三种类型.1.1可加载的映像类型(vxwoks)可加载型映像的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。

而引导代码分为两种:(1)引导代码固化在ROM或FLASH中;(2)引导代码是一个独立的vxworks应用;引导代码通常也是一种vxworks映像,也被称为引导映像。

VxWorks串口驱动概述

VxWorks串口驱动概述

串口驱动概述1.启动顺序在usrconfig.c 中,usrinit()调用syshwinit(), 对系统硬件进行基本的初始化,使其处于安静状态。

syshwinit()[在syslib.c 中]调用sysserial.c 中的sysserialhwinit()对bsp 串行器件进行初始化,使其处于静态;sysserialhwinit()再通过xxdevinit()复位串行通道。

在usrinit()函数的最后,产生根任务usrroot()。

usrroot()调用sysclkconnect()。

syshwinit2()主要安装系统中断,它调用sysserialhwinit2() 连接串行中断。

如果定义了include_tty_dev,而没有定义include_tycodrv_5_2,在usrroot()任务中调用ttydrv()来初始化串行设备驱动,并通过ttydevcreate()函数创建串行设备。

串行驱动是在vxworks系统开始过程中被初始化的。

2. 编码步骤(1)初始化①定义系统可支持的串行通道数。

②初始化驱动的设备描述③写设备初始化代码(2)写入口程序(3)写中断服务程序管理中断(4)使用模板 wind/target/src/drv/ssio/templatesio.c3.详细步骤介绍(1)定义系统可支持的串行通道数。

在config.h 中定义串口通道数num_tty。

(2)初始化驱动的设备描述template_chan 例子如下所示:typedef struct{/* sio_chan *must* be first */sio_chan sio; /* standard sio_chan element */uint32 iobase;uint32 vecbase;uint32 intlevel;/* callbacks */status (*gettxchar) (void *, char *);void (*putrcvchar) (void *, char);void (*errorrtn) (void *, int, void *, int);void * gettxarg;void * putrcvarg;2void * errorarg;/* misc */int intconnect; /* intconnect done flag */int baudfreq; /* current baud rate */int mode; /* current mode (interrupt or poll) */int clkfreq; /* input clock frequency */uint_t options; /* hardware options */int scanmode; /* keyboard mapping mode */} template_chan;在xx_drv 结构中每一个通道有一个xx_chan 结构。

vxworks系统的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 或者对某一配件的驱动进行开发修改。

vxworks系统及函数详解

vxworks系统及函数详解

VxWork介绍及编程VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。

良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。

它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。

分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。

这样的系统无法实时响应外部异步事件。

实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。

分时系统主要应用于科学计算和一般实时性要求不高的场合。

实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。

VxWorks的特点•可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。

而稳定、可靠一直是VxWorks的一个突出优点。

自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。

•实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。

实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。

VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。

工控机vxworks说明文档

工控机vxworks说明文档

VxWorks CF卡及网络启动方法:CF卡格式化后分区,分出小于2G的空间,然后格式化文件系统选择fat16,勾选建立dos系统。

将、msdos.sys、io.sys三个文件拷入分区.新建vxworks boot loader工程(为了生成boorom),选好bsp后修改bsp中的config.h文件,修改方法见附件《vxworks的default boot line说明》。

clean project,然后编译工程。

生成bootrom.bin文件,将后缀改成sys,即得到bootrom.sys文件拷入cf卡。

将目标程序工程得到的vxworks文件拷入即可。

第一次启动时输C:lock把引导写入扇区VXWORKS电脑模拟单步调试方法建立downloadble工程,调试按钮里面选kerneltask,entrypoint里面填上入口函数下入控创机器建立的工程叫vxworks image project机器模拟调试建立工程叫downloadble kernel module project打开文件:电脑模拟用 fp= fopen("host:D:/juzhensuanfa/shishi/data.txt","r");机器用fp= fopen("/ata0a/data.txt","r");Dos命令下arp –a查看网卡地址。

工控机vxworks下E:\WindRiver64-wrs\vxworks-6.4\target\config,passauold文件夹的BSP时候网卡地址:00-25-a8-00-09-95data.txt文档写完矩阵以后最后一行要是回车注意组播地址的问题,第一字节最后一位是1stime.c文件里面把win32改成vxworks,有个取毫秒时间的被改了成time(NULL)ms_asn1_to_local在mms_vvar.h中有声明887行VOID readtxtcfg()读txt 文件配置电网拓扑矩阵,此方法不灵活,以后后台系统成熟后改成通过后台图形界面自动搜索拓扑生成array矩阵。

VxWorks及BSP启动流程与顺序

VxWorks及BSP启动流程与顺序

目录1vxworks映像类型 (1)1.1可加载的映像类型(vxwoks) (1)2vxworks映像启动顺序 (1)2.1可加载型vxworks映像启动顺序 (2)2.2基于ROM的vxworks映像启动顺序 (2)2.3基于ROM驻留型vxworks映像启动顺序 (3)3BSP基础知识 (3)3.1BSP的定义 (3)3.2BSP的功能 (3)3.3 BSP的组成 (4)4BSP的启动 (4)4.1 BSP的启动流程 (4)4.2.1romInit.s:romInit()函数 (5)4.2.2bootInit.c:romStart()函数 (14)4.2.3bootConfig.c分析 (24)4.2.4sysLib.s:sysInit()函数 (26)4.2.5usrconfig.c:usrInit()函数 (27)4.2.6usrconfig.c:usrRoot()函数 (28)5总结 (31)VxWorks及BSP启动流程与顺序———李守轩摘要:本文首先介绍vxworks映像的类型及各类型vxworks映像的启动顺序;然后介绍BSP的启动流程与初始化顺序。

关键词:vxworks映像;BSP启动;代码分析1 vxworks映像类型对于vxworks映像的启动情况,从根本上看,在初始化和装载vxworks映像的过程中,处理器所执行的步骤在逻辑上是一样的。

对于有些处理器可能需要增加一些额外的步骤,而另一些处理器可能会省略掉某些步骤。

当构造vxworks映像时,根据需要可以构造不同类型的映像,系统把这些映像划分成以下三种类型。

1.1可加载的映像类型(vxwoks)可加载型映像的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。

而引导代码分为两种:(1)引导代码固化在ROM或FLASH中;(2)引导代码是一个独立的vxworks应用;引导代码通常也是一种vxworks映像,也被称为引导映像。

VxWorks及BSP启动流程与顺序

VxWorks及BSP启动流程与顺序

目录1vxworks映像类型 (1)1.1 可加载的映像类型(vxwoks) (1)2vxworks映像启动顺序 (1)2.1 可加载型vxworks映像启动顺序 (2)2.2 基于ROM的vxworks映像启动顺序 (2)2.3 基于ROM驻留型vxworks映像启动顺序 (3)3BSP基础知识 (4)3.1 BSP的定义 (4)3.2 BSP的功能 (4)3.3 BSP的组成 (4)4BSP的启动 (5)4.1 BSP的启动流程 (5)4.2.1 romInit.s:romInit()函数 (6)4.2.2 bootInit.c:romStart()函数 (14)4.2.3 bootConfig.c分析 (24)4.2.4 sysLib.s:sysInit()函数 (27)4.2.5 usrconfig.c:usrInit()函数 (28)4.2.6 usrconfig.c:usrRoot()函数 (29)5总结 (32)VxWorks及BSP启动流程与顺序———李守轩摘要:本文首先介绍vxworks映像的类型及各类型vxworks映像的启动顺序;然后介绍BSP的启动流程与初始化顺序。

关键词:vxworks映像;BSP启动;代码分析1vxworks映像类型对于vxworks映像的启动情况,从根本上看,在初始化和装载vxworks映像的过程中,处理器所执行的步骤在逻辑上是一样的。

对于有些处理器可能需要增加一些额外的步骤,而另一些处理器可能会省略掉某些步骤。

当构造vxworks映像时,根据需要可以构造不同类型的映像,系统把这些映像划分成以下三种类型。

1.1可加载的映像类型(vxwoks)可加载型映像的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。

而引导代码分为两种:(1)引导代码固化在ROM或FLASH中;(2)引导代码是一个独立的vxworks应用;引导代码通常也是一种vxworks映像,也被称为引导映像。

自己写的教程CF卡启动VxWorks系统

自己写的教程CF卡启动VxWorks系统

自己写的教程CF卡启动VxWorks系统X86平台下从CF卡启动vxWorks方法1.格式化CF卡在PC104工业计算机上,CF卡可被BIOS识别为硬盘,也可通过读卡器识别为移动设备。

使用USB CF卡读卡器,将其连接到到运行XP的计算机上,打开DiskGenius硬盘管理工具,可识别到该移动存储设备,如图1所示。

图1DiskGenius工具下识别移动存储设备选中移动存储设备(CF卡),图中标示为T1, 点击菜单栏的格式化,弹出格式化分区对话框,文件系统、簇大小按图中所示选择;卷标,用户随意定义,没有影响。

在此提醒:虽然在window7系统也可以格式化CF卡,但是经实验证明不可靠,最好用DiskGenius硬盘管理工具格式化CF卡。

2.为CF卡创建引导扇区(1)打开Vmvare软件,新建虚拟机,将制作好的DOS环境引导镜像文件(boot.flp)加载到软盘驱动器中,如下图2所示:图2(2)打开虚拟机电源,进入DOS环境,如下图3所示:图3此时换掉刚刚的软盘镜像boot.flp,替换为另一个软盘镜像文件(包含创建引导扇区命令),在设备状态那一栏,勾上“已连接”,勾掉“打开电源时连接”,如图4所示:图4此时进入DOS环境中,双击鼠标进入(退出,则按ctrl+alt),图中的A盘,就是我们刚刚换入的软盘镜像,键入dir命令,即可看到虚拟软盘A中的文件,其中就是我们用来为CF卡创建引导扇区的命令。

如图5所示:图5(3)将CF读卡器(带有CF)插入USB口,点击编辑虚拟机配置,进入下图中,通过添加硬件向导,选择一个物理硬盘,此时在“设备”下,应该选择PhysicalDrive1,而不是图中的PhysicalDrive0。

如下图6所示:图6(4)硬盘添加成功,C盘(即所插入的CF)就是合法的,然后执行vxsys c:命令,即可成功为CF卡创建引导扇区。

如下图7所示:图7至此,DOS环境下的相关操作已经完成,CF已经成功创建了引导扇区。

VxWorks引导启动过程

VxWorks引导启动过程

VxWorks引导启动过程一基本概念及引导概述1 bootloader/bootrom/bootstrapCPU上电经自复位的过程(由硬件时序逻辑决定的Power-On StrappingSequence)后,指令指针指向一个固定的地址(after-reset startingpoint)。

这个固定地址因体系架构而异:在一个基于ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000 处开始执行;在一个MIPS体系架构的嵌入式系统中,系统在上电或复位时通常都从地址0xBFC00000(0x1FC00000)处开始执行。

无论是ARM中的0x00000000,还是MIPS中的0x1FC00000,这个入口地址处往往存放的就是系统的Boot Loader程序。

这个地址往往映射(可参考具体datasheet的Memory Map)为Boot Rom的地址空间,这里的Boot Rom通常为NOR Flash或者SPIFlash(早期的可能为EEPROM等非易失性存储介质)。

由此可见,bootloader(引导加载程序)是系统上电后运行的第一段软件代码。

bootrom则是用来存储bootloader的ROM/Flash芯片。

当然bootrom(ROM/Flash)上不仅仅只是存储bootloader,往往还存储着系统映像、应用程序资源和用户配置数据等信息。

这样,嵌入式设备每次重新上电后,总能加载系统和恢复上一次的配置。

因为嵌入式设备中往往没有配备磁盘,SDRAM又是易失的,因此bootrom上往往还存放着系统映像等数据(可能是压缩的)。

在嵌入式系统中,通常没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动微码),因此整个系统的加载启动任务就完全由Boot Loader来完成。

此时,CPU只认得指令,因此bootloader一般以纯汇编指令开始,而不应该包含任何ELF格式的文件头信息(这些信息只有特定OS才能识别)。

基于vxWorks的BSP启动过程实例分析

基于vxWorks的BSP启动过程实例分析

一.引言BSP是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。

所谓初始化是指从系统上电复位开始直到wind kernel和usrRoot根任务启动的这段时间,系统的执行过程。

驱动程序就是一些包含I/O操作的子函数。

初始化包括:CPU Init、Board Init、System Init。

CPU Init初始化CPU的内部寄存器。

Board Init初始化智能I/O的寄存器,将device打通。

System Init为系统的运行准备数据结构,进行数据初始化。

驱动程序的特点是不能自动执行,只能被动调用。

调用可以有三种方式:任务直接调用、任务调用System Call、任务调用服务。

所以驱动程序可以抽象为三个层次:常规操作、与VxWorks的接口、与Component的接口。

常规操作是设备的固有操作逻辑,有两层含义:I/O编址微观上表现为CPU操作device的寄存器、宏观上表现为具体操作的含义。

驱动程序与VxWorks的接口、驱动程序与Component的接口有三层含义:I/O管理、操作类型规整及参数规整。

二、MPC8260 ADS Board BSP 工作流程系统在上电之后,第一个执行的为romInit模块代码,该段代码单独存为一个文件:romInit.s。

romInit.s是一个汇编级的程序,主要完成系统最基本的硬件初始化工作。

RomInit模块分析:这个模块为VxWorks Boot Rom的入口代码,程序的入口点romInit处是上电后首先执行的代码,他设置BOOT_COLD参数,该参数将被传送到romStart( )程序。

当程序sysToMonitor()运行时,它会跳到romInit处后8字节的地方开始执行,来实现一次“热启动”。

下面为冷启动与热启动的具体实现:_romInit:romInit:bl cold /* jump to the cold boot initialization */nop /* 到这条指令结束,两条指令共占用了8个字节*/bl start /* jump to the warm boot initialization */cold:……start:……下面我们来看一看在cold段里,程序作了那些工作:……bl start /* jump to the warm boot initialization */cold:li r3, BOOT_COLD /* set cold boot as start type *//*根据前面的注释,BOOT_COLD将会被传送到romStart( )程序中去*/addis r4,0,0x0F01 /* R4 holds the IMMR base address */addis r5,0,0x0000 /* Clear out all mask bits */ori r5,r5,0x0836stw r5,0x0104(r4) /* option register for bank 0 */isync /* synchronize *//* 这段代码的目的是初始化寄存器Option register bank 0,将0x0836写入该寄存器*/ /** initialize the IMMR register before any non-core registers* modification. The default IMMR base address was 0x0F000000,* as originally programmed in the Hard Reset Configuration Word.*/lis r4, HIADJ (INTERNAL_MEM_MAP_ADDR)addi r4, r4, LO (INTERNAL_MEM_MAP_ADDR)addis r8,0,0x0F01 /* IMMR was at 0x0f000000 */stw r4,0x01a8 (r8) /* IMMR now at 0x04700000 */isync/*这段代码的目的是修改寄存器IMMR的值,重新设定内部内存的基址,有了这段代码,我们在修改该基址的时候,就可以直接通过修改INTERNAL_MEM_MAP_ADDR的值就可以完成,无需修改这段代码。

vxWorks在虚拟机上运行的说明

vxWorks在虚拟机上运行的说明

如何在虚拟机运行vxWorks1.什么是bootrombootrom相当于linux系统中常用的grub工具。

2.生成bootrombootrom由BSP生成。

拿到BSP之后,一般我们只需要修改config.h文件,以修改bootrom 启动后从哪里加载vxworks镜像。

在config.h文件中,找到定义宏DEFAULT_BOOT_LINE的地方,根据目标板CPU类型选择需要修改哪一个宏。

如,我们在虚拟机上运行vxWorks,而虚拟机的CPU是PENTIUM4系列,所以修改PENTIUM4下面的DEFAULT_BOOT_LINE。

#define DEFAULT_BOOT_LINE \"lnPci(0,0)host:vxWorks h=192.168.100.1e=192.168.100.50:ffffff00 u=vxworks pw=vxworks tn=vmware"以上表示,bootrom启动后,镜像是从以太网卡的第0网卡的第0个端口加载,本地IP 地址为192.168.100.50,由e=192.168.100.50:ffffff00所指定,注意后面的ffffff00是子网掩网;尝试从192.168.100.1主机的FTP获取vxWorks镜像,使用的FTP用户名为vxworks,即u=vxworks所指定的,密码由pw=vxworks指定。

配置完成后,双击桌面的快捷方式“VxWorks_-_Pentium”,这个快捷方式其实就是启动了一个cmd(以后不特殊说明,所有的cmd均表示双击桌面的快捷方式“VxWorks_-_Pentium”启动的cmd),只是预先设置了很多环境变量。

进入BSP目录,在命令行输入make bootrom.bin,即可在BSP目录下生成bootrom.bin,也就是我们需要的bootrom。

3.使用bootrom3.1.使用虚拟软驱引导创建虚拟机(注意操作系统是other)。

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

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

1三种不同的VxWorks映象比较VxWorks是一种灵活的、可裁剪的嵌入式实时操作系统。

用户可以根据需要创建自己的VxWorks映象,由它来引导目标系统,而后下载并运行应用程序。

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

1.1 可加载的VxWorks映象这是一种运行于RAM的VxWorks映象。

它不包含搬移程序,需要借助于一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处。

这是缺省的开发映象。

在开发的初期阶段,用户可以根据需要添加或删除一些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映象这是一种运行于RAM中,但起初存放于ROM中的VxWorks映象。

即该映象需要和搬移程序一起固化在BOOT中。

目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks 映象拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。

Vxworks的引导过程

Vxworks的引导过程

VxWorks的引导过程此文为学习记录,非正式文档相关术语说明如下:Boot: 引导或加载Boot ROM : 用来存放boot程序的ROM, boot程序首先对硬件作必要的基本的始化后搬运boot程序到RAM空间。

然后启动加载程序通过网口、串口或者扩展FLASH加载VxWorks系统。

Boot ROM程序可看作是一个独立的系统,具有自加载功能和通过串口、网口或扩展FLASH加载VxWorks系统的功能。

RAM_HIGH_ADRS:拷贝boot ROM映像的目标地址RAM_LOW_ADRS:VxWorks映像的起始地址:1.1启动过程以下启动过程是通过串口或者网口加载VxWorks系统的过程,并不代表所有的加载过程。

1.上电复位后第一条被执行的指令位置0xfff00100(针对MPC8240)上电复位后CPU从0xfff00100取指令开始执行.这个地址位于boot ROM空间内。

1)完成启动所必要的初始化设置状态字并创建一个哑堆栈(dummy stack)2)初始化存储器接口2.跳到C程序的入口地址第一个被执行的C程序是romStart().程序首先拷贝boot ROM内的部分boot程序到RAM空间.(我认为这以后程序都在RAM中运行)。

然后根据哑堆栈中的参数决定是否清零内存RAM(如是冷启动(cold start)则清零),再把ROM段的剩余部分拷贝到RAM 的RAM_HIGH_ADRS地址(如果ROM代码是压缩的,还要解压)。

3.处理器跳到RAM的入口地址 RAM_HIGH_ADRS(bootConfig.c)。

在这里执行的程序是usrInit();使cache无效,清零bss段,初始化向量表,进行板级初始化。

4.启动多任务内核VxWorks的boot ROM本身就是一个独立的应用。

到此步为止可看作是boot ROM内的这个独立系统已经被加载且运行起来了。

5.加载VxWorks系统通过串口、网口或者从扩展FLASH中加载系统,VxWorks被加载到RAM的地端地址,起始地址为RAM_LOW_ADRS.6.应用程序加载各步所调用函数先后顺序如下:上电复位——》romInit()——》romStart()——》usr Init()——》initVectBaseSet()——》sysHwInit()——》usrKernelInit()——》kernelInit ()——》usrRoot()(启动串口或者网口加载程序)——》(完成对VxWorks 系统的加载) ——》sysInit()——》usrInit()——》initVectBaseSet()——》sysHwInit()——》usrKernelInit()——》kernelInit()——》usrRoot()(和前一个usrRoot()不一样,这里启动用户程序)romInit():这是上电复位后首先执行的程序(a)设置哑堆栈,初始化CPU内的寄存器,无效Cache,禁止中断;(b)保存启动类型,启动类型分为冷启动和热启动(c)硬件初始化,主要是初始化存储器接口。

VxWorks使用说明书

VxWorks使用说明书
针对不同网卡其名称不同如NE2000及其兼容网卡为ENE3COM以太网卡为ELTIntel网卡为EEX 在config.h文件 中修改相应网卡类型(如网卡为3COM网卡)定义部分:
# IO_ADRS_ELT 网卡I/O地址 # INT_LVL_ELT 网卡中断号
并且修改# DEFAULT_BOOT_LINE定义:
# DEFAULT_BOOT_LINE \ "ene(0,0)host:c:/tornado/target/config/pc486/vxWorks h=129.9.75.39 e=129.9.49.7 u=x86 pw=x86 tn=x86" ene(0,0) /* 启动设备为网卡 */ host /* 主机标识可以任意填写不影响启动过程 */ c:\tornado\target\config\pc486\vxWorks ; /* 需要从主机加载映象文件 */ h=129.9.75.39 ; /* 主机IP地址 */ e=129.9.49.7 /* 目标机IP地址 */ u=x86 ; /* 用户名主机Ftp服务器必须有相应同名用户 */ pw=x86 /* 密码必须与主机Ftp服务器相应同名用户密码相同*/ tn=x86 ; /*目标名可以任意设置不影响启动过程*/
.1 .启动盘制作 在实时应用系统开发调测阶段往往采用以PC机作为目标机来调测主机PC和目标机PC之间可采取串口或是网口 进行联结由于大多数目标已配有网卡网络联结成为最简单快速连接方式串口联结虽通信速率不高也有它自己优 点系统级任务调试(如中断服务ISR)需使通信方式工作在Polled 模式网口联结就不支持因此可以裁剪掉系统 中网络部分以使VxWorks系统更小满足目标板内存约束下面分别对这两种通信方式下目标机VxWorks系统启动 盘制作作简要介绍(以PC机为目标系统)

Vxworks引导说明

Vxworks引导说明

1.1.1. Vxworks引导说明
当不知道系统IP地址或者该PPC为裸板,未下装过程序的情况,可参照如下步骤解决。

1)接线准备
硬件:串口线一根,网络线一根
软件工具:超级终端,FileZillaPortable.exe,wftpd server
2)把VxWorks启动方式设为从主机启动
超级终端配置:
波特率为9600,数据位8位,奇偶校验位无,停止位为1,数据流控制为无。

(注:HJP1跳线跳开)
修改启动方式
按ctrl+X重启vxwokrs,在启动bsp前按下任意按键,中止启动vxworks。

按c修改bsp的启动方式
第一行键入:motfcc0
File name行键入:vxworks
Host inet行为主机地址,要保持一致
User 行键入:user
Password键入:user
3)把主机引导程序写入装置
设置计算机地址与超级终端显示主机地址一致,在wftpd的security菜单中选择user/Rigths 选项,选择user用户名,设置密码为user,选择home Diretory 路径为下载目标代码vxworks所在的路径。

只需要写路径,不需要提供文件名称。

设置好路径后,在超级终端按ctrl+X重启vxwokrs完成程序下载工作。

4)把VxWorks启动方式设为从装置启动
按ctrl+X重启vxwokrs,在启动bsp前按下任意按键,中止启动vxworks。

按c修改bsp的启动方式
第一行键入:tffs=0.00
File name行键入:/Tffs/vxworks。

VxWork BSP 和启动过程

VxWork BSP 和启动过程

VxWork BSP 和启动过程开发BSP主要的两点:1. 系统image的生成,image的种类,i mage的download下载过程,系统的启动顺序和过程,调试环境的配置及远端调试的方式和方法,相应BSP设置文件的修改(网络,串口..),BSP各文件的组成和作用.2. 要对系统底层驱动清楚,也就是对CPU及相关的硬件有所了解.主要是32微处理器(上电启动过程, download i mage的方式方法,读写ROM,地址空间分配,MMU,寄存器,中断定义,..).参照硬件资料,多读一些源码会有所帮助.Tornado 2 开发调试环境协议框图主机开发(Host De v e lopment Sy stem)目标机(T arget Sy stem)WDB协议通信<==========>两个主要两个协议WTX协议(Wind River Tool eXc hange): 用于开发机内部Tornado工具与T arget Server之间通信.WDB协议(Wind DeBug): 用于主机Target Server与目标机之间的通信.一.基本概念BSP定义:Provides VxWorks with primary interface to hardware environment.作用:∙在通电后,初始化硬件.∙支持V x W o r k s和硬件驱动通信.∙使hardware-dependent 和hardware-independent在VxWor k s系统中很好的结合.主要BSP主要文件目录的组成及主要文件的作用:∙目录target/config/All:这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件.configAll.h:缺省定义了所有VxWor k s的设置.如果不用缺省的设置,可在BSP目录下的config.h文件中用#define或#undef方式来更改设置.bootInit.c:在romInit.s后,完成Boot ROM的第二步初始化.程序从romInit.s中的romInit()跳到这个文件中的romStart().来执行必要的解压和ROM image的放置. bootConfig.c:完成Boot ROM image的初始化和控制.usrConfig.c: Vx Work s image的初始化代码.∙目录target/config/comps/src:涉及系统核心的components,主要由target/config/All中usrConfig.c中函数调用∙目录target/config/bspname:包含系统或硬件相关的BSP文件.Makefile一些命令行控制images的生成,参见BSP设置部分及生成下载READMEBSP发布纪录,版本,总的文档config.h包括所有涉及CPU主板的设置及定义(includes,defi nations),参见BSP设置文件及生成下载configNet.h网络驱动的主要设置文件,主要对END驱动设置.romInit.s汇编语言文件,是Vx Work s Boot ROM和ROM based image的入口,参见系统启动部分sysALib.s汇编语言文件,程序员可以把自己的汇编函数放在这个文件里,在上层调用.VxWor k s image的入口点_s y s Init在这个文件里,是在RAM中执行的第一个函数. sysLib.c包含一些系统相关的函数例程,提供了一个board-level的接口,VxWorks和应用程序可以以system-indepent的方式生成.这个文件还能包含目录target/config/comps/src的驱动.sysScsi.c可选文件用于Scsi设备设置和初始化.sysSerial.c可选文件用于所有的串口设置和初始化.bootrom.hexASIC文件包含VxWorks Boot ROM代码VxWorks运行在目标机上,完整的,连结后的Vx Wor k s二进制文件.VxWorks.sym完全的,连结后带有符号表的Vx Work s二进制文件VxWorks.st完全的,连结后,standalone,带有符号表的VxWor k s二进制文件∙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.∙R O M-b ased images---compressed/uncompressed.∙R O M-Resident images.ROM-resident image 对一些系统内存RAM资源较少的情况下,为了节省资源,只拷贝image中的数据部分(data segment)到内存RAM,留下程序部分(text segment)在ROM中执行。

vxWorks内核解读-5

vxWorks内核解读-5

vxWorks内核解读-5本篇博⽂,我们该谈到Wind内核的内存管理模块了,嵌⼊式操作系统中, 内存的管理及分配占据着极为重要的位置, 因为在嵌⼊式系统中, 存储容量极为有限, ⽽且还受到体积、成本的限制, 更重要的是其对系统的性能、可靠性的要求极⾼, 所以深⼊剖析嵌⼊式操作系统的内存管理, 对其进⾏优化及有效管理, 具有⼗分重要的意义。

在嵌⼊式系统开发中, 对内存的管理有很⾼的要求。

概括地说, 它必须满⾜以下三点要求:实时性, 即在内存分配过程中要尽可能快地满⾜要求。

因此, 嵌⼊式操作系统中不可能采取通⽤操作系统中的⼀些复杂⽽完备的内存分配策略, ⽽是要采⽤简单、快速的分配策略, ⽐如我们现在讨论的VxWorks 操作系统中就采⽤了“ ⾸次适应”的分配策略。

当然了具体的分配也因具体的实时性要求⽽各异。

可靠性, 即在内存分配过程中要尽可能地满⾜内存需求。

嵌⼊式系统应⽤千变万化, 对系统的可靠性要求很⾼, 内存分配的请求必须得到满⾜, 如果分配失败, 则会带来灾难性的后果。

⾼效性, 即在内存分配过程中要尽可能地减少浪费。

在嵌⼊式系统中, 对体积成本的要求较⾼, 所以在有限的内存空间内, 如何合理的配置及管理, 提⾼使⽤效率显的尤为重要实时嵌⼊式系统开发者通常需要根据系统的要求在RTOS提供的内存管理之上实现特定的内存管理,本章研究 VxWorks的Wind内核内存管理机制。

5.1 VxWorks内存管理概述5.1.1 VxWorks内存布局VxWorks5.5 版本提供两种虚拟内存⽀持(Virtual MemorySupport):基本级(Basic Level)和完整级(Full Level)。

基本级虚拟内存以Cache 功能为基础。

当DMA 读取内存前必须确保数据以更新到内存中⽽不是仍缓存在Catch 中。

对于完整级需要购买可选组件VxVMI,其功能为:提供对CPU 的内存管理单元的编程接⼝,同时提供内存保护,它在功能上覆盖了基本级虚存。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VxWorks启动过程描述及主要宏开关含义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 映象这是一种运行于RAM 中,但起初存放于ROM 中的VxWorks 映象。

即该映象需要和搬移程序一起固化在BOOT 中。

目标板上电后,首先运行BOOT 中的引导搬移程序,将整个VxWorks 映象拷贝到RAM 地址RAM_LOW_ADRS 处,并跳转到此处执行。

如图2所示。

该映象根据是否被压缩又可分为:z 基于ROM 的未压缩的VxWorks 映象,可直接从ROM 拷贝到RAM 中z 基于ROM 的压缩的VxWorks 映象,这种映象主要是为了节约BOOT 空间,在从ROM 拷贝到RAM 的过程中需要解压缩,因此与上述未压缩的映象相比,它的引导过程相对较慢,但两者在RAM 中的运行速度是一样的。

1.3 驻留ROM 的VxWorks 映象这种映象起初也和搬移程序一起固化在BOOT 中。

目标板上电后,首先运行BOOT 中的引导搬移程序,但仅将VxWorks 映象的数据段和BSS 段拷贝到RAM 地址RAM_LOW_ADRS 处,映象的代码段仍旧留在ROM 中,从ROM 中开始执行。

如图3所图2 基于ROM 的VxWorks 映象示。

这种映象的优点是具有最快的引导速度,占用最少的RAM空间,适用于RAM空间有限的目标板。

但是由于该映象在ROM中运行,运行速度在三种映象中是最慢的。

图3 驻留ROM的VxWorks映象2几种不同的BOOTROM的比较针对上述三种不同的VxWorks映象,可以生成以下几种不同的BOOTROM,主要体现在执行搬移程序romStart( )( 位于bootInit.c文件中)时不同:2.1 用于可加载VxWorks映象的BOOTROM由图1所示可知,用于可加载VxWorks映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和ROM引导程序(ROM Boot Programs)。

起始引导程序驻留在ROM中,主要包含:z汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射z搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。

ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。

可分为三种不同的类型:z压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行z未压缩的ROM引导程序,可直接拷贝,在RAM中执行z驻留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中所示的各地址含义为:z LOCAL_MEM_LOCAL_ADRS是RAM的起始地址z RAM_LOW_ADRS是VxWorks的加载点,也是VxWorks代码段的起始位置z FREE_RAM_ADRS是VxWorks映象的结束点。

通常也是系统内存池和目标服务器内存池的起始地址z 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。

3VxWorks的启动过程根据上述所采用的BOOTROM的不同,VxWorks的启动过程会有所不同。

3.1 使用可加载VxWorks映象的启动过程此时,从目标板上电复位到启动用户定义的任务的整个流程如下:RAM驻留旧在3.1.1 BOOTROM的启动过程1、目标板加电之后,程序指针指向RESET中断程序入口处,开始执行初始化程序romInit.s,设置机器状态字及其它硬件相关寄存器,关闭中断,禁止程序和数据CACHE,初始化内存,并设置堆栈指针,保存启动类型,调用romStart( )。

2、程序跳到第一个C程序bootInit.c的函数r omStart( )入口地址,根据堆栈中的参数决定是否清零内存RAM(如是冷启动(cold start)则清零),根据不同的bootrom文件,把ROM中数据段和文本段拷贝到RAM(如果ROM代码是压缩的,还要解压);3、程序跳到RAM入口地址(文件bootConfig.c中函数u srInit( ) ),根据用户配置来设置cache的工作模式,清零bss段,初始化异常处理程序,进行板级硬件初始化sysHwInit( )。

4、启动多任务内核KernelInit( ),执行usrRoot任务。

在该任务中初始化串口,创建console终端设备。

创建bootCmdLoop任务,根据单板设计选择不同方式加载VxWorks映像文件,如通过串口、网口、硬盘等方式。

3.1.2 VxWorks映象的启动过程VxWorks进入点sysInit()启动VxWorks系统的第一步就是将系统映象加载到主内存。

这通常是在VxWorks boot Rom 的控制下,从开发主机上下载。

接着,boot Rom将控制权交给VxWorks的起始进入点:sysInit()。

在makefile和 config.h文件里,已将这个进入点设置成位于地址RAM_LOW_ADRS。

函数sysInit()位于系统特定的汇编语言模块sysALib.s中。

它可以锁住中断,关闭cache (如果使用了话),初始化处理器的寄存器(包括C堆栈指针)至缺省值。

它还会关闭跟踪,清除所有未决的中断,并调用一个位于usrConfig.c 模块的C语言子程序:usrInit() 。

对于某些目标板,sysInit()还执行一些必要的与系统有关的硬件初始化,以便在usrInit()中执行完剩余的初始化内容。

仅供usrInit()使用的初始堆栈指针,被设置成位于系统映象(RAM_LOW_ADRS)以下,向量表以上的位置。

初始化代码usrInit()函数usrInit()(位于usrConfig.c中),储存有关引导类型的信息,处理在内核启动之前必须执行的初始化,而后启动内核执行。

它是运行于VxWorks内的第一个C函数。

此时,所有的中断都已被锁住。

许多VxWorks工具在usrInit( )中都不能使用。

这是因为此时还没有任务的上下文(没有TCB和任务堆栈),那些需要任务上下文的工具无法被调用。

函数usrInit( )仅做一些创建初始化任务usrRoot( )所必须的工作。

然后由usrRoot( )完成启动过程。

相关文档
最新文档