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启动流程

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

串口驱动概述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 概念及启动过程乔从连(船舶重工集团公司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系统及函数详解

VxWork介绍及编程VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了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启动流程与顺序

目录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映像,也被称为引导映像。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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( )完成启动过程。