搜档网
当前位置:搜档网 › 使用VxWorks的一些总结

使用VxWorks的一些总结

使用VxWorks的一些总结
使用VxWorks的一些总结

使用VxWorks的一些总结

摘要:本文主要介绍VxWorks操作系统的集成环境Tornado的使用,介绍了PPC平台和X86平台上Tornad o1.0.1集成环境的使用。内容包括:Tornado集成环境的安装,X86平台上目标机启动软盘的制作;PPC平台上bootrom的制作;一般的使用流程;编译链接;任务调试模式使用;系统调试模式使用。涉及到的工具主要有CrossWind、Browser、Target Server 、Target Agent、 WindSh、Editor。

1、概述

VxWorks操作系统的集成环境叫Tornado。Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Ta rget Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。它主要由以下几部分组成:

VxWorks高性能的实时操作系统;

x 应用编译工具;

x 交互开发工具;

下面对Tornado集成环境的各组件功能分别介绍:

x Tornado开发环境

Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。

x WindConfig:Tornado系统配置

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

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

x WindSh:Tornado外壳

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

WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内

存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。

x 浏览器

Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。这些信息可周期性地进行更新。

x CrossWind:源码级调试器

源码级调试器CrossWind提供了图形和命令行方式来调试,可进行指定任务或系统级断点设置、单步执行、异常处理。

有些功能如修改内存、寄存器、变量的值通过菜单操作是无法实现的,需要在WindSh中执行原语操作实现。x 驻留主机的目标服务器

目标服务器管理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上的目标机符号表,提供目标模块的加载和卸载。

x Tornado注册器

所有目标服务器注册其提供的服务在注册器中。注册器映射用户定义的目标名到目标服务器网络地址。

x VxWorks

Tornado集成了VxWorks操作系统。

x 目标代理程序

目标代理程序是一个驻留在目标机中的联系Tornado工具和目标机系统的组件。一般来说,目标代理程序往往是不可见的。

3、MPC750/MCPN750上bootrom的制作

MPC750/MCPN750上的 bootrom用于初始化MPC750/MCPN750的硬件,通过网口加载 VxWorks 的内核映象。因为MPC750/MCPN750的bootrom已经制作,如果没有特殊需要,不需重新制作bootrom。

制作MPC750/MCPN750上 bootrom的步骤:

x 在Tornado集成环境下,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | clean删除以前生成的bootrom文件,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | bootr om.hex生成bootrom文件。生成的bootrom文件在相应的BSP目录中(MCP750为c:\tornado\target\con fig\mcp750,MCPN750为c:\tornado\target\config\mcpn750)

x 使用elftobin < bootRom > mcp750.bin 生成mcp750.bin 文件

x 启动TFTP服务器tftpd32.exe,设置下载文件(mcp750.bin)的目录

x 用PPCBug启动目标系统

x 运行并配置超级终端。配置:9600bps波特率、8位数据位、1位停止位、无校验位、无流量控制。

x 在超级终端中,使用niot命令修改客户(目标机)IP地址和服务器(主机)IP地址

x 使用niop命令设置加载的文件名(mcp750.bin)

x 使用pflash 4000:FFF00 ff000100命令写FLASH B。

4、启动软盘制作

目标机启动软盘用于启动目标机,通过网口使用Ftp协议从主机下载VxWorks映象。在X86平台上,一般使用启动软盘来启动目标机。

.1 .启动盘的制作

在实时应用系统的开发调测阶段,往往采用以PC机作为目标机来调测程序。主机PC和目标机PC之间可采取串口或是网口进行联结。由于大多数目标已配有网卡,网络联结成为最简单快速的连接方式。串口联结虽通信速率不高,也有它自己的优点,系统级任务调试(如中断服务程序ISR)需使通信方式工作在Poll ed 模式,网口联结就不支持,因此可以裁剪掉系统中网络部分,以使VxWorks系统更小,满足目标板的内存约束。下面分别对这两种通信方式下目标机VxWorks系统启动盘的制作作一简要介绍(以PC机为目标系统)。

串口通信时目标机VxWorks系统启动盘的制作步骤:

1.修改通用配置文件\\Tornado\target\config\pc486\config.h.

在config.h文件中加入以下宏定义:

#define INCLUDE_WDB

#define INCLUDE_WDB_TTY_TEST

#undef WDB_COMM_TYPE

#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/

#define WDB_TTY_CHANNEL 1 /*通道号*/

#define WDB_TTY_BAUD 9600 /*串口速率,可设置至38400*/

#define WDB_TTY_DEV_NAME "tyCo/1"

#define CONSOLE_TTY 0

#define DEFAULT_BOOT_LINE \

"fd=0,0(0,0)hostname:/fd0/vxWorks h=主机ip e=目标机ip u=主机上的登录用户名"

2. 在Tornado集成环境中执行菜单命令Project | Make PC486 | Common Targets | clean删除以前生成的文件,执行菜单命令Project | Make PC486 | Boot Rom Targets | bootrom_uncmp编译链接生成b ootrom_uncmp ;再选择VxWorks Target,编译生成vxworks。

3.拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下;

4.重命名文件bootrom_uncmp为bootrom;

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

6.在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom;

7.拷贝\\Tornado\target\config\pc486\VxWorks至软盘;

8.将系统制作盘插入目标机软驱,加电启动目标机即载入VxWorkst系统。

网口通信时目标机VxWorks系统启动盘的制作步骤:

1.配置目标机网卡,设置其中断号和输入输出范围(I/O地址);

2.修改通用配置文件\\Tornado\target\config\pc486\config.h.

针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网卡为EEX。在config.h文件中修改相应网卡类型(如网卡为3COM网卡)的定义部分:

#define IO_ADRS_ELT 网卡I/O地址

#define INT_LVL_ELT 网卡中断号

并且修改#define DEFAULT_BOOT_LINE的定义:

#define DEFAULT_BOOT_LINE \

"elt(0,0)主机标识名:C:\\tornado\\target\\config\\pc486\\vxWorks h=主机IP e=目标机IP u=登录

用户名 pw=口令 tn=目标机名"

DEFAULT_BOOT_LINE宏定义,使缺省配置符合自己的调试环境

#define 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=x8

6 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 /*目标名,可以任意设置,不影响启动过程*/

3.主机信息的确定(可无)

主机操作系统Win95安装目录下有一文件hosts.sam,向其中加入:

主机IP 主机名

目标机IP 目标机名

4.在Tornado集成环境中点取Project菜单,选取Make PC486,选择Common Target,先进行clean操作;再选择Boot Rom Target,进行bootrom_uncmp操作;再选择VxWorks Target,进行vxworks操作。

5.拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下;

6.重命名文件bootrom_uncmp为bootrom;

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

8.在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom ;

9.启动Tornado组件FTP Server,在WFTPD窗口中选择菜单Security中的User/right...,在其弹出窗口中选择New User...,根据提示信息输入登录用户名和口令,并且要指定下载文件vxWorks所在根目录;还必选取主菜单Logging中Log options,使Enable Logging、Gets 、Logins 、Commands 、Warnings能。

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

2)主机Tornado环境配置

串口联结时主机Tornado开发环境的目标服务器配置操作如下:

1.在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...;

2.在Configure Target Servers窗口中先给目标服务器命名;

3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available Back"窗口中选择w dbserial,再在"Serial Port"窗口中选择主机与目标机连接所占用的串口号(COM1,COM2),再在"Speed(bp s)"窗口中选择主机与目标机间串口速率。

4. 在配置目标服务器窗口中的"Change Property"窗口中选择Core File and Symbols,

选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks.st,并选取为All Symbols.

5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。

网口联结时主机Tornado开发环境的目标服务器配置操作如下:

1.在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...;

2.在Configure Target Servers窗口中先给目标服务器命名;

3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available Back"窗口中选择w dbrpc,在"Target IP/Address"窗口中输入目标机IP。

4. 在配置目标服务器窗口中的"Change Property"窗口中选择Core File and Symbols,

选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks,并选取为All Symbols.

5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。

以上的串口和网口联结配置完成后,可按以下步骤和目标机建立连接:

1.点击Launch按钮,连接主机和目标机,全部出现successed后即可进入应用程序调试。

2.点击图形按钮中下拉框,选择和主机相连的目标机。

3.选择Debugger菜单项中Download...,下载应用程序到目标板。

4. 选择Debugger菜单项中Run...,调测应用程序中某一任务或功能函数。

VxWorks系统目标机启动盘的制作步骤:

?配置目标机网卡,设置其中断号和输入输出范围(I/O地址);

?修改配置文件C:\Tornado\target\config\pc486\config.h。

不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网卡为EEX。根据目标机的网卡类型、中断号、I/O地址修改config.h文件中的相应宏定义。以下以NE2000网卡(中断号为10,I/O地址为0X300)为例说明配置过程。

#define IO_ADRS_ENE 0x300 /*网卡I/O地址*/

#define INT_LVL_ENE 0x0a /*网卡中断号*/

x 因为用软盘启动目标机无法保存修改的信息,修改config.h文件中的DEFAULT_BOOT_LINE宏定义,使缺省配置符合自己的调试环境

#define 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=x8 6 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 /*目标名,可以任意设置,不影响启动过程*/

?在Tornado集成环境中执行菜单命令Project | Make PC486 | Common Targets | clean删除以前生成的文件,执行菜单命令Project | Make PC486 | Boot Rom Targets | bootrom_uncmp 编译链接生成bootrom_uncmp。

x 拷贝c:\Tornado\target\config\pc486\bootrom_uncmp至c:\Tornado\host\bin下;

x 重命名文件bootrom_uncmp为bootrom;

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

x 在目录c:\Tornado\host\bin下执行命令 mkboot a: bootrom ;

x 启动盘制作完成

5、使用步骤

使用Tornado集成环境一般需要经过以下步骤:

?运行TCP/IP端口管理器Portmapper(portmap.exe)

?运行注册器Tornado Registry(wtxregd.exe)。如果使用的是试用版,注意是否注册成功,是否修改了日期

?运行并配置Ftp Server(wtfpd32.exe)。点击菜单命令Security | Users | rights弹出配置窗口,点击New User,在New User弹出窗口加入需要加入的用户名(注意:要与目标机bootrom或启动软盘设置一致),在改变密码弹出窗口设置该用户的密码(注意:要与目标机bootrom或启动软盘设置一致),在Home Directory中设置相应的目录,MCP750为c:\tornado\target\config\mcp750,MCPN750为c:\torna do\target \config\mcpn750,X86为c:\tornado\target\config\pc486 ,配置结束。

?目标板上电或复位

?在控制台(MCP750/MCPN750为超级终端,X86为目标机显示器)上可以看到启动信息。如果需要修改,在等待用户配置时,按c键,进行相应修改。(注意:配置信息要与主机配置、Ftp服务器配置一致),修改结束后,按@键重新启动目标机。

?运行Tornado(tornado.exe)

?执行菜单命令Tools | Target Server | Configure,弹出目标服务器设置对话框,点击New产生一个新的配置。设置Description域(可以任意设置);设置Target Server域(可以任意设置);在Change P roperty域选取Back End项(该项设置主机与目标机如何连接,缺省为网口连接,如果使用串口连接,需要修改configall.h文件,重新编译链接VxWorks映象),如果使用网口调试,选择wdbrpc,在目标IP 名或地址域中给出目标机的IP名或地址(建议给出IP名,因为这样会快得多),如果给出的是IP名,需要在HOSTS文件中给出IP名与IP地址的对应关系,如果用串口调试,选择wdbserial,选择相应的串口

和波特率(注意:此处的串口是指主机的串口不是目标机的串口);在Change Property域选取Core Fil e and Symbols项,选中File项输入相应的文件(MCP750c:\tornado\target\config\mcp750\vxWorks,M CPN750为c:\tornado\target \config\mcpn750\vxWorks,在X86平台上为c:\tornado\target\config\ pc486\vxWorks),点击Launch,运行目标服务器。

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

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

?选取相应的目标服务器。

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

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

?在Editor窗口设置断点。

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

?进行源码级调试

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

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

6、编译链接

VxWorks的开发调试环境可以把VxWorks内核和应用分开,分别加载。 VxWorks内核在目标机启动过程中通过ftp协议加载到目标机中运行,应用模块在调试中动态下载,目标代理把下载的应用模块动态链接到系统中,应用模块的调试是通过在用户执行运行命令时提供入口函数实现的。这样做的好处是需要调试哪个模块就下载那个模块调试,不需下载其它模块,前期调试一般使用这种编译方式。

VxWorks的开发调试环境也提供把应用模块与系统内核链接在一起,通过ftp协议加载执行。这需要经过两个步骤:把应用模块的入口代码加到usrConfig.c文件中的usrRoot函数的尾部;把应用模块编译链接到VxWorks内核中,这种编译链接方式一般用于后期调试。

下面分类对编译链接进行介绍

6.1 单个应用模块的编译

单个应用模块的编译可以通过使用菜单命令Project | Make Current Source File进行编译,要编译的源文件必须已经用Editor打开并且为当前窗口。如果要编译的源文件所在目录没有makefile文件,系统会提示创建一个新的makefile文件,确定。在弹出的创建缺省makefile窗口的CPU域选择相应的项(MCP7 50/MCPN750选择PPC604,X86选择I80486),在ADDED_FLAGS域输入-g,确定。系统对源文件进行编译,生成目标文件(.o)。生成的目标文件在Debugger环境中动态加载,与内核动态链接到一起。

6.2 系统内核vxWorks的编译链接

系统内核vxWorks是调试中使用最多的内核映象。它被通过Ftp协议从主机加载到目标机中。它的作用通常是进行软硬件初始化,等待加载应用模块,进行程序调试。

在Project菜单下,选择相应硬件平台的生成vxWorks的命令,进行编译链接。在编译链接之前先使用cl ean命令删除以前生成的文件。

6.3 应用模块与系统内核一起编译链接

VxWorks的开发调试环境也提供把应用模块与系统内核链接在一起,通过Ftp协议加载,vxWorks内核自动

执行应用模块。这需要经过两个步骤:把应用模块的入口代码加到usrConfig.c文件中的usrRoot函数的尾部;在makefile中把待生成的应用模块的目标文件名加到宏定义MACH_EXTRA中,再把相应的编译规则加到makefile中。编译链接生成vxWorks映象。

6.4 Project菜单下其它编译链接命令介绍

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

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

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

x vxWorks.res_rom :可以写到ROM的、带有符号表和Shell的、只有数据段拷贝到内存的、没有压缩的vxWorks。

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

x bootrom:压缩的 bootrom

x bootrom_uncmp:没有压缩的bootrom

7、调试时的常用方法

下面是一些调试手段在调试器中的相应命令(操作)

调试手段相应操作

设置断点菜单命令Debug|Toggle BreakPoint

删除断点菜单命令Debug|Toggle BreakPoint

运行菜单命令Debug|Run

单步执行(进入函数)菜单命令Debug|Step

单步执行(不进入函数)菜单命令Debug|Next

继续执行(停下后的程序)菜单命令Debug|Continue

执行完当前的函数,停在调用它的函数的下一条语句菜单命令Debug|Finish

查看变量的值菜单命令Debug|Inspect

查看当前函数的所有局部变量菜单命令Debug|Locals

查看内存菜单命令Debug|Memory

查看寄存器菜单命令Debug|Registers

修改内存 Shell命令m

修改寄存器 Shell命令mRegs

修改变量在Shell中直接给该变量赋值(局部变量无法用此方法修改)

卸载一个加载的模块 Shell命令unld

删除任务 Shell命令td

复位目标机 Shell命令reboot用该命令的好处:目标服务器自动与目标代理重新链接,Shell自动重启查看任务在Browser对象信息窗口输入待查看的任务名或ID

查看信号量在Browser对象信息窗口输入待查看的信号量名或ID

查看消息队列在Browser对象信息窗口输入待查看的消息队列命或ID

内存分区在Browser对象信息窗口输入待查看的内存分区ID

看门狗在Browser对象信息窗口输入待查看的看门狗ID

类(class)在Browser对象信息窗口输入待查看的类的ID

查看内存使用(模块使用内存的情况) Browser的内存使用窗口

查看任务列表(系统里的所有任务) Browser的任务列表窗口

查看CPU占用率 Browser的Spy窗口

查看堆栈使用情况 Browser的堆栈检查窗口

注:

x Shell可以通过菜单命令Debug | Shell启动

x Shell的原语可以通过在Shell中输入help列出

x Browser可以通过菜单命令Debug | Browser启动

x Debugger命令窗口的命令可以通过在命令窗口输入help列出

8、任务调试模式下的多任务调试

在任务调试模式下,在一个集成环境中,在一个任务中调试,在另一个任务中设置断点,设置的断点不起作用。这是因为一个调试器只能处理一个TCB(任务控制块),每个任务都有一个TCB,因此一个调试器只能调试一个任务,要调试几个任务就要启动几个调试器。一个集成环境只能启动一个调试器,所以要调试几个任务就要启动几个集成环境。另外,需要在被调试的任务的待调试的第一条语句前加入taskSuspend(0)语句,挂起该任务,否则任务就可能会在调试前被执行。

下面是多任务调试的测试用例的源代码

/* VxWorks includes */

#include "vxWorks.h"

#include "taskLib.h"

#include "stdio.h"

#include "msgQLib.h"

int g_lTaskATid;

int g_lTaskBTid;

MSG_Q_ID g_MsgQ1id;

MSG_Q_ID g_MsgQ2id;

void MultiTaskTestTaskA(void)

{

char cMsgToTaskB[100];

char cMsgFromTaskB[100];

sprintf(cMsgToTaskB,"To TaskB \n");

printf(" Hello from MultiTaskTestTaskA \n");

/*start point of debugging for MultiTaskTestTaskA*/

taskSuspend(0);

for(;;)

{

printf(" Hello from MultiTaskTestTaskA \n");

/*Send message to MultiTaskTestTaskB*/

msgQSend(g_MsgQ1id,cMsgToTaskB,sizeof(cMsgToTaskB),WAIT_FOREVE

R, MSG_PRI_NORMAL);

/*Receive message from MultiTaskTestTaskB*/

msgQReceive(g_MsgQ2id,cMsgFromTaskB,100,WAIT_FOREVER);

printf("%s",cMsgFromTaskB);

}

}

void MultiTaskTestTaskB(void)

{

char cMsgToTaskA[100];

char cMsgFromTaskA[100];

sprintf(cMsgToTaskA,"To TaskA \n");

printf(" Hello from MultiTaskTestTaskB \n");

/*start point of debugging for MultiTaskTestTaskA*/

taskSuspend(0);

for(;;)

{

printf(" Hello from MultiTaskTestTaskB \n");

/*Send message to MultiTaskTestTaskA*/

msgQSend(g_MsgQ2id,cMsgToTaskA,sizeof(cMsgToTaskA),WAIT_FOREVER, MS G_PRI_NORMAL);

/*Receive message from MultiTaskTestTaskA*/

msgQReceive(g_MsgQ1id,cMsgFromTaskA,100,WAIT_FOREVER);

printf("%s",cMsgFromTaskA);

}

}

/*This function spawns MultiTaskTestTaskA and MultiTaskTestTaskB , creates g_MsgQ1id and g_M sgQ2id , is entry for debugging.*/

void MultiTaskTestInit(void)

{

printf(" Hello from MultiTaskTestInit \n");

g_MsgQ1id=msgQCreate(20,100,MSG_Q_FIFO);

if(g_MsgQ1id==NULL)

{

printf(" ERROR: create g_MsgQ1 error \n");

}

g_MsgQ2id=msgQCreate(20,100,MSG_Q_FIFO);

if(g_MsgQ1id==NULL)

{

printf(" ERROR: create g_MsgQ2 error \n");

}

printf(" Spawning a new task called MultiTaskTestTaskA \n\n");

g_lTaskATid = taskSpawn("MultiTaskTestTaskA", 100,0,1000

0, (FUNCPTR)MultiTaskTestTaskA, 0,0,0,0,0,0,0,0,0,0);

if(g_lTaskATid == ERROR)

{

printf(" ERROR: task did not spawn \n");

exit(1);

}

printf(" Spawning a new task called MultiTaskTestTaskB \n\n");

g_lTaskBTid = taskSpawn("MultiTaskTestTaskB", 100,0,1000

0, (FUNCPTR)MultiTaskTestTaskB, 0,0,0,0,0,0,0,0,0,

0);

if(g_lTaskBTid == ERROR)

{

printf(" ERROR: task did not spawn \n");

exit(1);

}

exit(0);

}

多任务调试步骤:

x 用-g选项编译源代码产生目标文件

x 下载产生的目标文件

x 在MultiTaskTestInit函数的开始设置断点

x 把MultiTaskTestInit设置为调试任务的人口函数

x 单步执行产生MultiTaskTestTaskA任务的语句后可以在串口(超级终端)上看到字符串Hello from Mu ltiTaskTestTaskA,用Browser查看任务,可以看到任务MultiTaskTestTaskA出于挂起态(suspended),

表明程序执行了taskSuspend(0)语句。

x 运行另一个Tornado集成环境

x Attach任务MultiTaskTestTaskA,

x 在语句msgQReceive(g_MsgQ2id,cMsgFromTaskB,100,WAIT_FOREVER)的下一条语句处设置断点

x 运行任务MultiTaskTestTaskA。可以看到没有执行到断点处,用Browser查看任务状态,MultiTaskTes tTaskA出于阻塞态(pended),因为它在等待消息。

x 单步执行MultiTaskTestInit到产生MultiTaskTestTaskB任务的下一条语句,可以看到MultiTaskTest TaskB任务处于挂起态

x 再运行另一个Tornado集成环境

x Attach任务MultiTaskTestTaskB,

x 在语句msgQReceive(g_MsgQ1id,cMsgFromTaskA,100,WAIT_FOREVER)下一条语句处设置断点

x 运行任务MultiTaskTestTaskB。可以看到执行到断点处停下。这是因为MultiTaskTestTaskA任务已经发送一条消息到MultiTaskTestTaskB的接收队列中。

x 此时,可以看到MultiTaskTestTaskA任务也运行到断点处,因为为MultiTaskTestTaskB任务已经发送一条消息到MultiTaskTestTaskA的接收队列中。

9、系统调试模式下程序的调试

Tornado集成环境提供两种调试模式:任务调试模式和系统调试模式。在任务调试模式下,在一个集成环境下一个时间内只能调试一个任务。调试只影响当前被调试的任务,其它任务正常运行。在系统调试模式下,可以同时调试多个任务、中断服务程序(ISR),调试影响整个系统。

Tornado1.0集成环境下,在系统模式下进行程序调试,主机与目标机之间必须使用串口通信。Tornado2.0集成环境提供了通过网口进行系统模式调试的功能。

系统缺省使用网口通信,如果需要使用串口通信,需要修改文件C: \ Tornado \ target \ config \ al l \ configAll.h的一些宏定义,修改为:

#define WDB_COMM_TYPE WDB_COMM_SERIAL /*使用串口通信*/

#define WDB_TTY_CHANNEL 0 /*使用第一个串口*/

#define WDB_TTY_BAUD 38400 /*波特率:38400bps*/

重新编译链接vxWorks。

在启动目标服务器时,要选择串口通信,并进行相应配置。

9.1 系统调试模式下多任务的调试:

调试使用的源代码与任务调试模式中使用的代码相同。但是,需要去掉为了能够在任务调试模式下进行多任务调试的MultiTaskTestTaskA和MultiTaskTestTaskB中的语句taskSuspend(0);。

多任务调试步骤:

x 用-g选项编译源代码产生目标文件。

x 下载产生的目标文件。

x 在MultiTaskTestInit函数的开始设置断点。

x 在Debugger命令窗口输入命令attach system进入系统调试模式。

x 在Shell窗口输入命令sp MultiTaskTestInit产生一个以MultiTaskTestInit为入口函数的任务,因为整个系统都停下了,新产生的任务还没有执行,这可以通过在Debugger命令窗口输入命令info threads 显示当前系统中的任务列表看出来。

x 执行菜单命令Debug | Continue继续运行程序。

x 系统在设置的断点处停下。

x 在函数MultiTaskTestTaskA中的语句msgQReceive(g_MsgQ2id,cMsgFromTaskB, 100,WAIT_FOREVER)的下一条语句处设置断点。

x 在函数MultiTaskTestTaskB中的语句msgQReceive(g_MsgQ1id,cMsgFromTaskA, 100,WAIT_FOREVER)的下一条语句处设置断点。

x 执行菜单命令Debug | Continue继续运行程序。

x 程序在任务MultiTaskTestTaskB中的断点处停下(为什么不是在任务MultiTaskTestTaskA中停下?请考虑)。

x 执行菜单命令Debug | Continue继续运行程序。

x 程序在任务MultiTaskTestTaskA中的断点处停下。

x 执行菜单命令Debug | Continue继续运行程序。

x 程序又一次在任务MultiTaskTestTaskA中的断点处停下(为什么停两次?请考虑)。

x 执行菜单命令Debug | Continue继续运行程序。

x 程序在任务MultiTaskTestTaskB中的断点处停下。

9.2 中断服务程序的调试

中断服务程序只能在系统调试模式下调试,不能在任务调试模式下调试。因为中断服务程序是作为系统的一部分运行,不是以任务方式运行,因此不需要为它产生任务。

中断服务程序调试步骤:

x 用-g选项编译源代码产生目标文件。

x 下载产生的目标文件。

x 在MultiTaskTestInit函数的开始设置断点。

x 在Debugger命令窗口输入命令attach system进入系统调试模式。

x 执行菜单命令Debug | Continue继续运行程序。

x 如果产生相应的中断,程序就会在中断服务程序的断点处停下。进行需要的调试。

10、目前存在的问题

目前,在Tornado1.0集成环境中,在PPC平台上,在系统调试模式下,无法进行多任务调试。即:无法在产生的任务中设置断点进行跟踪调试。但是,可以调试中断服务程序。在X86平台上,在系统调试模式下,可以进行多任务和中断服务程序调试。估计可能是PPC平台上的BSP有问题。据Wind River公司技术支持人员说,Tornado2.0集成环境可能会解决这个问题,因为新的BSP已经加到Tornado2.0集成环境中。

在Tornado1.0集成环境中,设置断点,有时会不显示标志。但是,断点确实是设置了,据Wind River公司技术支持人员说,Tornado2.0集成环境已经解决了这个问题。

结束语:

总的看来VxWorks的调试工具使用不是很方便(与pSOS操作系统的调试工具SingleStep等相比),但是它提供了一组调试工具CrossWind、WindSh、Browser,实现了完备的调试功能,这主要体现在以下几个方面:

x 源码级调试器不能实现全部调试功能,如:内存、寄存器、变量的修改,应用模块的卸载等。

x Shell可以实现全部的调试功能。但是,它不是源码级调试器。

x 分为两种调试模式:任务调试模式和系统调试模式。在任务调试模式中,要调试多任务需要打开多个To rnado集成环境,并且不能调试中断服务程序。

x 软件复位需要重新加载系统内核和应用模块。

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的虚拟机;

vxWorks开发环境构建步骤及开发资源

vxWorks开发环境构建步骤及开发资源 技创科技(Technique Innovator Inc.) https://www.sodocs.net/doc/9419041632.html, 一、Tornado集成开发环境构成 Tornado是集成开发环境的名称,主要由帮助及参考文档、操作系统vxWorks、开发工具(编译器、调试器、编辑器、target server等,据统计,挂接在Tornado下的可选工具和第三方有数百个)等三部分构成,分别对应三个目录: i.docs/ 所有文档都集中在该目录中, books.html是根索引,入门级开发请务必查看 以下文档: ●如果要熟悉使用界面及Tornado使用、创建工程,请参考:Tornado用户手册 及Tornado集成开发环境的HELP->content调出来的联机帮助文档; ●vxWorks的编译是使用标准GNU Makefile来编译连接的,要了解Makefile语 法请参考”GNU Make”;具体的Make rules存放在target/h/make/目录下。 ●如何调试?请参考“Debugging with GDB” ●vxWorks构成、特点及kernel,编程等:请参考:VxWorks Programmer's Guide, 系统调用、库函数接口标准等,请参考:VxWorks Reference Manual ●有关BSP(board support package)的构成、初始化、底层驱动等,请参考“BSP Reference” ●网络应用编程指南(socket编程): “VxWorks Network Programmer's Guide” ii.host/ 该部分存放主机端(开发机)的工具,如Tornado.exe,make.exe,编译器、调试器及TCL命令解释器等等,开发中要用到的工具都存放在目录 host\x86-win32\bin 下,部分命令是.exe文件,部分是.bat的,其中有torvars.bat文 件,是设置Tornado集成开发环境的环境变量用的,在使用其他工具前,要运行它 设置正确的环境变量及可执行文件搜索路径。 iii.target/ vxWorks操作系统、源码、BSP、设备驱动、头文件、配置文件等config/ BSP的存放地方,底层开发者绝大部分时间在该目录下度过,该目录下除了all/和comps/外,其他每个目录对应一种硬件板的BSP,开发者在 做BSP开发时,原则上除了对应BSP目录能修改外,target/目录下的其他 所有目录都不应该作出改动,否则会影响到其他BSP,常用BSP有: pid7t/ →ARM公司推出的pid7 ARM7TDMI评估板的BSP integratorX/ →ARM公司推出的integratorXXX评估板的BSP tk4510a/ →我们要使用的S3C4510B板的BSP SNDS100/ →三星公司推出的SNDS100(KS3C50100/S3C4510B)板的 BSP h/ 头文件存放地点,包括vxWorks的及所有其他组件的 arch/arm/ ARM体系结构相关头文件 make/ 编译连接时要用到的规则都存放在这里 vxWorks.h wind Kernel(vxWorks的核心”Wind Kernel”的API及常量说明) lib/ vxWorks是一个商用操作系统,其不开放源码部分的.o文件及.a(库文件)文件存放在这里(当然,除了config/目录外,所有其他目录下的*.c源码在编

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 不够

EPON常用命令讲解

EPON常用命令讲解 ?数据业务基本排查 ?语音业务基本排查 ?930软件脚本简介 ?其他常用命令 ?典型案例分析 数据业务基本排查 基本思路: 在PON系统内GSWC、EC2、ONU各业务环节上应保证: 配置正确 配置生效 MAC地址正确转发 ?FTTH型ONU ?FTTB型ONU 配置核查 Onu switch目录: show vlan all显示所有端口vlan; show vlan 查看交换芯片单个vlan及其所属端口的信息,如果此端口配置为出口剥离vlan,相应端口显示为UN;反之显示为VF show vlan default 显示所有端口的untag属性的vlanid; Onu Debug下相关命令: ddd show port [|all] vlan config显示系统QinQ不使能下的Fe端口vlan的配置信息show port [|all] vlan service显示系统QinQ使能下的Fe端口vlan的配置信息show port [|all] vlan translation table显示端口的软件vlan转换表 EC2 Pon目录: show qinq_config <1-2> <1-24> 查询qinq模式下ONU端口业务信息 端口检查 show port status查看交换芯片端口的状态,可以查看用户端口是否接了终端,工作模式是否正确等 查看地址转发表

ONU swtich目录 show arl查看mac地址转发表,会显示学习到的端口、vlanid和mac地址,如果用户的vlan id同时上下行数据中学到,其中26端口( CPU端口)表示下行数据正常,用户端口1-24表示上行数据正常; OLT fdb目录 show fdb slot <1-8,11-18>查看上行数据时,查看业务卡(EC2)fdb表 show fdb slot 29查看下行数据时,查看上联口fdb表 主控盘学的地址的VID应该是最外层VLAN的VID。 如果,上下行fdb表都正确,但是拨号拨不上去,可以在OL T的上连口抓包,查看进出的包内容。如果有出去的包而无回来的包,则可以判断出是上游设备出问题。 如果fdb表学习不正确,则VLAN配置有问题,可以根据fdb表的情况,先判断问题出现在哪一个设备上,再查看VLAN配置有无问题。 其他处理方式: 如时延大、丢包、组播业务等问题,可分别在EPON系统与其他系统的接口处利用抓包工具查看定位,由于上联口只能封装单层vlan,Qinq和单层vlan方式会略有差别。 FTTN型ONU 与其他ONU差异 FTTN型ONU相对其他类型ONU比较独立,对于普通的数据、语音业务,OLT相当于“透传”的通道。 配置核查: FSWB Profile目录下 创建/修改/查看ADSL2+端口模板参数: add xaplus profile ; set dsl-profile ; show dsl-profile ; 主要查看4个方面: 1.编码类型(lineCoding) 一般编码类型在开通的下行速率低于8Mb/s时采用G .dmt,大于8M时采用adsl2plusauto。 2.线路类型(channelMode) 线路类型采用interleaved更为稳定 3.训练速率(dnFastMaxTxRate,dnIntlMaxTxRate,upFastMaxTxRate,upIntlMaxTxRate) ADSL 一般最大上行可达速率为800Kb/s,下行可达速率为8Mb/s ADSL2+一般最大上行可达速率为1Mb/s,下行可达速率为28Mb/s 配置时上行速率不要超过1Mb/s,推荐640Kb/s

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

几种主流嵌入式操作系统分析 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 结果信号集为指定信号集的补集和当前信号集二者的交集;通过这种方式,可从当前信号集删除指定的元素;

MPC8377硬件环境下vxworks仿真的建立过程

MPC8377硬件环境下vxworks仿真的建立过程 2012-8-7 U-BOOT常用命令: 重启:reset 查看环境变量:printenv 修改环境变量:例如修改PC机IP,setenv serverip “……” 保存环境变量:saveenv 下载bootrom:run laodvx 如果需要用到其他命令,在命令行输入“?”查看。 1.首先,需要在FLASH中烧写好U-BOOT,把串口和网线连接好(如果多串口和网口的话,请检查并接在正确的位置),打开串口调试工具并设置在数据读取状态,然后上电,在倒计时读秒完成前在命令输入行输入任何信息进入U-BOOT层。 命令行 U-BOOT读秒区 2.在命令行输入printenv命令会显示U-BOOT的信息,如果ip不是我们想要的,可以通过setenv serverip “……”来修改,如下图中就把ip从192.168.1.24

改为192.168.1.43,修改完成后需要saveenv,然后reset,整个修改完成。 Printenv命令后的ip信息 Setenv serverip ”192.168.1.43” 后的结果 3.下载bootrom。先找到vxworks编译好的bootrom.bin文件,例如:本PC 上的路径C:\WindRiver-GPPVE-3.6-PPC-Eval\vxworks-6.6\target\config\mds837x,如下图。 需要的bootrom文件 把bootrom复制到tftp软件所在的位置,如下图。

放置好的bootrom文件 然后启动tftp软件,并在命令行输入:run loadvx,成功后如下图,至此bootrom 下载完毕。 下载成功后tftp显示信息 4.Vxworks下载。首先启动Vxworks6.6自带的ftp server,并配置好登陆用户和密码以及相关设置,主要有两部分设置,如下图。

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

几种嵌入式实时操作系统地分析与比较 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期Ξ

相关主题