Tornado及VxWorks操作系统简介

Tornado及VxWorks操作系统简介
Tornado及VxWorks操作系统简介

Tornado 及VxWorks介绍

目录

TORNADO 及VXWORKS介绍 (1)

第一章 TORNADOII嵌入式开发系统概述 (1)

1.1T ORNADO开发环境及V X W ORKS嵌入式实时操作系统 (1)

1.1.1 VxWorks 嵌入式实时操作系统 (1)

1.2.2 TornadoII嵌入式开发系统 (1)

1.2T ORNADO II嵌入式开发系统的主要应用领域 (2)

第二章嵌入式实时操作系统VXWORKS (3)

2.1V X W ORKS实时操作系统 (3)

2.2V X W ORKS基本结构 (3)

2.2.1 VxWorks操作系统的基本结构: (3)

2.3V X W ORKS 的主要特点 (4)

2.3.1高性能的微内核设计 (4)

2.3.2良好的可移植性 (4)

2.3.3 良好的可裁剪性 (5)

2.3.4 网络系统 (5)

2.3.5 兼容POSIX1003.1b标准 (5)

2.3.6 灵活而且快速的I/O文件特性 (6)

2.4V X W ORKS可用的主机/目标机和主要用户 (6)

2.4.1 支持的主机 (6)

2.4.2 支持的目标机 (6)

第三章 TORNADOII嵌入式开发系统软件工具包 (8)

3.1T ORNADO II特性简介 (8)

3.2T ORNADO II核心工具 (8)

3.2.1VXSIM集成仿真器 (8)

3.2.2WindView (10)

3.2.3 强有力的命令行执行方式WindShell (10)

3.2.4 系统对象检查工具Brower (10)

3.2.5 集成调试器CrossWind (11)

3.2.6 C/C++交叉编译工具 (11)

3.2.7工程管理和配置工具(Project facility/Configuration) (11)

3.2.8 源代码分析仪(WindNavigator) (12)

3.2.9动态上载/卸载器(Incremental Loader) (12)

3.3W IND P OWER工具 (12)

3.3.1软件“示波器”(ScopePak) (12)

3.3.2性能检测包PerformancePak (13)

3.3.3代码测试器CodeTest/Coverage (14)

3.3.4CodeTest/Memory (15)

3.3.5WFC基础类库(Wind Foundationg Classes) (16)

3.3.5 Look! For Tornado (16)

第四章 TORNADOII嵌入式开发系统可选组件 (17)

4.1概述 (17)

4.1.1 板级支持包开发工具BSP Developer’s Kit (17)

4.1.2 虚拟内存接口VxVMI (17)

4.1.3 支持紧密耦合共享内存多处理器结构的VxMP (17)

4.1.4 支持紧密耦合共享内存多处理器结构的VxDCOM (17)

4.1.5 支持松散耦合分布式多处理器结构的VxFUSION (17)

4.1.6 闪存文件系统TrueFFS for Tornado (18)

4.2板级支持包BSP D EVELOPER’S K IT (19)

4.2.1BSP Developer’s Kit Base Option (19)

4.2.2 板级支持包开发工具高级包BSP Developer’s Kit Value Option (20)

4.3虚拟内存接口V X VMI (20)

4.3.1 产品背景及概述 (20)

4.3.2 产品特性 (21)

4.4支持紧耦合共享内存多处理器结构的V X MP (22)

4.4.1VxMP产品概述 (22)

4.4.2 VxMP产品特性 (22)

4.5支持紧耦合分布式多处理器结构的V X DCOM (23)

4.5.1 VxDCOM产品概述 (23)

4.5.1VxDCOM产品特性 (23)

4.6支持松耦合分布式多处理器结构的V X FUSION (24)

4.6.1 VxFUSION产品概述 (24)

4.6.2 VxFUSION特性及应用背景 (24)

4.7闪存文件系统T RUE FFS FOR T ORNADO (25)

4.7.1 TrueFFS产品概述 (25)

4.7.2TrueFFS产品特性 (25)

第一章 TornadoII嵌入式开发系统概述

1.1Tornado开发环境及VxWorks嵌入式实时操作系统

1.1.1 VxWorks 嵌入式实时操作系统

VxWorks是为实时嵌入式系统设计开发的操作系统软件,为程序员提供了实时任务调度、中断管理、实时的系统资源以及实时的任务间通信。在嵌入式领域VxWorks

占有大部分的市场份额。VxWorks可以在各种CPU硬件平台上提供统一的接口和一致的运行特征,为程序员提供了一致的开发、运行环境,避免了重复劳动。

VxWorks是一种功能强大而且比较复杂的操作系统,仅仅依靠人工编程调试,很难发挥它的功能并设计出可靠、高效的嵌入式系统,必须有与之相适应的开发工具。Tornado就是为开发基于VxWorks应用系统而提供的集成开发环境,Tornado中包含的工具管理软件,可以将用户自己的代码与VxWorks的核心系统有效的组合起来,从而轻松而且可靠地完成嵌入式应用开发。

1.2.2 TornadoII嵌入式开发系统

TornadoII是Windriver公司开发的嵌入式软件开发环境。TornadoII开发环境在延续了TornadoI开发环境中优秀技术的基础上,增加并集成了很多易于使用,性能优异的工具。

TornadoII开发环境提供编写嵌入式实时应用程序的完整的软件开发平台。TornadoII给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环境。它包含三个高度集成的部分:

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

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

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

1995年,TornadoII开发环境一经推出就获得了权威杂志EDN颁发的年度产品创新奖。

TornadoII嵌入式集成开发系统结构图

1.2 TornadoII嵌入式开发系统的主要应用领域

TornadoII嵌入式开发系统的主要应用领域主要包括数据网络、远程通信、医疗、消费电子、交通运输、计算机外围设备、数字图象、工业、航空、多媒体。

第二章嵌入式实时操作系统VxWorks

2.1VxWorks实时操作系统

用户在开发具有日益复杂的32位嵌入式处理器的产品时,需要一个用来连接产品应用程序和底层硬件的操作系统。这种操作系统应该具有可靠性、高实效性、可裁剪性、可协同工作等重要特点。

VxWorks操作系统是美国WindRiver公司于1983年设计开发出的一种嵌入式实时操作系统(RTOS),是TornadoII嵌入式开发环境的关键组成部分。VxWorks十分灵活,具有多达1800个功能的应用程序接口(API);而且适用范围广,可以用于从最简单到最复杂的产品设计;它可靠性高,而且具有高度的适用性,可以用于所有的流行的32位CPU平台。

2.2VxWorks基本结构

2.2.1 VxWorks操作系统的基本结构:

图2-1 VxWorks基本体系结构

2.3VxWorks 的主要特点

VxWorks实时操作系统包括微内核WIND、高级网络支持、强有力的文件系统和

I/O管理、C++和其他标准等核心功能。这些核心功能还可以与WindRiver公司的其他产品以及320个WindRiver公司合作伙伴的产品联合使用。

2.3.1高性能的微内核设计

微内核的主要特点(Wind Microkenel)有:

◆高效的任务管理

●无限数目多任务,具有256个优先级。

●具有优先级抢占和时间片轮转调度。

●快速的、准确性的上下文切换

◆快速灵活的任务间通讯

●三种信号灯:二进制、计数、有优先级继承特性的互斥信号灯。

●POSIX管道、记数信号量、消息队列、信号和调度。

◆高度可裁剪性

◆动态连接和模块加载

◆高效的中断和异常事件处理

◆优化浮点支持

◆动态内存管理

◆时钟和记时工具

2.3.2良好的可移植性

嵌入式应用通常需要将操作系统和应用程序方便地移植到目标硬件中,如果能够将依赖于硬件的低级代码和高级的应用程序和操作系统区分开来,移植工作将变得非常简单。VxWorks将依赖于硬件的低级代码设计成板级支持包(BSP)。任何一个要运行VxWorks的硬件板都需要相应的板级支持包,有了板级支持包的支持,移植高级代码时,只要改变相应的依赖于硬件的板级支持包即可,无须修改操作系统和应用程序。

2.3.3 良好的可裁剪性

VxWorks的可裁剪性,可以使开发者根据自己的应用程序需要,而不是根据操作系统的需要来分配系统资源。从需要几个KB字节内存的深层嵌入式设计到需要更多的操作系统的功能的复杂的高端系统,开发者可以从300多个独立的模块中选择。而且,这些模块本身也是可裁剪的,所以VxWorks可以为用户提供粒度极小的运行环境配置。

所有这些配置选项可以通过TornadoII的项目工具图形接口轻易地选择,或者使用TornadoII的自动裁剪特性,自动地分析应用程序代码并选择相应的选项。

2.3.4 网络系统

VxWorks是第一个支持工业标准TCP/IP的实时操作系统。包括:

●IP,IGMP,CIDR,TCP,UDP,ARP,RARP,RIPV1/V2

●Standard Berkeley Sockets

●Z-bufs,NFS,RPC

●PPP,BOOTP,DNS,DHCP,TFTP,FTP

●RLOGIN,TELNET,RSH

WindRiver还支持可选的WindNet产品:SNMP,OSPF,STREAMS等。WindRiver 还通过提供工业级最广泛的网络开发环境来加强这些核心技术,这主要是通过WindLink for Tornado伙伴计划来实现的。高级的网络解决方案包括:

●ATM,SMDS,FRAME RELAY,ISDN,SS7,X.25,V5等广域网协议

●IPX/SPX,APPLETALK,SNA局域网协议

●分布式网络管理RMON,CMIP/GDMO,基于Web 的解决方案

●CORBA分布式计算机环境

2.3.5 兼容POSIX1003.1b标准

VxWorks支持POSIX 1003.1b的规定和1003.1中有关基本系统调用的规定,其中包括进程初始化、文件和目录、I/O初始化、语言服务、目录管理。而且VxWorks还支

持POSIX1003.1b的实时扩展,包括异步I/O、记数型信号灯、消息队列、信号、内存管理和调度控制等。

2.3.6 灵活而且快速的I/O文件特性

VxWorks提供的快速文件系统适合于实时系统应用。它包括几种支持使用块设备(如磁盘)的本地文件系统。这些设备都使用一个标准的接口从而使得文件系统能够被灵活地在设备驱动程序上移植。

VxWorks也支持SCSI,还支持在单独的VxWorks系统上同时并存几个不同的文件系统。这些文件系统包括:

●POSIX异步I/O和目录管理

●SCSI支持

●兼容MS-DOS文件系统

●RAW Disk文件系统

●TrueFFS闪存文件系统

●ISO9660 CD-ROM文件系统

●PCMCIA支持

2.4 VxWorks可用的主机/目标机和主要用户

2.4.1 支持的主机

●Sun-4:Sun OS 4.1.x;Solaris 2.4/2.5;Solaris 2.5.1/2.6;Solaris 2.7 ●HP 9000/700:HP-UX 9.0.7;HP-UX 10.10;HP-UX 10.20

●PC:Win95,Win98,WinNT 3.51,WinNT 4.0

2.4.2 支持的目标机

●Motorola 68K

68000;68010;68020;68030;68040;68060;CPU32

●Motorola ColdFire

MCF51xx;MCF52xx;MCF53xx

●Motorola/IBM PowerPC

PPC4xx;PPC6xx;PPC7xx;MPC5xx;MPC8xx;MPC82x ●Motorola M-Core

●Intel X86

i386;i486;Pentium;Pentium-Pro

●Intel ARM,StrongARM

SA-110;SA-1100;SA-1110

●NEC

V86x;V83x

●i960

KA/KB/CA/JX/PR;RP/RD

●NEC/LSI MIPS

R3K;R4K;Vr41xx;R4700;CW400x;CW4011;R5K ●HITACHI SH

SH-1;SH-2; SH-3; SH-4; SH-DSP; SH3-DSP;

●SUN SPARC

UltraSPARC;SPARC

●ST-20

●TriCore

2.4.3支持多种BSP

集成多种单板的BSP,缩短开发周期。

第三章 TornadoII嵌入式开发系统软件工具包

3.1 TornadoII特性简介

嵌入式产品的复杂度越来越高,而同时生产周期也越来越紧张,这种情况给嵌入式开发人员带来了巨大的压力。用户们则希望以更低的价格获得更多的性能。现在市场上最热门的产品应该是快速而且更加智能化,可以运行更多代码的产品。所以开发人员必须能够快速启动并且快速开发。

TORNADOII是一个开放的,而且独立于硬件的软件解决方案,它可以运行在90%的32位嵌入式处理机体系结构上,有效地加速设计和开发的进程。TORNADOII的开放特性使得它非常易于与第三方产品集成,而且在WindLink合作计划的推动下,TORNADOII的工具愈加丰富和成熟,并且可以专注于互连网络和JAVA上。

TORNADOII是一个用于实时嵌入式应用的完整的软件开发平台,可以用于UNIX和Window 95/98/NT,它包括三个高度继承的部件:

●TORNADOII工具,一整套完整的交互式开发工具和实体

●VxWorks嵌入式实时操作系统

●主机和目标机之间全方位的通信选择

TORNADOII的开放的体系结构以及符合企业标准的特性使得开发人员可以轻松地开发不同厂家的系统并且以最小地代价移植到不同地处理器上。

3.2 TornadoII核心工具

TornadoII核心工具包(CORE TOOLS)主要包括以下几项:

3.2.1Tornado编辑器

3.2.2工程管理和配置工具(Project facility/Configuration)

VxWorks中的工程管理工具是一个非常方便而且有用的图形化管理工具。它可以对Vxworks操作系统及其组件进行配置,组织、配置和建立Vxworks应用程序,根据应

用程序进行依赖性分析后,自动裁剪和配置VxWorks。Project中的检查功能还可以对开发人员定义的配置选项进行检查,并以醒目的方式标明冲突的配置。

更为有用的是Project工具还提供了生成不同VxWorks影象的功能。开发人员可以在Project中指定生成VxWorks的影象并且加入应用程序模块,从而为产品阶段的开发提供了非常便利的手段。

3.2.3编译器

Tornado可以为用户提供支持C语言和C++语言的交叉编译器和类库。

编译器包括:GNU的C/C++编译器和Diab C/C++编译器。类库包括VxWorks类库和tool.h类库,为提供一套完整的开发工具系列而支持的工具集合:

?cpp,c的预处理器

?gcc,c和c++的编译器

?make,程序自动编译连接工具

?ld,可编程的静态连接器

?as,可移植的汇编器

?二进制工具

3.2.4VXSIM集成仿真器

许多嵌入式的开发人员发现为满足应用的要求,商用的硬件并不能够满足要求,所以需要开发自己的定制的硬件。在硬件正在开发和调试的过程中,如果能够同时开始软件的开发和调试,那么就可以有效地缩短缩短产品的开发周期。VxSim就是这样的产品。VxSim可以在主机的环境上模拟一个VxWorks环境,用户可以在这个模拟的环境下开发软件程序,使用Tornado2 IDE,从而实现软硬件的同步开发。

VxSim是一个完整的Tornado2和VxWorks应用的原型模拟工具。它可以允许硬件开发完成之前先行开发软件,在开发早期实现软件的测试。VxSim还具有一定的模拟通用I/O设备的功能,如串口,而且可以模拟文件系统和网络

3.2.5WindView

嵌入式的开发已经变的越来越复杂,实时任务也越来越多,如果没有复杂的系统级可视工具支持,最终的系统几乎是不可读的。由于系统内部的运行不可知,许多开发者可能会非常困惑:“为什么要用200ms才能接受一个键盘中断?”

WindView正是解决这类困惑的工具,它是一个软件逻辑分析仪,可以深入地了解任务的工作状态,同时跟踪系统的有用信息,如中断,上下文切换和任务阻塞等。所以,WindView可以向开发者提供目标机硬件上实际应用程序的运行情况并且可以过滤掉无关的信息。

WindView在1994年一经推出,立即获得了计算机界的一致好评。这是世界上第一个可以让开发人员看到正在目标机上运行的任务,中断,对象的运行情况的工具。开发人员可以在WindView的屏幕上看到系统中各种对象,如信号灯,消息队列,信号,任务,计时器和用户事件的发生序列及时间。WindView有以下三个重要的特性:

●快速集中:可以帮助用户快速地分离应用中的关键区域;

●深入分析:分析事件内部的特性;

●随处可用:无须考虑目标机的类型就可以使用WindView。

3.2.3 强有力的命令行执行方式WindShell

Tornado的命令执行工具WindSh是Tornado所独有的功能强大的命令解释器,可以直接解释执行C语句表达式,调用目标机上C的函数、查看符号表中的变量、还可以直接执行TCL语言。

3.2.4 系统对象检查工具Brower

Tornado的目标机系统浏览器Browser是Tornado的一个图形化组件,它可以提供目标机中系统对象,如任务、信号灯、消息队列、内存分区、定时器、模块、变量、堆栈等的系统信息,也可以显示内存的使用信息。

3.2.5 集成调试器CrossWind

CrossWind是一个源代码集成调试器,支持任务级和系统级调试,支持混合代码和汇编代码显示,支持多目标机同时调试。

CrossWind沿用了GNU Debuger 4.17版本,并且进行了VxWorks定制。在CrossWind中,开发者可以成组地观察表达式的观察窗口;可以在调试器的图形用户界面中迅速改变变量、寄存器和局部变量的值;可以为不同组的元素设定根值数;并且可以用分类的方法提供信息,使得调试工作效率更高。在提供GUI调试方法的同时,也有命令行方式,开发者可以根据自己的使用背景予以选择。

CrossWind中有两种调试方式:任务级和系统级。在任务级调试中,程序员可以在单个任务中设置断点,这种断点只对该任务有效,其他任务和系统仍然持续运行。系统级断点可以在整个系统的运行时间轴上设置断点,一个断点可以将整个系统,包括任务和操作系统全部停下来,可用于调试多任务或者是中断处理程序。

3.2.6 C/C++交叉编译工具

Tornado可以为用户提供支持C语言和C++语言的交叉编译器和类库。

编译器包括:GNU的C/C++编译器和Diab C/C++编译器。类库包括VxWorks类库和tool.h类库。

3.2.7工程管理和配置工具(Project facility/Configuration)

VxWorks中的工程管理工具是一个非常方便而且有用的图形化管理工具。它可以对Vxworks操作系统及其组件进行配置,组织、配置和建立Vxworks应用程序,根据应用程序进行依赖性分析后,自动裁剪和配置VxWorks。Project中的检查功能还可以对开发人员定义的配置选项进行检查,并以醒目的方式标明冲突的配置。

更为有用的是Project工具还提供了生成不同VxWorks影象的功能。开发人员可以在Project中指定生成VxWorks的影象并且加入应用程序模块,从而为产品阶段的开发提供了非常便利的手段。

3.2.8 源代码分析仪(WindNavigator)

如果想透彻地了解大型C或C++程序的结构是一件非常困难的工作,如果该程序来自第三方,难度就更大了。一般而言,这类程序会包含上千个文件,函数和类。但是,开发人员又不得不对这样的程序进行升级,维护和调试的工作。所以在Tornado中包含一个源代码分析仪(WindNavigator),它可以浏览源代码,提取出有用的信息后生成一个高效率的数据库,并且用图形来显示函数调用关系,快速进行代码定位。在几分钟之内,可以扫描数千行的程序。

3.2.9 动态上载/卸载器(Incremental Loader)

Tornado的动态上载工具(Incremental Loader)可以动态的上载或卸载新增模块并且与目标机上的内核实现动态链接,所以开发人员可以不必重新下载内核以及未改动的模块。

3.3 WindPower工具

TornadoII中的 WINDPOWER工具包括:

●ScopePak

●PerformancePak

●CodeTest/Coverage

●CodeTest/Memory

●VisualSlickEdit

●Wind Foundation Classes

●Look! For Tornado

3.3.1软件“示波器”(ScopePak)

在开发实时多任务系统程序时,开发人员非常希望可以跟踪任务的运行以便更好地掌握系统的运行,但是传统的调试工具不能实时地显示任务的运行轨迹,所以开发者只好不停地在程序中增加诸如:printf一类的语句来跟踪任务的运行。但是这种方法给

任务的运行增加了巨大的开销而且跟踪的效果并不理想。Wind Power工具——ScopePak就可以在几乎不增加系统开销的情况下,提供系统实时的运行轨迹。ScopePak中包含两个工具:StethoScope——图形化显示系统内变量的监视工具和TraceScope——跟踪程序运行序列的工具。

●StethoScope

StethoScope是一个实时数据收集,图形显示,归档和调试工具,主要功能是以最小的干扰跟踪并发现程序中的性能问题,失灵或错误等。它可以利用多窗口环境图形化显示变量,就好象用数字示波器显示电路信号一样;可以在最小干扰的情况下捕捉问题,调整参数,观察系统运行轨迹;可以允许开发者动态地检查和分析正在目标机上运行的实时应用程序,并且可以提供历史数据图形和直角坐标图形;可以允许开发者在程序运行的过程中改变系统的变量;可以支持多种数据类型,以高采样速率收集事后分析的数据并在产生数据的同时显示数据,也可以根据特定的时间收集数据;可以发现噪音,失灵和系统中任何信号的问题;可以为图形和数据进行归档并打印。

●TraceScope

TraceScope对于多任务环境是一个非常有用的调试工具,它可以为开发者提供函数级的运行顺序,函数在什么时候被调用,顺序和调用参数如何等。如果与WindView 结合使用,任何一个函数的入口和出口都可以成为WindView的事件予以显示。TraceScope对系统的运行几乎没有影响。

3.3.2性能检测包PerformancePak

实时系统的开发者总是希望获得最高的系统性能,但是又很难发现系统运行的薄弱环节。开发者经常会遇到系统被挂起的情况,可是又不能确定是程序代码的原因还是操作系统或第三方工具的原因。在实际应用中,实时系统需要长事件稳定的工作,此时对内存使用的要求就非常高,然而内存有时最难以控制的环节,大量的内存被浪费,内存使用过程中发现的问题有很隐蔽,经常是系统运行很长时间后,才能发现重大而且致命的内存问题。PerformencePak就是解决这个问题的工具,它包括一个CPU的分析工具ProfileScope和内存的分析工具MemScope。

●ProfileScope

ProfileScope是一个分层的CPU运行轮廓分析仪。它可以分析CPU是在开发者的代码,第三方库函数或操作系统中花费了多少时间。无须任何特殊的编译或硬件就可以提供全方位的精确的树型轮廓图。利用ProfileScope,开发者可以逐个函数地分析CPU的运行轨迹,而且ProfileScope还可以指出系统效率低的环节,帮助开发者将系统的性能提高到最佳,并且发现系统的瓶颈所在。

●MemScope

MemScope可以用图形化的方式分析内存的使用情况而且无须任何特殊的编译。MemScope可以为开发者提供实时的详细的内存使用图,包括每一个内存块的历史调用过程。它还可以帮助开发者发现内存漏洞,全面理解内存的使用情况,从而使系统的运行更加高效和可靠。

3.3.3代码测试器CodeTest/Coverage

在实时嵌入式系统中,很难预料程序的运行序列,开发者难以确定系统内部的运行轨迹,而软件更是其中最难以预料的部件。在以往的嵌入式开发中,开发者通常会利用自行开发的工具或手工检查哪一部分代码运行哪一部分代码没有运行,这样做的结果当然不能令人满意。

WindPower 工具CodeTest/Coverage就是为嵌入式开发提供的嵌入式软件验证工具,有了CodeTest/Coverage,开发者和测试者可以在开发早期验证软件的模块和集成特性,无须任何硬件的支持。CodeTest/Coverage可以在代码运行的过程中检查代码的运行序列,准确地显示代码在特定的测试条件下的运行轨迹,为开发者提供有用的信息。

CodeTest/Coverage可以在程序的运行过程中,交互地显示程序,函数和源代码的语句覆盖情况。CodeTest/Coverage的独特之处还在于它可以在测试进行过程中以XY时间轴的方式显示覆盖趋势,如果发现覆盖峰值,可以及时终止测试,因此可以有效地缩短测试的时间。

CodeTest/Coverage所生成的分析结果可以让开发者在实时系统的运行过程中跟踪覆盖率并观察测试的效率。开发者可以用多种方法观察覆盖信息:总结,函数,源代码及趋势。开发者可以获得真实的覆盖测量结果而不是统计采样,因此开发者获得的永远是最真实的测量结果。CodeTest/Coverage可以跟踪数以百万计的分支,所以非常适合于当前的嵌入式应用。CodeTest/Coverage所产生的信息有助于开发者发现无用的代码,减少死码,因此可以缩小程序的大小和复杂度,提高程序的性能。

3.3.4CodeTest/Memory

在实时嵌入式开发过程中,跟踪并标识内存的动态分配和错误是非常重要而且非常困难的工作。一个小小的内存故障可能会引起系统严重的故障。所以,在系统失效之前及时地发现内存的漏洞是必要而且必须的。CodeTest/Memory可以让开发者和测试者在开发早期验证软件的模块和集成特性,无须任何硬件的支持。CodeTest/Memory可以解决嵌入式程序中最难解决的动态内存跟踪问题。它不仅可以在程序的运行过程中报告每一个申请语句所分配到的内存字节,更可以发现20多中分配错误,如“释放空指针”等。

有了CodeTest/Memory,开发者可以从烦琐而低效的手工内存检查中解放出来,在发生内存错误时精确地定位源代码的位置,在明显的故障出现之前,检测并报告最复杂的内存错误。CodeTest/Memory还可以发现最消耗内存的函数,在程序的运行过程中,观察内存分配曲线。

CodeTest/Memory可以监视所有的内存分配以便跟踪有多少内存被分配了但是没有释放,并且利用柱型图和数据表格清楚地显示程序中所有内存语句的统计资料。CodeTest/Memory还可以捕捉到离散的内存分配错误及错误出现时完整的程序上下文。

3.3.5WFC基础类库(Wind Foundationg Classes)

WFC基础类库是为基本I/O、数据结构、算法和Vxworks函数提供面向对象的接口。使得开发者能够使用和重复使用高度优化和经过谨慎测试的代码,以最少的时间、最小的错误率、最低的成本完成实时嵌入式应用。

●Vxworks Wrapper Classes包含与10个Vxworks C函数库的C++接口

●Toolsh++ from Rogue Wave Software包含模板和一些不基于模板的C++类,例

如:操作类型、规范运算、单向/双向链表、文件类型和文件空间管理、队列、栈等

●C++ Booch Components from Rogue Wave software包含一组经过实时优化的基

于模板的数据结构和算法,其中包括图形、列表、队列等数据结构;查询、排序工具;异常处理等。

3.3.5 Look! For Tornado

Look! For Tornado C++程序可视化调试工具,以图形化的方式动态地监视C++程序的运行情况。揭示C++的动态运行特性及每一行代码在运行中发挥的作用。通过实时地观察和确认对象间的关系加速调试过程,通过通过动态结构的观察,使开发人员可以确定程序是否符合设计要求。帮助开发人员由C编程转移到到C++编程。。

第四章 TornadoII嵌入式开发系统可选组件

4.1 概述

4.1.1 板级支持包开发工具BSP Developer’s Kit

板级支持包开发工具BSP Developer’s Kit可以帮助开发者进行设计、归档和测试新设备的驱动程序和BSP的工作。

4.1.2 虚拟内存接口VxVMI

VxVMI是Vxworks操作系统的虚拟内存接口,提供虚拟内存管理,是强有力的测试和内存管理工具,它包括文本和核心数据段、代码段及数据结构的保护、程序员接口等,可以适用于多种不同的CPU结构体系。

4.1.3 支持紧密耦合共享内存多处理器结构的VxMP

VxMP是Vxworks操作系统的扩展,它是支持紧耦合和共享内存的多处理器结构的软件包,允许实时嵌入式应用程序的性能具有可以升级超过单CPU的能力,其透明的、高性能的设计可以使运行在不同CPU上的任务利用现有的Vxworks机制就可以实现相互间的同步和数据交换,例如:信号量和消息队列。

4.1.4 支持紧密耦合共享内存多处理器结构的VxDCOM

VxDCOM是Vxworks操作系统的扩展,它是支持紧耦合和分布式硬件的多处理器结构的软件包。

4.1.5 支持松散耦合分布式多处理器结构的VxFUSION

VxFUSION是Vxworks操作系统消息队列的扩展,它是支持松耦合和分布式硬件的多处理器结构的软件包。

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支持应用程序的动态链接和动态下载,使开发

相关文档
最新文档