VxWorks系统启动过程及相应文件介绍
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文件系统详细介绍资料
VxWorks为块设备(磁盘)的实时使用提供了两种本地文件系统:一种与MS-DOS文件系统相兼容,另一种与RT-11文件系统相兼容。
这些文件系统的支持库分别为dosFsLib和rt11FsLib。
VxWorks还提供了一种简单的raw文件系统,这个文件系统把整个磁盘作为一个单独的大文件。
这个文件系统的支持库是rawFsLib。
VxWorks还为不使用标准文件或目录结构的磁带设备提供了一个文件系统。
磁带卷被看作一个raw设备,整个卷就是一个大文件。
这个文件系统的支持库是tapeFsLib。
另外,VxWorks提供了一个文件系统支持库cdromFsLib,它允许应用程序从依照ISO9660标准文件系统格式化的CD-ROMs中读取数据。
在VxWorks中,文件系统不受块设备种类型或它的驱动程序的约束。
VxWorks块设备都使用一个标准接口,以便文件系统可以与设备驱动程序自由的混合。
做为选择,你可以写自己的能被驱动程序以相同方式使用的文件系统,只要在文件系统、驱动程序和I/O系统间遵循同样的标准接口。
VxWorks的I/O体系结构使得在一个VxWorks系统中可以有多样的文件系统,甚至其类型也可以不同。
块设备界面在3.9.4块设备中讨论。
1 与MS-DOS兼容的文件系统:dosFs使用dosFs文件系统格式化的磁盘与MS-DOS(直至6.2版本)磁盘是相兼容的。
由两个文件系统初始化的硬盘之间在格式上有细微区别。
然而,数据自身是兼容的,而且dosFs可被配置成使用MS-DOS格式化的磁盘。
DosFs文件系统向不同要求的实时应用程序提供了良好的适应性。
主要特点包括:l 文件和目录分等级排序,允许有效地组织,在一卷上可以创建任意数量的文件。
l 每个文件可以是连续存储或非连续存储的。
非连续存储的文件可使硬盘空间利用率更高,连续存储的文件可以增强系统性能。
l 具有与广泛可用的存储器和可恢复介质的兼容性。
应用VxWorks(不使用dosFs文件扩展名)、MS-DOS PCs和其它系统创建的磁盘可以自由的交换。
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使用文档
使用VXWORKS进行MPC8270开始环境手册:1、安装VXWORKS环境,正常进入workbench工作平台。
2、新建vxworks的image project工程。
如下:建立工程中,选择代码目录,如下:建立完毕工程后,工程名右键,进入编译过程,编译完毕后,在指定目录下可以看到映象文件,如下图:3.建立FTP环境用户名:etra 密码:etra 指定FTP的工作目录到映象文件所在的目录。
3、编译bootloader下载文件进入vxworks的shell,命令进入boot代码文件夹,shell支持联想功能,如下图:进入boot代码目录下,执行make clean,然后执行make bootrom.bin后,在目录下生成新的bootrom.bin文件,通过万能下载器烧写到rom里面。
4、建立hello world工程在workbench里面。
新建工程,vxworks downloadable kernel module project项目,选择CPU型号,如下:先在workbench下,建立交叉网络环境,建立target server connection for vxworks如下:正确填写单板的IP地址,保证和PC的IP地址一致。
如下:7、修改test项目属性,增加-mlongcall,不然编译出错。
如下图:9、编译自己写的代码,在test工程下面。
如下:生成的test.out就是我们自己编译的代码的目标文件,可以在线调试自己的代码了。
10、在线调试test.out文件首先,把test.c里面的函数名填在如下界面上,保证函数的入口地址正确。
OK,步骤完毕。
项目属性里面需要增加在工程名字下,右键,。
VxWorks操作系统指南
VxWorks操作系统指南VxWorks操作系统指南目录1. VxWorks操作系统概述41.1.VxWorks 操作系统简介41.2.VxWorks操作系统内核51.3.任务管理61.4.通信、同步和互斥机制91.5.网络通信111.6.中断服务程序141.7.时间管理器142.VxWorks应用指导162.1.系统启动172.2.应用系统配置192.3.板级支持包BSP 212.4.VxWorks系统任务232.5.应用软件开发指导232.6.应用示例分析25关键词:实时操作系统任务消息 VxWorks Tornado摘要:本文档对实时操作系统作了简要介绍,并针对VxWorks系统的特点进行了具体的说明和分析,从VxWorks系统的任务管理、通信机制、系统配置、系统接口几个方面展开。
1. VxWorks操作系统概述1.1.VxWorks 操作系统简介实时多任务操作系统是能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统。
多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。
实时系统的另一关键特性是硬件中断处理。
为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR 有自己的上下文。
VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。
系统的链接器可按应用的需要自动链接一些目标模块。
这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。
VxWorks操作系统的基本构成模块包括以下部分:高效的实时内核WindVxWOrks实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。
兼容实时系统标准POSIXVxWOrks提供接口来支持实时系统标准P.1003.1b.I/O系统VxWOrks提供快速灵活的与ANSI-C相兼容的I/O系统,包括UNIX的缓冲I/O和实时系统标准POSIX的异步I/O。
(完整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系统的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引导启动过程一.引导过程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说明文档
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矩阵。
自己写的教程 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已经成功创建了引导扇区。
3.板级支持包BSP的相关修改以下为在winXP虚拟机中进行的操作:由于vxworks系统要求从CF卡启动,因此应该修改BSP中系统默认配置启动行参数。
VxWorks操作指南
VxWorks操作指南项目\子项目名称:3G BTS平台分系统拟制部门:科技发展部拟制日期:2000.2.28目录1. 实时嵌入式操作系统V X W ORKS (3)2.V X W ORKS和T ORNADO (4)3.T ORNADO的配置 (5)3.1 主机的设置:Tornado Register (5)3.2 目标的设置 (6)4.T ORNADO开发工具的使用介绍 (7)4.1 Editor (7)4.2 Projects(Tornado 2.0版本特有) (7)4.3 Shell (8)4.4 Debugger (9)4.5 Browser (10)4.6 GNU工具 (10)4.7 Target Server (11)5.V X W ORKS的启动过程及相关例程 (12)5.1 VxWorks启动的一般原理 (12)5.2 MSDOS的启动过程 (13)6.V X W ORKS的多任务管理 (14)6.1多任务 (14)6.2任务状态转换 (14)6.3 wind任务的排序(scheduling)机制 (14)6.4 任务控制 (15)6.5 任务的删除和删除安全 (15)6.6 任务异常处理 (16)6.7 VxWorks系统任务 (16)7任务间通信(原语消息的传递) (16)7.1 概述 (16)7.2 互斥 (17)7.3 同步 (18)7.4 删除安全 (19)7.5 中断和任务间的通信 (19)8应用程序的加载 (19)1.实时嵌入式操作系统VxWorksVxWorks操作系统是一种应用广泛的嵌入式实时多任务操作系统。
其内核WIND具有强占式优先级排序的多任务处理能力,提供了任务间同步和通信的机制,支持中断处理、看门狗定时器和内存管理功能。
VxWorks的开发环境是Tornado,应用程序的开发语言是ANSI C和C++。
VxWorks的开发体系是代理-服务器(Agent-Server)结构体系,即驻留在主机(Host)的开发工具Tornado通过目标服务器(Target Server)指示目标上的目标代理(Target Agent)进行目标板上的操作并将结果返回给主机。
自己写的教程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系统中映像及其加载过程
A. 最少化的系统初始化BootRom的启动过程:文件romInit.s中的romInit()→文件bootInit.c中的romStart()→文件bootConfig.c中的[usrInit()→usrRoot()](其中usrInit()和usrRoot()函数还调用了其他很多初始化的函数)注意:与VxWorks image的区别在于一个BootRom调用bootConfig.c,而VxWorks调用usrConfig.c, bootConfig.c主要完成BootRom 映像的初始化,而usrConfig.c主要完成VxWorks映像的初始化。
图表4 BootRom的加载过程B. 用BootRom加载Loadable 映像的启动过程为:文件romInit.s中的romInit()→文件bootInit.c中的romStart()→文件sysALib.s中的sysInit()[初始化RAM]→文件usrConfig.c中的[usrInit()→usrRoot()](其中usrInit()和usrRoot()函数还调用了其他很多初始化的函数)图表5 BootRom加载Lodable 映像的过程Rom-Based image(基于ROM的VxWorks映像)前面说了这种类型映像不需要BootRom的支持,那么它(下面所说的驻留ROM的映像也是)融合了BootRom的引导功能,它在ROM中启动,然后把VxWorks 拷贝到RAM中去运行。
其加载和引导VxWorks映像的过程是:文件romInit.s中的romInit()→文件bootInit.c中的romStart()→文件usrConfig.c中的[usrInit()→usrRoot()](其中usrInit()和usrRoot()函数还调用了其他很多初始化的函数)图表6基于ROM的VxWorks映像的加载过程Rom_Resident image(驻留ROM的VxWorks映像)在ROM中启动,并在运行VxWorks。
VxWorks系统启动过程及相应文件介绍
这种映象起初也和搬移程序一起固化在BOOT中。目标板上电后, 首先运行BOOT中的引导搬移程序,但仅将VxWorks映象的数据段和 BSS段拷贝到RAM地址RAM_LOW_ADRS处,映象的代码段仍旧留 在ROM中,从ROM中开始执行。如图3所示。 这种映象的优点是具有最快的引导速度,占用最少的RAM空间, 适用于RAM空间有限的目标板。但是由于该映象在ROM中运行,运 行速度在三种映象中是最慢的。
汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设
置一些重要寄存器的初始值,进行存储器的映射搬移程序bootInit.c, 将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳 转到此处执行ROM引导程序。
ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主 要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至 RAM。可分为三种不同的类型: 压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行; 未压缩的ROM引导程序,可直接拷贝,在RAM中执行;
usrConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错, 异常处理,添加用户应用程序
sysInit()
函 数
usrInit()
(a)锁住中断;(b)禁用缓冲; (c)用缺省值初始化系统中断表(仅i960); (d)用缺省值初始化系统错误表(仅i960); (e)初始化处理器寄存器到一缺省值; (f)使回溯失效;(g)清除所有悬置中断; (h)激活usrInit(),指明启动类型。 (a)对bss清零;(b)保存bootType于sysStartType; (c)调用excVecInit(),初始化所有系统和缺省中断向量; (d)依次调用sysHwInit(), usrKernelInit(),kernelInit().
VxWorks操作系统指南
VxWorks操作系统指南目录1. VxWorks操作系统概述 41.1.VxWorks 操作系统简介 41.2.VxWorks操作系统内核 51.3.任务管理 61.3.1. 任务结构1.3.2. 任务状态和状态迁移1.3.3. 任务调度策略1.3.4. 抢占禁止1.3.5. 异常处理1.3.6. 任务管理1.4.通信、同步和互斥机制91.4.1. 共享存储区1.4.2. 互斥1.4.3. 信号量1.4.4. 消息队列1.4.5. 管道1.4.6. 系统实现1.5.网络通信111.5.1. 套接口(Sockets)1.6.中断服务程序141.7.时间管理器142.VxWorks应用指导162.1.系统启动172.1.1. 启动盘的制作2.1.1. 主机Tornado环境配置2.2.应用系统配置192.2.1. 板级支持包BSP2.2.2. 虚拟内存2.2.3. 串行设备2.2.4. 初始化模块2.2.5. 配置VxWorks2.3.板级支持包BSP212.4.VxWorks系统任务232.5.应用软件开发指导232.6.应用示例分析252关键词:实时操作系统任务消息VxWorks Tornado摘要:本文档对实时操作系统作了简要介绍,并针对VxWorks系统的特点进行了具体的说明和分析,从VxWorks系统的任务管理、通信机制、系统配置、系统接口几个方面展开。
1. VxWorks操作系统概述1.1.VxWorks 操作系统简介实时多任务操作系统是能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统。
多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。
实时系统的另一关键特性是硬件中断处理。
为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。
vxWorks文件系统详细介绍
VxWorks为块设备(磁盘)的实时使用提供了两种本地文件系统:一种与MS-DOS文件系统相兼容,另一种与RT-11文件系统相兼容。
这些文件系统的支持库分别为dosFsLib和rt11FsLib。
VxWorks还提供了一种简单的raw文件系统,这个文件系统把整个磁盘作为一个单独的大文件。
这个文件系统的支持库是rawFsLib.VxWorks还为不使用标准文件或目录结构的磁带设备提供了一个文件系统。
磁带卷被看作一个raw设备,整个卷就是一个大文件.这个文件系统的支持库是tapeFsLib。
另外,VxWorks提供了一个文件系统支持库cdromFsLib,它允许应用程序从依照ISO9660标准文件系统格式化的CD-ROMs中读取数据。
在VxWorks中,文件系统不受块设备种类型或它的驱动程序的约束.VxWorks块设备都使用一个标准接口,以便文件系统可以与设备驱动程序自由的混合。
做为选择,你可以写自己的能被驱动程序以相同方式使用的文件系统,只要在文件系统、驱动程序和I/O系统间遵循同样的标准接口。
VxWorks的I/O体系结构使得在一个VxWorks系统中可以有多样的文件系统,甚至其类型也可以不同。
块设备界面在3。
9.4块设备中讨论.1 与MS—DOS兼容的文件系统:dosFs使用dosFs文件系统格式化的磁盘与MS-DOS(直至6.2版本)磁盘是相兼容的。
由两个文件系统初始化的硬盘之间在格式上有细微区别。
然而,数据自身是兼容的,而且dosFs可被配置成使用MS—DOS格式化的磁盘。
DosFs文件系统向不同要求的实时应用程序提供了良好的适应性。
主要特点包括:l 文件和目录分等级排序,允许有效地组织,在一卷上可以创建任意数量的文件。
l 每个文件可以是连续存储或非连续存储的。
非连续存储的文件可使硬盘空间利用率更高,连续存储的文件可以增强系统性能。
l 具有与广泛可用的存储器和可恢复介质的兼容性.应用VxWorks(不使用dosFs文件扩展名)、MS—DOS PCs和其它系统创建的磁盘可以自由的交换.如果分区表被说明,那么硬盘也是兼容的。
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)硬件初始化,主要是初始化存储器接口。
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文件资料系统详细介绍
VxWorks为块设备(磁盘)的实时使用提供了两种本地文件系统:一种与MS-DOS文件系统相兼容,另一种与RT-11文件系统相兼容。
这些文件系统的支持库分别为dosFsLib和rt11FsLib。
VxWorks还提供了一种简单的raw文件系统,这个文件系统把整个磁盘作为一个单独的大文件。
这个文件系统的支持库是rawFsLib。
VxWorks还为不使用标准文件或目录结构的磁带设备提供了一个文件系统。
磁带卷被看作一个raw设备,整个卷就是一个大文件。
这个文件系统的支持库是tapeFsLib。
另外,VxWorks提供了一个文件系统支持库cdromFsLib,它允许应用程序从依照ISO9660标准文件系统格式化的CD-ROMs中读取数据。
在VxWorks中,文件系统不受块设备种类型或它的驱动程序的约束。
VxWorks块设备都使用一个标准接口,以便文件系统可以与设备驱动程序自由的混合。
做为选择,你可以写自己的能被驱动程序以相同方式使用的文件系统,只要在文件系统、驱动程序和I/O系统间遵循同样的标准接口。
VxWorks的I/O体系结构使得在一个VxWorks系统中可以有多样的文件系统,甚至其类型也可以不同。
块设备界面在3.9.4块设备中讨论。
1 与MS-DOS兼容的文件系统:dosFs使用dosFs文件系统格式化的磁盘与MS-DOS(直至6.2版本)磁盘是相兼容的。
由两个文件系统初始化的硬盘之间在格式上有细微区别。
然而,数据自身是兼容的,而且dosFs可被配置成使用MS-DOS格式化的磁盘。
DosFs文件系统向不同要求的实时应用程序提供了良好的适应性。
主要特点包括:l 文件和目录分等级排序,允许有效地组织,在一卷上可以创建任意数量的文件。
l 每个文件可以是连续存储或非连续存储的。
非连续存储的文件可使硬盘空间利用率更高,连续存储的文件可以增强系统性能。
l 具有与广泛可用的存储器和可恢复介质的兼容性。
应用VxWorks(不使用dosFs文件扩展名)、MS-DOS PCs和其它系统创建的磁盘可以自由的交换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VxWorks即可生成可加载的VxWorks映象。
这是一种运行于RAM中,但起初存放于ROM中的 VxWorks映象。即该映象需要和搬移程序一起固化在BOOT
中。目标板上电后,首先运行BOOT中的引导搬移程序,将
整个VxWorks映象拷贝到RAM地址RAM_LOW_ADRS处,
并跳转到此处执行。
图1、可加载的VxWorks映象
这种映象的优点是生成的VxWorks映象可以存放在开发主机PC 机上,不用烧到BOOT中,节省了BOOT容量,也便于随时修改不同 的VxWorks映象,适用于调试的初期阶段。不足之处是需要在主机上
维护一个正确的VxWorks映象,对于调试硬件无关的上层应用程序显
得不是很方便。 在Tornado工作台的Build窗口中,选择Rules属性页中的
用于该映象的BOOTROM包含两部分: 起始引导程序(BootStrap Programs)和驻留ROM的VxWorks映象, VxWorks系统文本段驻留在ROM,搬移程序bootInit.c负责将数据段和 bss段搬移到用户定义的低端内存地址RAM_LOW_ADRS,直接启动 VxWorks映像(含符号表)。此时,RAM_LOW_ADRS是VxWorks映象的 加载点,它也是VxWorks数据段的起始点。
这种映象起初也和搬移程序一起固化在BOOT中。目标板上电后, 首先运行BOOT中的引导搬移程序,但仅将VxWorks映象的数据段和 BSS段拷贝到RAM地址RAM_LOW_ADRS处,映象的代码段仍旧留 在ROM中,从ROM中开始执行。如图3所示。 这种映象的优点是具有最快的引导速度,占用最少的RAM空间, 适用于RAM空间有限的目标板。但是由于该映象在ROM中运行,运 行速度在三种映象中是最慢的。
因此BOOTROM的容量相对于可加载VxWorks映象的BOOTROM要
大一些,但无需在主机目录下维护一个可用的VxWorks映象。
基于ROM的VxWorks BOOTROM有压缩和未压缩之分。在
Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的 VxWorks_rom即可生成基于ROM的未压缩的VxWorks BOOTROM,选 中VxWorks_romCompress即可生成基于ROM的压缩的VxWorks BOOTROM。
函 数功能
sysALib.s
文件
usrConfig.c
usrKernelInit 依次调用classLibInit(),taskLibInit(),taskHookInit(),semBLibInit(), () semMLibInit(),semCLibInit(),semOLibInit(),wdLibInit(),msgQLibI nit(),qInit(),workQInit() kernelInit() 初始化并启动内核。(a)激活intLockLevelSet(); (b)从内存池顶部创建根堆栈和TCB;(c)调用taskInit(), taskActivate(),用于usrRoot();(d)调用usrRoot(). usrRoot() 初始化I/O系统,驱动器,设备(在configAll.h和config.h中指定) (a)调用sysClkConnect(),sysClkRateSet(),iosInit(),[ttyDrv()]; (b)初始化excInit(),logInit(),sigInit(). (c)初始化管道,pipeDrv(); (d)stdioInit(),mathSoftInit()或mathHardInit() (e)wdbConfig():配置并初始化目标代理机
图3 驻留ROM的VxWorks映象
针对上述三种不同的VxWorks映象,可以生成以下几种不同的 BOOTROM,主要体现在执行搬移程序romStart( )( 位于bootInit.c文件中) 时不同:
LOCAL_MEM_LOCAL_ADRS是RAM 的起始地址 RAM_LOW_ADRS是VxWorks的加载点, 也是VxWorks代码段的起始位置 FREE_RAM_ADRS是VxWorks映象的结 束点。通常也是系统内存池和目标服务 器内存池的起始地址
BootStrap程序在ROM中执行 romInit.s : romInit 设置机器状态字及其它硬件相关寄存器,关 闭中断,禁止程序和数据CACHE,初始化内存, 并设置堆栈指针
bootInit.c : romStart( ) 将ROM中的程序搬移至RAM中
ROM Boot程序被搬移到RAM中执行
bootConfig.c : usrInit( ) 设 置 cache 的 工 作 模 式 , 板 级 硬 件 初 始 化 , 调 用 sysHwInit( ),usrKernelInit( ),KernelInit( ),初始化Win内核, 产生根任务usrRoot( ) bootConfig.c : usrRoot( ) 初始化内存,系统时钟, I/O系统,标准输入输出,异常 处理,外围设备初始化,产生任务bootCmdLoop bootConfig.c : bootCmdLoop( ) 调用自动引导程序autoboot( ),此函数若成功则不返回 bootConfig.c: autoboot( ) 延时7s,以默认参数启动 等待超时 bootConfig.c: bootLoad( ) 加载 VxWorks 映象,并转向它 进行重启 用户按键中断 bootConfig.c :bootCmdLoop( ) 启动命令行用于配置 VxWorks 启动参数
汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设
置一些重要寄存器的初始值,进行存储器的映射搬移程序bootInit.c, 将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳 转到此处执行ROM引导程序。
ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主 要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至 RAM。可分为三种不同的类型: 压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行; 未压缩的ROM引导程序,可直接拷贝,在RAM中执行;
Vxworks启动过程和BSP介绍
VxWorks是一种灵活的、可裁剪的嵌入式实时操作系统。用 户可以根据需要创建自己的VxWorks映象,由它来引导目标系 统,而后下载并运行应用程序。 根据应用场合的不同,VxWorks映象可分为三类:可加载的 VxWorks映象、基于ROM的VxWorks映象和驻留ROM的 VxWorks映象。
图2 基于ROM的VxWorks映象
基于ROM的未压缩的VxWorks映象,可直接从ROM拷贝
到RAM中。
基于ROM的压缩的VxWorks映象,这种映象主要是为了 节约BOOT空间,在从ROM拷贝到RAM的过程中需要解压缩,
因此与上述未压缩的映象相比,它的引导过程相对较慢,但两
者在RAM中的运行速度是一样的。
usrConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错, 异常处理,添加用户应用程序
sysInit()
函 数
usrInit()
(a)锁住中断;(b)禁用缓冲; (c)用缺省值初始化系统中断表(仅i960); (d)用缺省值初始化系统错误表(仅i960); (e)初始化处理器寄存器到一缺省值; (f)使回溯失效;(g)清除所有悬置中断; (h)激活usrInit(),指明启动类型。 (a)对bss清零;(b)保存bootType于sysStartType; (c)调用excVecInit(),初始化所有系统和缺省中断向量; (d)依次调用sysHwInit(), usrKernelInit(),kernelInit().
静态连接到可加载的VxWorks映象的系统初始化代码执行并完成整个初始 化过程。 引导过程成功以后,RAM中ROM引导程序占用的空间(从 RAM_HIGH_ADRS开始)可以重新被系统利用。
用于该映象的BOOTROM包含两部分: 起始引导程序(BootStrap Programs)和基于ROM的VxWorks映象。 搬移程序bootInit.c负责将VxWorks映象的文本段和数据段搬移到用户定义 的低端内存地址RAM_LOW_ADRS,如果需要进行必要的解压缩,然后直 接启动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处,并跳转到此处执行。
驻留ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段
仍旧在ROM中执行。
在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM… 可以选择生成以上三种BOOTROM,分别为: bootrom_uncmp.hex(未压缩的BOOTROM); bootrom.hex(压缩的BOOTROM); bootrom_res.hex(驻留的BOOTROM)。
在Tornado工作台的Build窗口中,选择VxWorks映象Rules
属性页中的VxWorks_romResident即可生成驻留ROM的
VxWorks BOOTROM