VxWorks操作指南Word下载.docx
- 文档编号:6902465
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:28
- 大小:376.87KB
VxWorks操作指南Word下载.docx
《VxWorks操作指南Word下载.docx》由会员分享,可在线阅读,更多相关《VxWorks操作指南Word下载.docx(28页珍藏版)》请在冰点文库上搜索。
6.7VxWorks系统任务16
7任务间通信(原语消息的传递)16
7.1概述16
7.2互斥17
7.3同步18
7.4删除安全19
7.5中断和任务间的通信19
8应用程序的加载19
1.实时嵌入式操作系统VxWorks
VxWorks操作系统是一种应用广泛的嵌入式实时多任务操作系统。
其内核WIND具有强占式优先级排序的多任务处理能力,提供了任务间同步和通信的机制,支持中断处理、看门狗定时器和内存管理功能。
VxWorks的开发环境是Tornado,应用程序的开发语言是ANSIC和C++。
VxWorks的开发体系是代理-服务器(Agent-Server)结构体系,即驻留在主机(Host)的开发工具Tornado通过目标服务器(TargetServer)指示目标上的目标代理(TargetAgent)进行目标板上的操作并将结果返回给主机。
主机和目标间通常是通过网络(也可以通过串口线)进行通信的,两者间的交互关系如下图示。
NETWORK(Ethernet,etc)
TARGET
HOST
图1:
目标服务器和目标代理间的交互关系
VxWorks操作系统实时性体现在较低的中断时延,其嵌入性体现在程序代码的动态加载。
VxWorks的主要特性和功能为:
●I/O系统------VxWorks提供了快速、灵活的与ANSIC兼容的I/O系统,包括UNIX标准缓存I/O和POSIX标准异步I/O。
VxWorks主要包括网络驱动器(用于以太网),SCSI驱动器和并行口驱动器,对于x86板支持包(BSP)还包括键盘、显示、磁盘驱动器。
●本地文件系统--------VxWorks支持主要两种文件系统,一种是与MS-DOS兼容的dosFs,另一种是与RT-11兼容的文件系统。
●网络工具--------VxWorks通过BSD套接字兼容的编程接口提供对其它用TCP/IP连网的VxWorks系统的透明接入。
它同时提供了远过程调用(RPC),远程文件存取等网络功能。
所有的VxWorks网络功能都符合标准的Internet协议。
●实用工具库--------VxWorks提供了扩展的工具例程库,包括中断处理、看门狗定时器、内存分配、字符串格式、线形和环形缓存区操作以及ANSIC例程库。
●目标代理----------目标代理允许一个VxWorks应用程序使用Tornado开发工具远程调试。
●板支持包----------板支持包(BSPs)是用于特定处理器模块板的例程集,提供了硬件初始化,中断设置,定时器设置,内存映射等功能。
2.VxWorks和Tornado
Tornado是一个软件交叉开发的集成环境,提供了一种高效的最小干预目标系统的实时嵌入式开发手段。
它包含了VxWorks操作系统和生成应用程序的工具。
Tornado运行于主机,对远程目标系统提供基于主机的动态链接器和符号表(例程名称和变量名的集合)的接入。
Tornado提供的交互式开发工具包括:
Ø
集成源代码编辑器;
应用程序生产工具(汇编器和相应的程序);
用户定制的项目管理工具;
集成的C、C++汇编器和生成器;
Brower----可视化目标系统监视器;
Debugger-----增强的图形化源级调试器;
WindSh--------控制目标的C语言外壳程序;
WindConfig------VxWorks特性配置图形化工具;
通常,Tornado驻留的宿主机和运行VxWorks的目标机是通过Ethernet或串行口连接的。
应用程序在主机上编辑,编译生成.o文件,然后由Tornado工具将其加载到目标机系统运行,同时可以在Debugger下进行源级调试。
Tornado支持多个主机对一个目标机和多个主机对多个目标机的操作模式。
其核心是目标服务器(TargetServer)和目标代理器(TargetAgent)一一对应的关系。
每个主机的Tornado工具都通过一个特定的目标服务器和对应的目标代理器操控相应的目标机系统。
我们通过选择使用TargetServer来选择使用目标机。
共享Target还牵涉到一个东西,那就是TornadoRegistry,要做到真正的共享,必须要正确理解和正确使用它。
TornadoRegistry就是一个TargetServer的注册器以及命名器,当每个TargetServer程序启动时,TargetServer程序向这个程序注册,告诉注册器它已经启动了,Registry
接受注册并给这个TargetServer赋予唯一的标识名。
然后其他Tornado工具就可以使用这个标示名来选择使用不同目标机。
一台宿主机可以使用运行在远程宿主机上的TornadoRegistry来进行对目标的操纵。
最有效的共享目标机的计算机间的连接图如图2所示,在宿主机服务器上运行着一个TornadoRegistry以及多个TargetServer(在安装TORNADO过程中,这台计算机应该使用InstallTornadoRegistrylocallyintheStartupgroup选项安装Registry),在其他的宿主机上只运行TORNADO开发环境以及TORNADO工具(在安装TORNADO过程中,这台计算机应该使用ConfiguretousearemoteTornadoRegistry选项安装Registry并设置好运行Registry的宿主机的地址),这些宿主机都通过使用这个TORNADORegistry来使用运行在宿主机服务器上的TargetServers,这样任意一个用户可以使用任意一台目标机,提供了最大限度的自由,另外还可以限制某些用户只能使用某些TargetServer,从而提供了全方位的控制。
图2目标机共享连接示意图
3.Tornado的配置
TornadoRegister
TornadoServer注册器(Register)是一种跟踪TargetServer并提供主机接入的服务。
注册器必须始终运行,否则TergetServer不能与目标及通信。
下图是注册器启动后的情况。
其中wtxregd是注册器得执行文件hogback是驻留在主机的目标服务器的标识名。
图3:
但安装完Tornado后你可以通过选项(Option)窗口选择使用不同的注册器。
3.2目标的设置
下面给出了目标的配置两个的典型情况。
图4:
最小的Tornado配置
对于这种通过串行连接主机和目标板的配置可以采用简单的不需要网络支持的启动机制(如用超级终端充当目标服务器)。
另一种典型的联网配置起况为:
图5:
具有网络连接的Tornado配置
其中文件服务器是VxWorks的二进制程序文件驻留的场所,通常就是宿主机的磁盘。
当你通过网络启动(引导)VxWorks时(这也使目标机默认的启动配置)你必须在存有VxWorks映像的宿主机上开启FTPServer。
FTPServer必须设置用于VxWorksTarget标识自己的用户标识和口令。
这通常在FTPServer程序中添加设置。
如下图示:
图6:
FTPServer添加用户设置
此外还需要开启一个应用程序portmap用于主机和目标机的通信端口映射。
它只在Tornado1.01中存在。
4.Tornado开发工具的使用介绍
4.1Editor
Editor是用来生成VxWorks源文件的工具。
其特性有:
●C、C++关键字加亮显示;
●Debugger集成:
可以通过editor跟踪代码的执行;
●编译器的集成:
可以通过编译器的消息链接到编辑器;
(如通过双击编译结果错误提示行跳到源程序对应处。
)
4.2Projects(Tornado2.0版本特有)
项目机制是Tornado集成开发环境的重要元素。
它提供了图形化和自动化机制用于生成可加载到目标板的应用程序,向VxWorks内核加入客户要求的特性,以及生成目标启动后可以和VxWorks内核链接的应用程序。
Tornado的项目组织结构与VC++的项目组织很相似。
项目机制主要提供如下工具:
●管理构成项目的文件;
●把相关项目合并到工作空间;
●定制和裁减VxWorks;
●向VxWorks加入应用程序初始化代码;
●定义不同的Build选项;
●生成应用程序和VxWorks映像;
●下载应用程序可执行代码到目标;
使用项目机制配置VxWorks的方法与以前有很大不同。
在Tornado1.01版本中通常在
BSP(板支持包)的配置文件config.h或configAll.h中改变VxWorks参数。
而在Tornado2.0版本中大部分的参数配置更改都可以在项目中完成。
通常在你第一次生成项目时会提示你选择一种项目类型,如下所示:
图7:
项目类型提示窗
可启动的VxWorks映像(bootableVxWorksimage)是指包含链接到VxWorks内核的应用程序。
VxWorks映像可以通过包含或不包含操作系统部件来配置。
如果可启动的VxWorks映像没有应用程序代码那么它就是一个纯粹的VxWorks内核映像。
可下载的应用程序模块(downlableapplicationmodule)是指在目标启动加载完操作系统映像后可以动态的从宿主机上下载到目标板上的可执行代码。
可下载应用程序的启动运行可以在Shell或Debugger下调用相应的命令来实现。
工作空间(Workspace)是一个逻辑的、图形化包容器。
它可以包含一个或多个项目。
它提供了有用手段用于把为特定产品开发的可下载应用程序、VxWorks系统映像和可启动应用程序联系起来。
它还可以在开发人员间共享项目。
工具链(Toolchain)是一种交叉开发工具用于生成特定处理器的应用程序。
4.3Shell
Tornado的外壳工具WindShell允许你加载应用程序,调用VxWorks和项目模块的子例程。
WindShell可以解释执行大部分C语言表达式。
例如键入:
->
printf(“Hello,world!
\n”)
你会在目标机显示器上或者虚拟显示器上看到显示结果。
WindShell的操作过程与Tornado系统的三个部件有关。
图8:
Shell执行示意
然而,在通常的应用程序开发调试阶段Debugger的图形化调试开发手段更为常用。
4.4Debugger
Tornado调试器CrossWind的设计综合了图形和命令行接口的最佳特性。
最常用的调试活动例如设置断点,控制程序的执行都可以通过点击接口来实现。
图9:
调试工具栏(Tornado2.0)
调试工具栏的具体解释和操作可参考Tornado2.0的帮助。
按照默认的设置,在Tornado下你一次只能调试一个任务。
任务或者通过“运行“对话框生成的任务选项来选择或者通过Attach对话框来调试已经存在的任务。
当调试器被附着(attached)在一个任务上时调试器的命令只影响该任务本身。
例如断点仅应用于该任务。
当任务到达一个断点时只有该任务而不是整个系统停下来。
这种调试模式称为任务模式。
与它相对应的是系统级调试模式,即任务只能被生成,当任务被中断时整个系统都停下来。
你可以通过Tornado开发集成环境下的面板上的按键(见图9)启动诸如Debugger,加载模块(Download),运行任务和设置中断。
你也可以使用菜单栏的Debugger下选项进行调试。
下面仅给出常用的调试命令的使用方法,详细的说明参见帮助手册。
●加载模块(DownloadingaModule):
一旦Debugger运行起来后你可以通过单击Download选择加载到目标用于调试的模块;
●Attach:
当任务加载运行时你可以把调试会话附着在它上面,即选择当前调试的任务;
Attach显示目标上运行的任务列表,通过它你可以选择调试任务;
●卸载模块(Unload):
与Download相对应,你可以在Debugger命令行方式下使用Unload命令从目标上卸载动态链接的模块;
●设置断点:
你可以在Tornado编辑器中源文件的任意位置设置断点。
方法是用鼠标选中设置断点的行,然后在工具栏单击设置断点的命令图标。
Debugger也提供了命令行方式(只在Tornado1.01中提供)完成必要的操作。
如加载程
序到目标,写在程序,运行某例程,删除该例程:
→loadxxx.o
→unloadxxx.o
→runsomeroutine
→tdsomeroutine
当加载程序运行时结果不正确需要修改时应按照以下步骤来进行:
1)在Debugger行编辑窗口中执行->
tdsomeroutine(如果该例程是死循环没有结束的话);
2)把该加载程序卸载:
unloadxxx.o;
3)在Editor中进行必要的源程序修改;
4)删除旧的生成文件即.o文件;
5)在Project下调用MakeCurruntSourceFile命令生成新的xxx.o;
6)再次加载xxx.o到目标机上运行。
4.5Browser
TornadoBrowser提供了详细的目标运行状态的信息。
通过Browser你可以检查:
●详细的任务信息;
●信号灯(semphore);
●消息队列;
●内存分配;
●目标上所有任务的堆栈使用情况;
●目标模块的结构和符号;
●中断矢量等;
图10:
Browser启动窗口
4.6GNU工具
Tornado集成开发环境提供了一系列GNU工具用于生成特定CPU的可执行应用程序。
这些工具包括GNUcompiler,GNUassembler,GNUlinker。
Tornado提供给用户一个简单的接口由Tornado内部潜入的GNU工具自动化的批处理完成。
这个接口就是在Project下的Make命令(Tornado1.01),对于Tornado2.0生成.o文件是在项目管理器中通过单击右键选择来完成。
图11:
项目管理器
4.7TargetServer
目标服务器(TargetServer)是运行在主机上管理Tornado宿主机上的工具和目标系统间的通信。
TargetServer包括了符号表和对象模块装载器用于把应用程序模块装载到运行的目标系统。
其关系结构如下图示:
图12:
Host和Target关系示意图
在Tornado1.01版本下TargetServer由工具栏下的TargetServerLancher和TargetServerManagement进行启动和管理。
通常当你启动目标机引导操作系统后可以通过TargetServerLancher对话框来启动目标服务器,而后才可以启动Torando其他的开发工具,如Shell、Debugger、Browser等。
图13:
TargetServerLancher对话框
当目标级系统促县故障或以外关节而造成TargetServer与目标系统失去联系需要关闭时应采取以下步骤来进行:
a)用quit命令退出Shell和Debugger,如果他们仍在运行需先用Ctrl+Break命令暂停;
b)打开TargetServerManagement对话框选择kill命令关掉targetserver;
c)重新LanchTargetServer。
5.VxWorks的启动过程及相关例程
下面以PC104模块的VxWorks启动顺序为例介绍VxWorks的启动原理。
5.1VxWorks启动的一般原理
Intelx86体系的目标板上有一块BIOSROM,存有系统设置和装载引导程序的程序代码。
BIOSROM并不被VxWorks覆盖。
在开发主机上生成的VxWorks可执行文件,如vxworks.st和bootrom_uncmp由标准的PC自举机制装载到目标机RAM中,再由该引导程序从主机或本地装载VxWorks系统映像到内存完成引导过程。
5.2MSDOS的启动过程
通常,PCBIOS启动进程工作顺序为:
1)BIOS引导进程在第一个软盘A:
的引导扇区寻找装载程序;
2)如果装载程序不在A:
上,引导进程在第一个硬盘C:
的引导扇区寻找;
3)装载程序被装入内存并执行。
4)典型情况下,装载程序从磁盘装载操作系统并执行它,从而完成引导进程。
5.3VxWorks初始化顺序
对于VxWorks启动顺序除第四步外与PCBIOS启动顺序一致。
VxWorks装载程序装载并执行系统文件bootrom.sys。
为生成VxWorks引导盘(软盘或硬盘),你必须用VxWorks装载程序代替标准的装载程序,即把VxWorks装载程序写入磁盘引导扇区并生成合适的引导映像bootrom.sys。
bootrom.sys可以从以下VxWorks映像中得到:
●bootrom_uncmp——最小的引导程序;
●vxworks——可自启动的VxWorks操作系统映像;
●vxworks.st——可自启动、内置Shell的VxWorks操作系统映像;
VxWorks系统映像装入内存后BOOTROM把控制权交给VxWorks启动进入点sysInit。
它完成诸如关闭所有中断,初始化寄存器等工作并激活usrInit。
UsrInit例程保存了关于启动类型的信息,处理所有的必须在内核被实际启动前执行的初始化工作,并且接下来由它来启动内核的执行。
它也是VxWorks中运行的第一块C代码。
UsrInit例程仅仅为生成系统初始任务而做必要的准备工作。
这个初始任务是usrRoot,由它来完成系统启动。
下表给出了VxWorks运行时系统初始化的一般顺序及所完成的功能。
序号
例程
完成工作
位置
1
SysInit
关中断、清悬挂中断、各种初始化工作、调用usrInit()指定启动类型;
SysALib.s
2
UsrInit
bss段置零,在sysStartType中保存启动类型,调用excVecInit()初始化所有系统和默认的中断矢量,调用sysHwInit、usrKernelInit及kernelInit例程;
UsrConfig.c
3
UsrKernelInit
配置常量初始化;
UsrKernel.c
4
KernelInit
初始化并启动内核,调用intLockLeveSet(),从内存池顶部生成根堆栈和TCB,为usrRoot调用taskInit和taskActivate,调用usrRoot;
KernelLib.c
5
UsrRoot
初始化I/O设备,安装驱动器,生成configAll.h和config.h中指定的设备,初始化设备,调用wdbConfig配置和初始化目标代理,若目标驻留shell配置则启动运行。
表1:
VxWorks运行时系统初始化的一般顺序
6.VxWorks的多任务管理
通常,一个应用程序被组织成许多独立的但相互合作的程序。
这些执行中的程序称为任务。
在VxWorks中,任务对系统资源具有立即的、共享接入,同时对线程具有充分的独立控制。
6.1多任务
多任务提供了应用程序对外部多个离散事件控制和响应的基本机制。
VxWorks实时内核wind提供了基本的多任务环境。
每个任务都有自己的上下文,即每次由内核调用时所见的CPU环境和系统资源。
任务切换时,该任务的上下文被保存在任务控制块(TCB)中。
6.2任务状态转换
任务在同一时间只能处于下面四种状态之一或它们的组合:
Ready---------准备由CPU处理;
Pended--------由于某些资源得不到而阻塞;
Delayed-------任务休眠一段时间;
Suspended----任务不能执行(主要用于调试时);
内核在系统中保持任务的当前状态。
当被生成时,任务进入suspended状态,然后生成的任务需要一个激励来进入ready状态。
替代这一过程的是使用spawning原语,即用一个函数使任务进入ready状态。
任务可以在任何阶段被删除。
6.3wind任务的排序(scheduling)机制
多任务处理需要一种scheduling算法来协调任务间操作。
Wind默认的排序算法是基于优先级的抢占式算法(PreempivePriority-Basedalgorism)。
其典型的控制任务排序例程有:
kernelTimeSlice()-------Controlround-robinscheduling(循环排序)。
taskPrioritySet()--------Changethepriorityofatask。
taskLock()---------------Disabletaskrescheduling。
taskUnlock()------------Enabletaskrescheduling。
抢占式优先级排序是指任何任务都具有一定的优先级,优先级高的任务可以中断正在执行的低优先级的任务,执行完毕后再把CPU控制权交给先前的任务。
Wind内核共有256个优先级,0为最高优先级,255为最低优先级。
任务执行时也可以动态改变其优先级来反映外部事物优先级的变化,对应的例程为taskPrioritySet()。
作为抢占式优先级排序算法是循环排序算法。
该算法为同等优先级的任务公平的分配CPU所有权。
它可以用例程kernelTimeSlice()来开启。
6.4任务控制
VxWorks基本的任务控制例程包含在taskLib库中。
这些例程提供了任务的生成、控制和信息。
最基本的任务生成例程是taskSpawn(),其调用形式为:
id=taskSpawn(name,priority,options,stacksize,main,arg1,….,arg10);
其中id是生成的新任务的标识,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VxWorks 操作 指南
![提示](https://static.bingdoc.com/images/bang_tan.gif)