文档库 最新最全的文档下载
当前位置:文档库 › vxworks Tornado2.2使用指南

vxworks Tornado2.2使用指南

vxworks Tornado2.2使用指南
vxworks Tornado2.2使用指南

Tornado使用指南

目录

1.概述 (2)

1.1 T ORNADO 组件 (2)

1.1.1 开发工具 (2)

1.1.2 实时系统 (3)

1.1.3 Tornado 文件目录 ...................................................................................................... 41.2 硬件/软件配置 .. (7)

1.3 booting介绍 (7)

1.4 Tornado开始过程 (12)

1.5 WDB 代理 (14)

2Projects (15)

2.1 bootable projects (15)

2.2 集成模拟器vxsim (23)

2.3 Downloadable projects (21)

2.4 build说明 (24)

3WindSh 和Browser (25)

3.1WindSh (25)

3.2 Browser (28)

4 CrossWind (29)

4.1Debugging简介…………………………………………………………………………29.

4.2 任务级Debugging……………………………………………………………………..29.

4.3 系统级Debugging (30)

1. 概述

VxWorks 是美国Wind River System 公司(以下简称风河公司,即WRS 公司)推出的一个实时操作系统。WRS 公司组建于1981年,是一个专门从事实时操作系统开发与生产的软件公司,该公司在实时操作系统领域被世界公认为是最具有领导作用的公司。

VxWorks 是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

1984年WRS 公司推出它的第一个版本--VxWorks 1.0.1,在1999年推出了它的最新版本VxWorks 5.4。从1995年以后,WRS 公司推出了一套实时操作系统开发环境-- Tornado。

1.1Tornado

2.0 组件

Tornado是嵌入式实时领域里最新一代的开发调试环境。。Tornado给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环境。Tornado包含三个高度集成的部分:

. 运行在宿主机和目标机上的强有力的交叉开发工具和实用程序;

. 运行在目标机上的高性能、可裁剪的实时操作系统VxWorks;

. 连接宿主机和目标机的多种通讯方式,如:以太网,串口线,ICE或ROM仿真器等。

对于不同的目标机,Tornado给开发者提供一个一致的图形接口和人机界面。当使用Tornado 的开发人员转向新的目标机时,不必再花费时间学习或适应新的工具;对深嵌入式应用开发者来说更重要的是,Tornado所有的工具都是驻留在开发平台上的。在嵌入式系统工具发展历史上,Tornado是第一个实现了当目标机资源有限时开发工具仍可使用而且功能齐全的开发环境。另外,所有工具都通过一个中央服务器(Target Server)处理与目标机的通讯。所以无论连结方式是Ethernet,还是串口线、ICE仿真器、ROM仿真器或客户设计的调试通道,所有工具均可使用。

1.1.1 实时系统

vxworks 的组成如下图所示:

特点:

● 实时,能满足严格的时间要求;

● 多任务内核:

实时调度(基于优先级或抢占式的);

任务间通讯;

互斥;

● 其他标准设备作为库的形式支持内核;

● 系统可重新配置,根据需要裁减组件,空间小;

● 所有任务驻留在同一地址空间(任务间通讯快而容易,上下文切换快,但一个任

务崩溃会影响别的任务);

● 所有任务运行在超级(supervisor )模式(没有哪个系统调用具有压倒一切的优势,

所有的设备都作为普通子程序调用);

● 在主机上编写代码和编译;在目标机上进行调试和执行;

1.1.2 tornado 开发工具

● CrossWind:

源程序(C 或 C++ 以及汇编程序等)的调试工具。 CrossWind 结合了图形方

式和命令行方式的最大特点。 最普通的调试方式,例如断点设置和程序执行控制,可 以通过便捷的点击方式实现。同样,程序显示框和数 据侦察窗也提供了一个直接的可视窗口来观察应用程 序中最关键的一部分。如果需要更复杂的调试,CrossWind 也提供了命令行的方式来调用它提供的各种命令。

● Browser:

可对系统对象(任务、消息队列、信号量等)和存储 器使用情况进行观察的浏1-6

Real-Time System

Kernel

Memory

Mgmt I/O

S y st em File Systems D ev ic e D riv er s Netw ork Stack

览器。可以方便地监视用户的目标系统。Browser汇总了应用进程,内存消耗和一个目标内存的映射。通过Browser,用户可以观察信号量、消息队列、内存分配、看门狗计时器、堆栈使用情况、目标CPU使用率、对象模块结构和符号表以及每个任务的详细信息。

●WindSh:

提供从宿主机到目标机之间的一个命令shell。WindSh 是一种非常受欢迎的开发工具,它具有很强的交互性和可操作性,允许用户调用内存中的应用程序模块或是VxWorks模块中的任何例程。它不但具有一般命令语言的功能,而且也具有C 语言的设计特点,能够解释几乎任何C 语言表达式,执行大多数C 语言算子,解析符号表数据。对初用者来说,WindSh学习起来比较简单,使用比较方便,对熟练用户而言,则有较为高级的手段可以应用。

●WindView:

非常出色的系统可视诊断和分析工具。可非常容易地观察各任务,中断程序之间的相互作用。它是在嵌入式系统应用开发期间的可视工具。

●VxSim:

快速原型仿真器。可在硬件设备未完成之前,在宿主机上对应用程序进行仿真分析。

●Project Facility:

工程管理工具,配制应用程序或vxworks本身。

注:大部分的工具都能通过使用Tcl进行定制,Tcl(Tool Command Language),一种类似于Bourne Shell和C语言的脚本语言。

1.1.3 Tornado文件目录

vxworks 的大部分是与机器无关的,相关的部分如下(需要有相应的安装文件):

1). 体系结构不同(如MC680x0, PPC, i960, x86, ARM),所以有相应的Tornado for PPC,

Tornado for x86, etc

2). BSP不同(表现在硬件初始化,时钟/定时器,VMEbus接口等),所以在Tornado for

x86里有386,486,pentium等各种BSP;

3)编译器不同(可选),target server不同。

注:BSP是Board Support Package的缩写,该术语通常用于嵌入式领域,主要指在开发嵌入式应用时系统开发商提供的各种驱动支持库。不过该术语即使在嵌入式领域人们对它的理解也有一些不同,有的认为它就是驱动程序,有的认为它是OS的驱动程序,也有认为它就是HAL(HardWare Abstract Layer )。实际上这几种理解都只是侧重于某个部分,再由于每个嵌入式系统提供商都根据自己的系统而提出对BSP的不同理解,因此在涉及到BSP的具体涵义时人们往往有一种似是而非的感觉。嵌入式系统提供商的龙头老大:WindRiver公司对BSP的理解偏向于是OS的驱动程序(注:从其BSP的文档中可以看出)因为嵌入式系统中的各种设备的确名目繁多,因此将BSP定位于OS的驱动的确有一定的道理。对于认为BSP就是驱动程序的人来讲,估计他们通常是接触的嵌入式系统

提供商提供的某种应用解决方案的应用系统(Total Solution)。在这种开发系统中BSP完全有理由被认为是所有驱动程序,因为开发人员没有必要自己去开发驱动程序,而只是验证驱动程序在自己的系统中是否正确了事。对于开发嵌入式OS的人来讲,似乎将BSP 看成是对硬件平台的抽象层(HAL)和CPU的驱动程序更恰当。因此各种理解都有一定的道理,但由于出发点不同,对BSP的理解都有失全面甚至有错误的地方.

所有的人肯定对搭积木都有一定的了解,可以用各种简单的图形积木搭建成各种物体。在程序设计的世界中人们一直希望能够利用一些可重复使用的基本程序单元来构建自己的程序或者系统。在这方面已经有了一些比较成功的案例:各种标准共享库、标准程序组件等的广泛使用。但是这些成功的案例都有一个共同的特点:都是不基于任何硬件平台的程序。当开发某个平台的、与硬件相关的程序时,往往不得不从设置某个寄存器的某个位开始编程。在嵌入式领域,这种情况更为明显。在嵌入式领域中,几乎所有的设备控制和各种协议控制都在同一个嵌入式CPU当中,非常有利于对CPU Core和设备进行抽象。如果能对CPU Core和设备的各种控制进行抽象,人们在移植OS或者开发驱动程序时就没有必要对CPU进行非常深入的了解,不必要了解某个寄存器的某个位是控制什么的,也没有必要了解怎样初始化某个控制寄存器等等。因此BSP是一种能为程序开发人员提供对硬件进行描述性操作的开发支撑库。描述性操作是指在控制硬件时只需知道要完成什么,而不需要知道如何去完成,每个操作都是一些单一的动作。例如:对于设置一个串口的波特率,只需要知道是那个串口,波特率是多少,而不需要知道要写那一个寄存器以及如何写等。在利用BSP编写Driver时,编程人员只需要了解该Driver的初始化顺序以及初始化的内容而不需要了解初始化的具体细节就能完成驱动程序。显然可以大大的提高工作效率,并且对于硬件的具体细节设置是在驱动程序中最容易出错的地方,而利用BSP支撑库则可以大大的减少出错的可能性。在BSP支撑库中除了对硬件的描述性操作部分的代码外,还包含了对目标板的初始化部分、中断管理部分以及一些简单的驱动程序程序单元。这样的BSP可以不用依赖于任何的操作系统和驱动程序,但是可以作为操作系统和驱动程序的开发支撑库,可以非常方便的移植或者开发OS与驱动程序。在最好的情况下,OS与驱动程序的移植只需要更换相应平台下的BSP支撑库就完成了移植。(摘录于https://www.wendangku.net/doc/cb6730497.html,)

下面看Tornado的文件树:

上图给出了安装后的Tornado文件夹的内容和意义,需要解释的是:

1)host-os目录根据你的主机硬件和操作系统而自动命名,如

x86-win32 所有的windows系统主机

sun4-solaris2 Solaris 操作系统主机

parisc-hpux10 HP-UX主机

2)./target/config/all包含了boot程序和vxWorks开始的源代码,是非常重要的文件,后面会有专门介绍,本人建议仔细浏览一下程序;

3)对于每个库文件(.lib),都有相应的包含头文件,编程时需要用上,对于vxworks系统有哪些库文件,需要有个印象,如:

1.2 硬件/软件配置

上图是一个典型的开发环境。

Tornado下,一个开发环境的建立,需要以下的步骤:

◆设好目标机硬件;

◆定义主机环境变量,配置好网络软件;

在\x86-win32\bin下,有torVars.bat脚本程序,用来设置环境变量,网络要配置好

TCP/IP协议,修改主机hosts文件(见booting部分);

◆开始Tornado 注册器,wtxregd (管理目标服务器的工具);

◆指明目标机启动参数(boot parameters)并启动目标机(后面介绍);

◆配置并启动目标服务器(target server),目标服务器是管理主机开发工具和目标机

通讯的;

1.3booting过程介绍

对于目标机来说,在启动的时候需要有一个boot 程序,boot程序的主要功能是引导vxworks 内核,所以boot程序需要知道vxworks的内核存放在何处,通过什么手段去获取。在vxworks缺省的boot程序里有一条内建的default boot line,它指明了获得vxworks 内核的途径,在boot程序启动时,它先寻找NVRAM里面有无boot line,如没有,则等里的内容添入BOOT_PARAMS结构里,然后,启动程序和vxworks内核利用此结构寻找启动参数。

typedef struct /* BOOT_PARAMS */

{

char bootDev [BOOT_DEV_LEN]; /* boot device code */

char hostName [BOOT_HOST_LEN]; /* name of host */

char targetName [BOOT_HOST_LEN]; /* name of target */

char ead [BOOT_ADDR_LEN]; /* ethernet internet addr */

char bad [BOOT_ADDR_LEN]; /* backplane internet addr */

char had [BOOT_ADDR_LEN]; /* host internet addr */

char gad [BOOT_ADDR_LEN]; /* gateway internet addr */

char bootFile [BOOT_FILE_LEN]; /* name of boot file */

char startupScript [BOOT_FILE_LEN]; /* name of startup script file */

char usr [BOOT_USR_LEN]; /* user name */

char passwd [BOOT_PASSWORD_LEN]; /* password */

char other [BOOT_OTHER_LEN]; /* available for applications */

int procNum; /* processor number */

int unitNum; /* network device unit number */

int flags; /* configuration flags */

} BOOT_PARAMS;

下面看boot line结构:

bootDev(unitNum,procNum) hostname:bootFile e=ead b=bad h=had g=gad

u=username pw=password f=flags tn=targetName s=startupScript o=other

bootDev // 设备名,软盘:fd; 硬盘:ATA;网络要根据网卡的类型来做:NE2000及其

兼容网卡为ENE,3COM以太网卡为ELT,Intel

网卡为EEX,Intel82559网卡为fei ,3C905B

PCI网卡为elPci。

unitNum / 设备单元号,一般指为0

procnum / cpu的处理器号,一般为0

flags / 标识,十六进制数,意义如下:

0x01: 关闭对处理器0的系统控制

0x02: 将局部symbols和全局symbols装入目标机symbols表

0x04: 禁止自动启动(即由用户输入boot line)

0x08: 快速boot(不计数等待用户输入)

0x40: 使用BOOTP or DHCP client

0x80: 使用TFTP获取image,否则使用RSH或FTP,用FTP时pw不为空

0x100: 使目标机登记为一个代理ARP client

ead / 目标机ip地址,此值如为空,网络接口不被帮定

bad / 背板接口

had / 主机ip地址

gad / 网关地址,如果主机和目标机不在一个局网里,需要

bootFile: / 存放vxworks image的路径

usr: / 使用FTP或RSH时的用户名

passwd: / ftp password

other: / 从网络启动时此值可为空,当从软盘或硬盘启动时,如果此值为你的网络设备,boot会为你绑定网络设备

hostname: / 主机名,任意

targetName:/目标机名

startupScript: / 脚本名,在boot以后的target shell里执行

在boot line中,e,b,h等等参数都不要求次序,你也可以让它为空值,如”pw= ”就是指口令为空参数,看一个例子:

ene(0,0) lijun:c:/tornado/target/config/pc486/vxworks e=10.132.3.40

h=10.132.3.37 u=x86 pw=apue tn=rod

在上例中,网卡为NE2000及兼容网卡,主机名为lijun ,vxworks image存放在

c:\tornado\target\config\pc486这个目录下,目标机的网络地址为10.132.3.40 主机的网络地址为10.132.3.37,通过FTP服务器下载,用户名为x86,口令为apue,目标机名为rod

再看一个例子:

fd=0,0(0,0) lijun:/fd0/vxWorks e=10.132.3.40 h=10.132.3.37 u=x86 o=ene

这个例子里面,用的是软盘启动vxworks ,在软盘做好boot 后,还需要把vxworks image 拷入软盘,在boot 起来以后,引导程序会在软盘里寻找vxworks,并把它启动。

软盘用fd0表示,硬盘用ATA(0,0),最后的参数o=ene 表示网络设备是NE2000网卡,并将之和ip地址绑定。

上面是有关boot的一些总述。

在vxworks里面,针对每一种的bsp(什么叫bsp?参看本文上),都有各自的配置文件,在C:\Tornado\target\config\bspname\config.h里,打开config文件,就会看到上面所说的default_boot_line,接下来要做的就是根据你的情况修改此行参数,使之符合自己的要求。在实时应用系统的开发调测阶段,往往采用以PC机作为目标机来调测程序。主机PC和目标机PC之间可采取串口或是网口进行联结。由于大多数目标已配有网卡,网络联结成为最简单快速的连接方式。下面是它的详细步骤:

1)、修改通用配置文件\\Tornado\target\config\bspname\config.h.

针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网

卡为ELT,Intel网卡为EEX,Intel82559网卡为fei ,3C905B PCI网卡为elPci。

(以3COM以太网卡为例)

2)、针对目标机的网卡,#define INCLUDE_ELT,同时#undef 其它网卡

在config.h文件中修改相应网卡类型(如网卡为3COM网卡)的定义部分:

#define IO_ADRS_ELT 网卡I/O地址

#define INT_LVL_ELT 网卡中断号

3)、修改#define DEFAULT_BOOT_LINE的定义:

#elif (CPU_V ARIANT == PENTIUM) (修改此行后的DEFAULT_BOOT_LINE)

#define DEFAULT_BOOT_LINE \

"elt(0,0)主机标识名:vxWorks h=主机IP e=目标机IP u=登录用户名pw=口令

tn=目标机名"

例如:#define DEFAULT_BOOT_LINE \

"elt(0,0)comps:VxWorks h=10.132.101.88 e=10.132.101.82 u=x86 pw=xxx

tn=x86"

新安装的Tornado2要拷贝文件01FAE.cdf到目录

\Tornado\target\config\comps\vxWorks。???

注意:对于PCI网卡,无需步骤2,即不用修改网卡的I/O地址和中断号。

4)制作启动软盘:

?准备一张已格式化的空盘插入软驱;

?在Tornado集成环境中点取Build菜单,选取Build Boot Rom,选择对应的BSP,

选择Image为bootrom_uncmp,OK。

?进入DOS命令提示符,执行命令\tornado\host\x86-win32\bin\torvars(建立

命令行环境);改变目录到\tornado\target\config\pcpentium;执行命令

mkboot a: bootrom_uncmp

注:image文件的种类

vxWorks_rom :可以写到ROM的、没有带符号表和Shell的、没有压缩的vxWorks。

vxWorks.st :带有符号表的vxWorks。

vxWorks.st_rom:可以写到ROM的、带有符号表和Shell的、压缩的vxWorks。

vxWorks.res_rom :可以写到ROM的、带有符号表和Shell的、只有数据段拷贝到

内存的、没有压缩的vxWorks。

vxWorks.res_rom_nosym:可以写到ROM的、只有数据段拷贝到内存的、没有压缩

的vxWorks。

bootrom:压缩的bootrom

bootrom_uncmp:没有压缩的bootrom

附:硬盘启动方法:

1.在config.h中将INCLUDE_ATA包括进去;

2 .修改config.h里的

#define DEFAULT_BOOT_LINE "ata=0,0(0,0)host:/ata0/vxWorks "

3 .将目标硬盘格式化,用vxsys.exe(在host/x86_win32/bin/下)做盘;

4. 把bootrom.sys做在软盘上,拷到目标硬盘上;

5. 把你生成的vxworks文件拷到目标硬盘上;重新启动就OK。

5)新建Bootbal工程(主要目的是提供新的定制过的内核)

在Tornado环境中新建Bootbal工程:

在第一步中设定“Location”为c:\myprojects\BootPen\Project0;

在第二步中选择“A BSP”为你的BSP, 如pcPentium;

Build新建的工程,生成VxWorks。

6)启动Tornado组件FTP Server (Host)[注:如果想从软盘加载内核,不需此步,只要将上步生成的vxworks文件拷入软盘即可]

启动Tornado组件FTP Server,在WFTPD窗口中选择菜单Security中的User/right...,在其弹出窗口中选择New User...,根据提示信息输入登录用户名和口令,用户名为x86,密

码为xxx;

指定下载文件vxWorks所在根目录,在此为c:\myprojects\BootPen\Project0

还必选取主菜单Logging中Log options,使Enable Logging、Gets 、Logins 、Commands 、Warnings。

最后,将系统制作盘插入目标机软驱,加电启动目标机即可通过FTP方式从主机下载VxWorks系统。

建议:如果采用网络从主机FTP下载vxworks image,需用交叉网线,我所大网不行。

下面是booting过程中的一些细节:

1.正如上面所说的,开始时要等待用户输入boot 参数,缺省时间是7秒,这可通过修

改bootconfig.h文件来修改缺省时间,或给flag附值来改变(如快速启动),在7秒内如没有输入,就读取default-boot-line的启动参数。建议手工输入boot 参数,方法为:输入:$dev (0,0) host:/file h=# e=# g=# u=# ………, 这样就不需要一次次的做启动软盘,做一次就够了。同boot-line格式一样。通过输入p,可列出启动参数,如:

2.整个启动界面大致如下图:

如果你在自己的启动过程中和上面的不一样,可能的原因有几种情况:

1)在第一个Attaching network interface….没有done结尾:可能网卡类型不对;2)Loading….没有出现vxworks image的大小:可能网线或连接有问题;

3)Loading…54677…没有第二和第三部分:要用交叉网线;

4)Starting at…后没有进一步的指示:可能image无效;

3.重起的方法:

在WindSh里则输入reboot;

在目标机上按CTRL-X

1.4 建立tornado开发环境

在目标机起来以后,只要再将主机上的target server配置并启动起来后,主机同目标机的通讯就建立起来了,整个开发环境就已搭好了,接下来就是生成程序并下载到目标机运行了。

我们先看一下taraget server 的作用:

1)、和目标机上的debug agent通讯;

2)、模块的动态装载和卸载;

3)、主机驻留的符号表;

4)、为主机工具在目标机上安排内存;

5)、缓存目标机RAM里的程序代码段;

6)、虚拟I/O设备管理;

所有的Tornado工具使用WTX (Wind River Tool Exchange Protocol )同target server通讯,target server再将请求消息送往目标机上的WDB代理,这就避免了主机工具频繁地访问target.

注:wtxregd(注册器程序),必须在target server之前启动,主要管理工具需要同target server连接的信息。

下面是具体的一个配置过程:

运行Tornado(tornado.exe)

执行菜单命令Tools | Target Server | Configure,弹出目标服务器设置对话框,点击New 产生一个新的配置。

设置Description域(可以任意设置);

设置Target Server域(可以任意设置);

在Change Property域选取Back End项(该项设置主机与目标机如何连接,缺省为网口连接,如果使用串口连接,需要修改configall.h文件,重新编译链接VxWorks映象),如果使用网口调试,选择wdbrpc,在目标IP名或地址域中给出目标机的IP名或地址(建议给出IP名,因为这样会快得多),如果给出的是IP名,需要在HOSTS文件中给出IP名与IP地址的对应关系,如果用串口调试,选择wdbserial,选择相应的串口和波特率(注意:此处的串口是指主机的串口不是目标机的串口);

在Change Property域选取Core File and Symbols项,选中File项输入相应的文件(同目标机上运行的内核要一致),点击Launch,运行目标服务器。

执行菜单命令File | New 创建一个新的文件,并打开编辑器Editor(该编辑器功能不是很强大,可以使用其它编辑器如Source Insight)。

单独编译生成的源文件,生成目标文件(.o),编译连接过程的详细介绍请见后面。

选取相应的目标服务器。

执行菜单命令Tools | Debugger运行调试器。

执行菜单命令Debug | Download下载要调试的目标文件(.o)

在Editor窗口设置断点。

执行菜单命令Debug | Run弹出对话框,要求输入调试入口函数,输入要调试的函数。

进行源码级调试

执行菜单命令Tools | Shell运行Shell。可以在Shell窗口查看/修改全局变量、内存,查看任务列表、各模块使用内存的情况、对象(如任务、队列、信号量、定时器、内存分区)等信息。

执行菜单命令Tools | Browser运行Browser。在Browser中可以查看任务列表、各模块使用内存的情况、对象(如任务、队列、信号量、定时器、内存分区)等信息。

1.5WDB代理

WDB代理(WDB Agent)运行在目标机上,代表target server 和Tornado tools: 1)、读或修改内存;

2)、设置或清除断点;

3)、创建、开始、停止、删除任务;

4)、调用函数;

5)、收集系统对象信息;

WDB Agent可配置性:

1)、可在任务级、系统级模式下debug

2)、可选择同target server的通讯方式

注:target server 和WDB agent通过WDB (Wind Debug) protocal进行通讯。

2.Project

2.1 Downloadable project

Tornado 使用工程(project) 和工程区(workspace) 来管理用户代码、配置vxWorks、定制编译环境。

Project是一个源文件和二进制文件的集合,workspace是一组相关projects 的集合。

在tornado下,选择File->New Project…开始生成新工程:

step1:

Bootable & downloadable:

●一个完整的应用分:应用+Vxworks+Bsp

●为适合不同的环境,Vxworks将应用和环境分开:

应用+环境(Vxworks+Bsp), 环境诸如:ppc, x86, 模拟;

●所以:bootable --- 完整应用

downloadable --- 仅应用,在调试的时候选择环境

●模拟是一特殊的环境,将宿主机也模拟成目标机;

所以一般应用选择downloadable, 完整应用(如烧制到falsh)选择bootable;

Step 2: 输入新工程设置

Name: 工程名;Location: 工程位置WorkSpace: 开发环境(可以几个工程合用一个)Step 3: 选择工程环境

可以选取以前的工程环境,也可以自己选择;

一般选择后者,可以选择目标环境,

不在单板上运行时:选择模拟;

在单板上运行时:选择相应的选项

到此已经生成了基本程序框架,可以加入相应的应用;

Step 4: 创建自己的应用:

可以直接在Tornado环境内进行开发,File…->New,为工程填加一个c/c++文件;如建立了文件main.c:

#include

#include

#include

int Add(int a, int b)

{

return a+b;

}

void main()

{

int a,b,num;

printf("hello world!\n");

a= 1;

b= 2;

printf("%d+%d=%d\n", a,b,Add(a,b));

}

Step 5: 编译联接

第一个按钮:build

第二个按钮:build all

第三个按钮:Compile

第四个按钮:建立整个工程的调用关系,如果没有执行,会自动调用;

结果是自动将被调用的文件加入到工程;并自动分类;

这基本同其他调试工具;用它进行编译联接;

如果出错,则修改相应的原码

Step 6: 下载文件到目标机

基本过程如下:

如果使用模拟,就启动模拟

: 会出现下面的对话框

有标准的和自定义的2种,一般选择标准的;

ok后就启动了模拟:

它除了担负做模拟机的任务外(加载了Vxworks和响应的驱动);

还可做显示输出(printf)

启动Target Server:

在上面一步完成后,会出现下面的对话框;

确定后会调起Target Server;

启动SHELL , 具体工具的使用参见另外说明;

键入:moduleShow, 察看启动的模块,可以看到Vxworks已经启动,即环境已经建立●下载应用:

选择相应的应用下载到目标机

在Shell中键入moduleShow:

可看到应用也运行了。

至此,应用已经下载完毕;

Step 7: 调试程序:

●启动调试器:

●运行:

VxWorks常用命令汇总

VxWorks常用的命令 1.与任务相关的命令 sp function,[arg1],...,[arg9] -启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节 period n,function,[arg1],...,[arg8] -创建一个周期调用function的任务,周期为n秒,最多接受8个参数 repeat m,function,[arg1],...,[arg8] -创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数 ts tidX -挂起任务 tr tidX -恢复挂起的任务 td tidX -删除任务 i tidX -显示任务基本信息,参数为0时显示全部任务 ti tidX -显示任务详细信息,包括寄存器、堆栈等 tt tidX -显示任务的函数调用关系 checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务 [其中tidX可以为任务ID 也可以为任务名] 2、系统信息 lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数: 0,给出符号表统计;""(空字符串),列出全部符号 lkAddr addr -显示addr地址附近的符号表 l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令 h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目 d [addr,[number],[width]] -显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8 m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等 printErrno value -打印系统定义的错误码的宏 3、与网络相关的命令 ifShow ["ifname"] - show info about network interfaces inetstatShow - show all Internet protocol sockets tcpstatShow - show statistics for TCP udpstatShow - show statistics for UDP ipstatShow - show statistics for IP icmpstatShow - show statistics for ICMP arpShow - show a list of known ARP entries

嵌入式系统的比较

嵌入式系统的比较 简单介绍ecos, uc/OS,uClinux,RTlinux,Linux 到目前为止接触过QNX、RTLinux、uC/OS-II、Nucleus Plus、VRTX、VxWorks、eCos,总结下来有以下特点: Ecos:多任务抢占机制,可配置(特色),可配置文件系统 uc/OS:代码很少,多任务抢占机制,需自己扩展文件系统 uClinux:非抢占式,没有MMU管理存储器,有文件系统等许多功能 RTlinux:通过在L inux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的L inux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行。 Linux:有MMU管理存储器。 1:QNX 的可靠性很好,协议栈、各种外设驱动稳定,只是运行所需资源有些多,需要MMU。如果需要高可靠性应用,QNX可能是最好的选择。 2:RTLinux的实时性与其它RTOS相比有些差。但是,因为好多Linux资源可以利用,是RTLinux的优点。但是运行所需资源比QNX还多,也是需要MMU。可以选用开源的RTLinux 或内容新的商用RTLinux。 3:uC/OS-II比较小巧,移植容易,网上资源很多,核心可以做得很小。但不是免费的,并且驱动需要自己编写,协议栈、图形驱动都要另外加。 4:Nucleus Plus比uC/OS-II庞大,另外提供了文件系统、协议栈、图形界面等许多东西。当然也是分开卖的,不是免费的东西。使用起来比较容易上手。 5:VRTX 是一款比较早的RTOS,现在使用的人已经很少。运行还是比较可靠。配套的文件、协议栈等模块很少。 6:VxWorks是RTOS中的大牛,国内外用的人很多,开发工具功能强大,使用方便,但是价格昂贵。也有基于MMU的高可靠性的产品。所需资源比QNX小,比uC/OS、eCos 多。对于一些私企或者好似小公司来说,可用性值得商榷。 7:eCos是开源的RTOS。针对不同的CPU已经做了许多现成的移植。代码尺寸比Nucleus 的略大。如果不用USB host等,并且不想花费太多的金钱,应该是不错的选择。 μC/OS和uClinux的比较 引言 随着现代计算机技术的飞速发展和互联网技术的广泛应用,从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C(计算机、通信、消费电子)一体的后PC 时代。后PC时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。 嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性能有严格要求的计算机系统。随着

嵌入式实时操作系统VxWorks入门

嵌入式实时操作系统VxWorks入门 VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。VxWorks原先对中国区禁止销售,自解禁以来,在我们的军事、通信、工业控制等领域得到了非常广泛的应用。 VxWorks的实时性体现在能于限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。因此,实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。本文将对这个操作系统进行一个入门级的、全面的介绍。为力求展示其全貌,全文共分五章: (1)搭建VxWorks嵌入式开发环境; (2)简要介绍VxWorks的基本组成,内核的基本结构; (3)概述VxWorks板级支持包(BSP)的概念及VxWorks的启动过程; (4)介绍VxWorks设备驱动的架构及编写方法; (5)指明VxWorks应用开发的思路,任务调度及任务同步、中断与任务的同步机制。 以上各章中将贯穿着许多实例,由于本文定位于入门级教程,所以文中的实例都将十分简单。下面我们进入第一章内容的讲解。 嵌入式系统的调试调试方法一般为通过PC(宿主机)上的集成开发环境交叉编译针对特定电路板(目标机)的程序,然后将程序通过目标板的JTAG、串口或网口等途径下载到目标板上运行。因此,为了构造一个嵌入式系统的学习环境,拥有一块包含CPU、存储器及I/O 电路(构造计算机系统)的目标电路板往往是必要的。虽然许多集成开发环境附带模拟软件,但仅限于指令集的模拟,均无法模拟物理的目标机硬件平台,因而在其上只能进行应用程序的象征性模拟开发。但是,并非所有人都能拥有一块物理的电路板。在这种情况下,我们如何构造一个模拟的开发环境,其学习效果就如同拥有完全真实的电路板一样呢?本文试图解答此问题,主体内容包括四个方面: (1) 利用VMware等软件模拟真实的目标机; (2) 构建VMware虚拟PC上VxWorks BSP,建立Bootrom和OS映像; (3) 修改Tornado相关设置,连接宿主机与目标机,建立调试通道; (4) 写一个简单的应用程序并下载到目标系统运行。 图1 嵌入式系统的调试 本章工作的最终目标为: (1)VxWorks在VMware启动成功并顺利运行,的开发模型: 图4 PC作为目标机 很遗憾,这种方法实际上非常麻烦,同时开动两台PC进行调试将使你和你的室友饱受折磨,既然他如此地热切于游戏和上网。因此,我们可以借助VMware来在本机上虚拟出另一PC。 VMware的确是天才的作品!在同一PC上,利用VMware几乎可以安装所有的操作系统,而且操作系统之间的切换不需要重新启动电脑。VM的意义是Virtual Machine,即虚拟出一个逻辑的电脑,它可以提供基于Intel CPU的虚拟PC系统环境,包括CPU、内存、BIOS、硬盘和其他外围硬件设备。 下面我们讲解用VMware来建立一台虚拟PC的步骤: (1)并安装VMware; (2)使用VMware向导建立一个针对VxWorks的虚拟机;

vxworks653编程手册

一.V xWorks653运行时系统 1.1. 运行时层 一个vxworks653模块由下面四层组成: ■core OS—必需 ■partition—至少需要一个(vThreads 或COIL-based),每个都在一个分区的操作系统之中■APEX shared library—ARINC 653 应用所需 ■POSIX shared library—POSIX 应用所需 1.1.1.Core OS层 核心操作系统提供服务给分区。 缺省的,核心操作系统使用ARINC653规范中的时间抢占的调度(TPS)来调度分区。Vxworks653的核心操作系统还可以采用APPS调度策略在TPS调度的空闲时间内调度优先级

抢占调度(PPS)使能的分区。 核心操作系统提供给每个VThreads分区操作系统的服务包括: ●分区系统资源 ●调度分区 ●代表分区的操作系统执行trap异常 ●定义和强制分区边界 ●装载分区 ●使用端口和通道在分区间传递消息 ●处理I/O ●代表应用完成系统调用 ●支持分区的调试 ●监控分区和系统的健康 1.1. 2.vThreads 层 vThreads分区操作系统在核心操作系统分配给该分区的时间内调度vThreads中的线程。vThreads不直接与设备交互,而是通过核心操作系统的系统调用。 1.1.3.APEX 层 构建在vThreads之上,遵循ARINC653规范,并且提供相应功能和API。 1.1.4.POSIX层 构建在vThreads之上,遵循用于实时扩展的POSIX标准(1003.1b)。 1.2. 装载和启动 当目标板加电时,按照下面的步骤进行装载和启动 ●初始的启动码装载核心操作系统,分区操作系统,共享库,以及应用 ●核心操作系统初始化自身,启动它自己的子系统 ●核心操作系统创建分区 ●核心操作系统启动分区调度器,并且让应用初始化自身 核心操作系统可以在初始化完成之后下载在线装载的应用程序到分区。应用可以在分区运行之时装载到分区。

常见的嵌入式操作系统

常见的嵌入式操作系统 分类:嵌入式操作系统2012-12-11 10:06 459人阅读评论(1) 收藏举报嵌入式操作系统 嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠。 2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。 3.面向应用,强实时性,可用于各种设备控制当中。 国际上常见的嵌入式操作系统大约有40种左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com 的Palm,以及Symbian和Google的Android等。 一、VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是T ornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 二、Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操

VxWorks操作系统RTP介绍和使用方法

VxWorks 操作系统RTP 介绍和使用方法 从VxWorks 6.x开始引入RTP(VxWorks real time process projec模t) 式编程,这种模式的优点是应用程序相互独立,互不影响,而且增加了内核的稳定性,缺点是由于“内核态”与“用户态”的内存拷贝,其执行效率有所降低,随着CPU 速度越来越快,这点效率的牺牲已经越来越不重要。相比较于传统的DKM (downloadable kernel module project ),RTP适合多个团队独立运作,然后汇总 联试,这种模式除了全局函数不能再shell 里直接调用外,其对应用程序几乎不 做任何约束,原有的DKM 工程代码稍作修改即可正常运行。内核变化较大,需 要添加较多的组件,内存需要较好的划分,为保持应用程序直接调用函数调试的 习惯,需要封装接口供用户使用。 现简单的介绍RTP使用方法,并给出demo 代码供参考。 1. 新建并编译工程: (1) File->new-> VxWorks real time process projec如t, 图【1】 图【1】 (2) 一路next 后,选择如图【2】所示的编译器

图【2】 (3) 选择Finish 后,工程新建完毕。 (4) 导入源文件:这里的源文件名称是fooRtpApp.c ,一种较快捷的方式是选 中新建的工程,按下F5,源文件会出现在工程中. (5) 右键选择编译,出现如图【3】,选择Continue 继续。 图【3】 编译完成后,会生成vxe 格式的可执行文件,此处为usrAppA.vxe 。 2. 下载可执行性文件 待板子启动后,使用ftp 将vxe 文件下载到板子中。步骤如下: (1)运行->cmd,打开对话窗口,如图【4】所示:

物联网操作系统的必备特性

物联网操作系统的必备特性 物联网所带来的机遇与挑战都是空前的。要抓住机遇,迎接挑战,是否拥有最佳的操作系统做为基础是极为关键的问题。 那么,物联网环境对操作系统提出了哪些不同于以往的需求?产品开发商采用怎样的操作系统,拥有哪些特征或技术,最有可能在物联网的发展中把握先机?基本上,今后的RTOS 不仅必须具备传统的实时性、确定性和可靠性,还必须提供高度互联、全面安全、远程管理等物联网环境所要求的全新能力。最近,风河公司推出了VxWorks7,对这套在嵌入式领域主导多年的RTOs(实时操作系统)进行了再次创新,其目标正是“物联网市场已达 实时操作系统 (The RTOS for thelnternet of Things) ”。实时性依然是物联网操作系统的必备特性 实时操作系统( RTOS,RealTimeOperation System)是指能够在确定的时间对内部或者外部的事件做出正确的响应。在实时操作系统中,进程执行结果的正确与否不仅与逻辑运算或数学计算结果的正确性相关,而且与得出这个正确结果的时间有关。也就

是说,在实时系统 中,如果一个进程的运算结果虽然 是正确的,但是由 于它完成的时间超出了给定的最后期限,那么这个结果就是毫无意义的。 例如汽车中使用的气囊。当报告车辆碰撞的传感器通知CPu 后,操作系统应快速地发出打开气囊的任务,并且不允许任何其他非实时处理进行干扰,晚一秒钟展开气囊比没有气囊的情况更糟糕,这就是一个典型的实时系统。 通常认为,实时操作系统要求速度非常快。但实际上,实时操作系统强调的不仅仅是速度,而是时间关系的次序和确定性。例如,一条货轮在码头等待各地的卡车运来货物之后装船运往海外,规定好了离港启航的时间。那么,如果有一辆卡车在货轮离港时间之后才把货物运到了码头,逻辑上它虽然完成了陆地货运任务,但已经没有任何意义了。货车行驶速度和气囊打开速度当然不可相提并论,但就它与货轮配合的时间顺序而言具有同样都是实时系统,都必须要满足的是时序确定性,而跟速度有多快不一定相关! 再例如,如果使用足够高性能的CPU,Windows 可以提供非常快的速度。但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务也会很长时间无响应。并不是说Windows 不够

几种主流嵌入式操作系统分析

几种主流嵌入式操作系统分析 1.嵌入式Linux 嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化 在容量只有几KB或者几MB 字节的存储器芯片或者单片机中,是适合于特定嵌入式应用场合的专用Linux操作系统。在目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。 这与它自身的优良特性是分不开的。 嵌入式Linux 同Linux 一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式Linux 还在Linux 基础上 做了部分改进,如下所示。 ? 改善的内核结构 Linux 内核采用的是整体式结构(Monolithic),整个内核是一个单独的、非常大的程序,这____________样虽然能够使系统的各个部分直接沟通,提高系统响应速度,但与嵌入式系统存储容量小、 资源有限的特点不相符合。因此,在嵌入式系统经常采用的是另一种称为微内核(Microkernel) 的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断 处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际 需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。 ? 提高的系统实时性 由于现有的Linux 是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行 和响应速度,但从本质上来说并不是一个嵌入式实时操作系统。因此,利用Linux 作为底层 操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,如RT-Linux 已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等 各种领域。 嵌入式Linux 同Linux 一样,也有众多的版本,其中不同的版本分别针对不同的需要在内核等方面加入了特定的机制。嵌入式Linux 的主要版本如表4.1所示。 表4.1 嵌入式Linux主要版本 版本简单介绍 μCLinux 开放源码的嵌入式Linux 的典范之作。它主要是针对目标处理器没有存储管理单元 MMU,其运行稳定,具有良好的移植性和优秀的网络功能,对各种文件系统有完备 的支持,并提供标准丰富的API RT-Linux 由美国墨西哥理工学院开发的嵌入式Linux硬实时操作系统。它已有广泛的应用 Embedix 根据嵌入式应用系统的特点重新设计的Linux发行版本。它提供了超过25种的Linux 《嵌入式Linux应用程序开发详解》——第4章、嵌入式系统基础 系统服务,包括Web服务器等。此外还推出了Embedix的开发调试工具包、基于图 形界____________面的浏览器等。可以说,Embedix是一种完整的嵌入式Linux解决方案

VxWorks操作系统MakeFile

VxWorks操作系统MakeFile(一) 时间:2008-8-24 夜 版权申明:本文为水煮鱼为水煮鱼@博客园撰写,不得用于商业用途,如需摘用,请与水煮鱼联系。 1、介绍 本文将介绍为什么要将你的C源代码分离成几个合理的独立文档,什么时候需要拆分,那又怎么拆分呢? 然后再介绍如何使用GUN Make使你的编译和链接步骤自动化。可能你使用的是其他的make工具,但是其实道理都差不多。当然如果你对自己的编程工具有怀疑的话,可以不妨实际的试试。 2、多文件项目介绍 a. why? 为什么使用多文件项目?他们有什么好处呢? 从表面上看,多文件项目是够复杂的了,又要头文件,又需要extern申明,并且如果你要查找一个文件的话,还需要在更多的文件里搜索。 但是如果把其考虑成一个项目,那一个项目根据功能划分为小的模块,那就不难理解了。 想想如果是一个一万行代码,如果你把其放到一个文件里,则在编译的时候,则需要对一万行代码进行重新编译。不过如果你如果把其放到不同的文件里,那修改一行,则只需要编译一个文件就可以了。可能你会说,一万行代码,就算全部编译,那点时间也基本可以忽略不计,但是实际情况是,在一个大的系统里,可能代码达到几十万甚至上百万,千万行代码的规模。以我们的项目为例,目前代码规模已经达到了上千万行的级别,如果全部重新编译,则将耗费几个小时甚至半天的时间。如果将其划分多多个文件,则修改一行所引入的编译代码,将不会随着你代码规模的增大而增大。所以多个文件的优点不言自明了。 不过对于不便于搜索的问题,其实只要文件划分得当,也并不会造成多大的困难。其实,从多个目标文件生成一个程序包比从一个单一文件生成程序包要好的多。当然,实际上这是不是一个优势还与你所使用的系统有关。但是当使用gcc/ld(一个GUN C编译器/连接器)把一个程序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使用到的部分,但它每次只能从程序包中把一个完整的目标文件排除在外。因此,如果你修改了一个程序包中某一个目标文档中任何一个符号的话,那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分的分解的话,那么经过链接后,得到的可执行文件会比从一个大目标文件组成的程序包连接得到的文件小的多。 并且常常我们的程序是模块化的,高内聚,低耦合,使得文件之间共享部分被减少到了最少,因此采用多文件的方式,可以比较容易的找到代码中的bug。 b.when? 那什么时候分解你的项目? 如果你开发的是一个大项目,在开始前,应该好好考虑一下你将如何实现,并且将生成几个文件来存放你的代码。当然,在项目的开发过程中,你可以建立新的我文件,但是这将打乱你的整体布局,可能造成你整体结构的调整。因此特别建

嵌入式操作系统的种类与特点

1.3.1 嵌入式操作系统的种类、特点与发展 1.嵌入式操作系统的种类 一般情况下,嵌入式操作系统可以分为两类: 非实时操作系统:面向消费电子产品等领域,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书等。 实时操作系统RTOS(Real-Time Embedded Operating System):面向控制、通信等领域,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx等。 (1)非实时操作系统 早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备。在这种情况下,通常把嵌入式程序分成两部分,即前台程序和后台程序。前台程序通过中断来处理事件,其结构一般为无限循环;后台程序则掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。这就是通常所说的前后台系统。一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断来完成,仅在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务程序中处理费时的事件而影响后续和其它中断。 实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先级别,即是平等的,而且任务的执行又是通过FIFO队列排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃,使得整个任务队列中的其它任务得不到机会被处理,从而造成整个系统的崩溃。由于这类系统结构简单,几乎不需要RAM/ROM的额外开销,因而在简单的嵌入式应用被广泛使用。 (2)实时操作系统 所谓实时性,就是在确定的时间范围内响应某个事件的特性。而实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。“在确定的时间内”是该定义的核心。也就是说,实时系统是对响应时间有严格要求的。 实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。实时系统有两种类型:软实时系统和硬实时系统。软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。通常,大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计困难。实时系统的技术关键是如何保证系统的实时性。实时操作系统可分为可抢占型和不可抢占型两类。 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。 操作系统的实时性在某些领域是至关重要的,比如工业控制、航空航天等领域。想像飞机正在空中飞行,如果嵌入式系统不能及时响应飞行员的控制指令,那么极有可能导致空难事故。有些嵌入式系统应用并不需要绝对的实时性,比如PDA播放音乐,个别音频数据丢失并不影响效果。这可以使用软实时的概念来衡量。

VxWorks实时操作系统SIGNAL机制的应用

[摘要] 介绍VXWORKS实时操作系统的信号机制以及各种处理方法,特别是利用该机制实现异常情况的恢复和处理。 1.概述 信号可用来在同一任务内部或不同任务之间实现异步通信,从而改变对多个任务的控制流程。所有任务或中断服务程序均能向指定的任务发送信号,该信号的接收任务将立刻挂起当前的执行线程,而激活任务指定的信号处理程序。信号处理程序是由用户定义的,它关联与特定的信号,而且任务接收到该指定信号时的所有必要处理都在该程序中实现。信号的这种机制使得它特别适合于用来实现差错和异常处理。 2.信号屏蔽 在信号处理时,可通过信号屏蔽来选择需要进行处理的信号,接收到被屏蔽的信号,即使指定了相应的处理程序,也不作任何处理。 为了实现对信号的屏蔽,需要定义数据类型为sigset_t的变量,同时必须包含头文件“signal.h”。 下面介绍实现这一功能的函数: int sigemptyset ( sigset_t *pSet ) 该函数初始化信号集,使得该信号集不包含任何信号; int sigfillset ( sigset_t *pSet ) 该函数初始化信号集,使得该信号集包含所有信号; int sigaddset ( sigset_t *pSet , int signo ) 该函数向信号集中增加新的信号; int sigdelset ( sigset_t *pSet , int signo ) 该函数删除信号集中的信号; int sigismember ( sigset_t *pSet , int signo ) 该函数用来判断信号集是否包含某信号; int sigprocmask ( int how, const sigset_t *pSet, sigset_t *pOset ) 该函数用来设置信号屏蔽;这里,pSet为新的信号集,pOset为当前的 信号集,而how则指示处理方式,其取值与处理方式对应关系如下: SIG_BLOCK 结果信号集为当前信号集和指定信号集二者的并集,通过这种方式,可向当前信号集增添指定的元素; SIG_UNBLOCK 结果信号集为指定信号集的补集和当前信号集二者的交集;通过这种方式,可从当前信号集删除指定的元素;

几种嵌入式实时操作系统的研究分析与比较

几种嵌入式实时操作系统地分析与比较 2008-07-04 20:54 VxWorks、μClinux、μC/OS-II和eCos是4种性能优良并被广泛应用地实时操作系统.本文通过对这4种操作系统地主要性能进行分析与比较,归纳出它们地选型依据和适用领域. 1. 4种操作系统地介绍 (1)VxWorks VxWorks是美国WindRiver公司地产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高地嵌入式操作系统.VxWorks实时操作系统由400多个相对独立、短小精悍地目标模块组成,用户可根据需要选择适当地模块来裁剪和配置系统;提供基于优先级地任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范地内存管理,以及多处理器控制程序;并且具有简明易懂地用户接口,在核心方面甚至町以微缩到8 KB. (2) μC/OS-II μC/OS-II是在μC-OS地基础上发展起来地,是美国嵌入式系统专家Jean J.Labrosse用C语言编写地一个结构小巧、抢占式地多任务实时内核.μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点. (3)μClinux μClinux是一种优秀地嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux.同标准地Linux相比,μClinux地内核非常小,但是它仍然继承了Linux操作系统地主要特性,包括良好地稳定性和移植性、强大地网络功能、出色地文件系统支持、标准丰富地API,以及TCP/IP网络协议等.因为没有MMU内存管理单元,所以其多任务地实现需要一定技巧. (4)eCos eCos(embedded Configurable operating system),即嵌入式可配置操作系统.它是一个源代码开放地可配置、可移植、面向深度嵌入式应用地实时操作系统.最大特点是配置灵活,采用模块化设计,核心部分由小同地组件构成,包括内核、C语言库和底层运行包等.每个组件可提供大量地配置选项(实时内核也可作为可选配置),使用eCos提供地配置工具可以很方便地配置,并通过不同地配置使得eCos能够满足不同地嵌入式应用要求. 2. 性能分析与比较 任务管理、任务及中断间地同步与通信机制、内存管理、中断管理、文件系统、对硬件地支持和系统移植这几方面是实时操作系统地主要性能.下面就从这几个方面着手对上述4种操作系统进行分析与比较. 2.1 任务管理 任务管理是嵌入式实时操作系统地核心和灵魂,决定了操作系统地实时性

实时操作系统包括硬实时和软实时的区别

一.什么是真正的实时操作系统 做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platformteam封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新手入门,欢迎大家拍砖,争取写个连载,本文先总结一下实时的概念,什么是真正的实时操作系统 1. 首先说一下实时的定义及要求: 参见Donal Gillies 在Realtime Computing FAQ 中提出定义:实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。 一个实时操作系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满足时间要求。请注意,必须要满足确定性,而不是要求速度足够快!例如,如果使用足够强大的CPU,Windows 在CPU空闲时可以提供非常短的典型中断响应,但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务会长时间无响应,甚至直接挂死。这是一个基本的问题:并不是Windows不够快或效率不够高,而是因为它不能提供确定性,所以,Windows不是一个实时操作系统。 根据实际应用,可以选择采用硬实时操作系统或软实时操作系统,硬实时当然比软实时好,但是,如果你的公司正在准备开发一款商用软件,那请你注意了,业界公认比较好的VxWorks(WindRiver 开发),会花光你本来就很少的银子,而软实时的操作系统,如某些实时Linux,一般是开源免费

VxWorks操作系统在多功能相控阵雷达中的应用

V x W o rk s操作系统在多功能相控阵雷达中的应用Ξ 黄银园 (南京电子技术研究所 南京210013) 【摘要】 提出了把抢占式实时多任务操作系统V x W o rk s引入到雷达系统,特别是多功能相控阵雷达中的必要性;分析了V x W o rk s操作系统的优点;针对其图形功能弱的缺点和现有雷达显示系统的硬件条件,作者提出了在V x W o rk s操作系统下实现高分辨率光栅图形显示的方法及具体的实现过程。此方法适用性广,能应用于以Tm s34010(或Tm s34020)图形芯片为核心的任何雷达系统。 【关键词】 抢占式实时操作系统,多任务,相控阵雷达,高分辨率光栅显示 A pp licati on of V x W o rk s O p erating System in M u ltifuncti onal Phased A rray R adar HUANG Y i n-yuan (N an jing R esearch In stitu te of E lectron ics T echno logy N an jing210013)【Abstract】 T he paper p resen ts V x W o rk s,a p reemp tive real2ti m e m u ltitask operating system(R TO S)app lied in radar system,especially emphasizes the essen tial of the app licati on of V x W o rk s operating system in m u ltifunc2 ti onal phased anay radar.It analyzes the good qualities of the V x W o rk s operating system;po in ted to V x W o rk s’s sho rtcom ing in graph ics p rocessing and ex isting hardw are conditi on of radar disp lay system,th is paper po in ts ou t the techn ique and its detailed i m p lem en tati on of h igh reso lu ti on raster graph ics disp lay in V x W o rk s operating sys2 tem.T h is m ethod can be w idely u sed in any radar system w ho se graph ics board CPU based on TM S34010o r TM S34020. 【Key words】 p reemp tive real2ti m e operating system,m u ltitask,phased array radar,h igh reso lu ti on raster disp lay 1 引 言 多功能相控阵雷达集搜索、跟踪、制导等功能为一体。它具有如下特点:1)搜索与跟踪功能兼备,具有多目标的跟踪能力;2)能对多枚导弹发出制导指令;3)反应时间短。这些任务都是相对独立的且不需要串行完成的。而且任务也有优先级之分,优先级高的任务需立即响应,而其它的一些任务可以迟后一些完成。这就要求计算机系统必须具备实时处理多任务的能力。整个相控阵雷达都要在系统软件统一管理指挥下运行。合理调度,管理各雷达资源以保证优先级高的任务能实时完成,而其它的任务也能在一定的时间限内完成则必须引入多任务抢占式实时操作系统。以往的单任务模式的操作系统(如DO S)和以时间片为调度基础的多任务操作系统已根本不能满足相控阵雷达的要求。在众多的实时多任务操作系统中,V x W o rk s以其优良的功能和卓越的性能成为多功能相控阵雷达的首选。2 V x W o rk s操作系统的特点 V x W o rk s操作系统是由美国W indR iver公司推出的嵌入式实时操作系统。厂商对系统的实时性、高可靠性等进行了精巧设计;而且还提供了独立而完备的系统开发和性能测试工具。主要有以下优点: 1)高性能的微内核结构:W ind Kernal最小时才几K,提供了很大的灵活空间和裁剪空间,满足各个嵌入式应用的要求。它的主要特点是: a1高效的任务管理:无限数目多任务,具有256个优先级。 b1快速灵活的任务间通讯: 三种信号灯(Sem ap ho re):二进制、计数、有优先级继承特性的互斥信号灯。管道(P i p e)、消息队列(M essage queue)、信号(Signal)。网络套接字(Sock2 et)。共享内存(Shared M em o ry)。 2)多任务环境:因为外部事件是离散的、并发的,事件发生的顺序是不可预测的。多个事件可以 2001年8月现代雷达第4期Ξ

嵌入式实时多任务操作系统的特征介绍

嵌入式实时多任务操作系统的特征介绍 引言:适逢公司进行通用计算平台的硬件基础研究,在此硬件平台之上,必要引入通用的软件平台。为此,操作系统无疑是最佳的选择。在德国十二套软启动项目中,远程IO控制机的软件设计成功引入了实时多任务操作系统μC/OS—II, 本文结合作者的工作成果,针对μC/OS—II将嵌入式操作系统的基本特征和原理进行简单的描述,并对大家所熟知的实时特性概念进行简要的抛析。 嵌入式实时操作系统在国外在上世纪60年代便已发展,至今已有不下百种产品。从在商业领域取得巨大成功的两个突出代表VxWorks和QNX;到开源并广泛传播的Linux;以及由知名公司所推出的WINCE等;再到由个人之力发展至今的μC/OS,每种操作系统皆有其自身的特点及所专长的应用领域,但同时作为嵌入式的实时多任务操作系统又有其共同的特征,以下将结合实际工作中所用到的μC/OS—II为大家进行简单的介绍。 首先,操作系统作为用户应用程序同系统硬件之间的接口,承担着系统全部软、硬件资源的分配、工作调度、控制协调并发活动的重任。如图1所示为包含操作系统的软硬件体系结构。 图1 比较于传统的PC机操作系统,除具有任务调度、同步机制、中断处理、文件功能外,嵌入式实时操作系统还具有如下几个主要特点: ◆可裁减性,嵌入式系统开发所特有的一点便是具有有限的存储空间。面向不同硬件资源的情况下,操作系统具有自身可裁减的特性,以适应系统的存储容量,以μC/OS—II为例,最小可将代码量裁减到2K+。 ◆实时性,于军事及高端工业领域发展起来的嵌入式操作系统,系统所处运行环境极为复杂,要求极为苛刻。对于外部的激励,操作系统能够及时的做出响应,来保证系统的可靠运行。

三种通用嵌入式操作系统的分析与比较

三种通用嵌入式操作系统的分析与比较 关键词:嵌入式,操作系统,Windows CE 时间:2012-08-09 10:45:46 来源:中电网 1嵌入式操作系统 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。作为嵌入式系统的重要组成部分,嵌入式操作系统 EOS(Embedded Operating System)是随着嵌入式系统的发展而出现的,是嵌入式系统发展到一定阶段的产物。嵌入式操作系统的出现,大大提高了嵌入式系统的开发效率,同时也促进了嵌入式的发展。 嵌入式操作系统并不是简单嵌入的操作系统,它除了具有通用操作系统的基本特点外,在小巧、实时性、可装卸、可固化代码、强稳定性、弱交互性、具备统一接口等方面有突出的特点。2三种典型EOS分析 作为在嵌入式操作系统市场通用的三种系统,Linux 、VxWorks 、Windows CE在实时性、内核大小、调度算法、通信能力和开发环境等方面都有自己的特点,下面就对这几种系统的特点做一分析。 2.1 VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统,依据其良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。应用实例包括美国的F-16、FA-18战斗机、B-2 隐形轰炸机、火星探测器、爱国者导弹等。 VxWorks的特点有: 1)高实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。 VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 的任务调度策略以可抢占式调度( Preemptive Priority Scheduling)为基础,辅以时间轮转调度算法( Round-Robin Scheduling)机制。这一调度算法使得VxWorks 能够及时响应高优先级的任务。而同级任务间则可选择时间片轮转法使多个同优先级的任务并发执行。 2)可裁剪性VxWorks的可裁剪性,可以使开发者根据自己应用程序的需要来选择操作系统中部件,用户没用到的功能模块都可以去掉。 VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。 3)友好的开发调试环境 VxWorks的开发环境Tornado是一个友好的开发环境,它可以运行在多种主机上,包括Sun、HP、Dec、MIPS等,主机的操作系统则支持Unix、Windows NT等。系统使用的流行图形界面方便使用者较快地理解和掌握。VxWorks支持应用程序的动态链接和动态下载,使开发

相关文档