搜档网
当前位置:搜档网 › VxWorks基础知识

VxWorks基础知识

VxWorks基础知识
VxWorks基础知识

VxWorks基础知识

收藏

1.多任务:允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。

3.任务切换之前要保存上下文。

4.优先级是动态的0~255,0级最高。

5.Wind内核taskLock()和taskUnlock()禁止和解除抢占,但对中断不起作用。

6.异常处理:VxWorks异常处理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。内核和其它任务继续执行。

7.为什么要共享存储区:任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址空间的同一内存区域。

8. 为什么要互斥:当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。一般来说,关中断是最有效的解决互斥的方法。但这对于实时应用来说,它阻止系统对外部事件的响应,无法满足实时性的要求。同样,中断延迟也是不能接受。因为它们没有实时性。所以要用信号量来完成互斥,主要是二进制信号量,并且二进制信号量不仅能完成互斥而且能完成同步!,但是关中断应该用到程序的初始化过程中。

9.信号量:VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。针对不同类型的问题,有以下三种信号量:

⊙二进制信号量使用最快捷、最广泛,主要用于同步或互斥;

⊙互斥信号量主要用于优先级继承、安全删除和回溯;

⊙计数器

VxWorks还提供POSIX信号量和多处理器上信号量的应用。

10.消息队列,任务之间利用消息队列发送和接收消息。

11.管道:管道是一种灵活的消息传送机制,它比消息队列强在有一个select()

12.信号量的创建与删除:

semBCreate() 创建(产生并激活)一个二进制信号量

semMCreate() 创建(产生并激活)一个互斥信号量

semCCreate() 创建(产生并激活)制一个计数信号量

semDelete() 中止并自由信号量

semTake()获得信号量

semGive() 给出信号量

semFlush() 解锁所有正等待某一信号量的任务

13.消息队列的创建与删除:

msgQCreate() 创建(产生并激活)消息队列

msgQDelete() 中止并自由信号量

msgQSend() 向消息队列发送消息

msgQReceive() 从消息队列接收消息

14.网络通讯:与其它主机进行通信。

15. 套接口Sockets:套接字(sockets)来实现Vxworks系统和网络协议的接口.套接口是通讯的基础,应用程序一般仅在同一类的套接口间通讯。主要的两种套接口:流套接口(采用TCP协议)和数据报套接口(采用UDP协议),两者都是双向传输,且流套接口提供有序和无重复的数据流服务,虽然数据报套接口没有提供有序和无重复的数据流服务,但是它的最大的特点是记录边界。

16.套接口(socket)通信的最大优点是:过程间的通信是完全对等的,不管网络中过程的定位或主机所运行的操作系统。

17.套接口Socket的函数:

socket() 创建一个套接口

bind() 给套接口分配名称

listen() 打开TCP套接口连接

accept() 完成套接口间连接

connect() 请求连接套接口

shutdown() 关闭套接口间连接

send() 向TCP套接口发送数据

recv() 从TCP套接口接收数据

select() 完成同步I/O传输

read() 从套接口读取信息

write() 向套接口写入信息

ioctl() 完成对套接口的控制

close() 关闭套接口

前面四个函数相当于网络驱动。

18. 实时系统中硬件中断处理是至关重要的,因为它是以中断方式通知系统外部事件的发生。为了快速响应中断,中断服务程序ISR运行在特定的空间,有自己的上下文。不同于其它任何任务,因此中断处理没有任务的上下文切换。

中断函数:

intConnect() 将C函数和中断向量联结

intCount() 得到当前中断套叠深度

intLevelSet() 设置程序中断级别

intLock() 使中断禁止(关中断)

intUnlock() 开中断

intVecSet() 设置异常向量

intVecGet() 得到异常向量

在程序中用的最多的就是关开中断了,intLock()和intUnlock().

所有的中断服务程序使用同一中断堆栈,它在系统启动时就已根据具体的配置参数进行了分配和初始化,必须保证它的大小,以使它能满足最坏的多中断情况。因此在程序设计初,即程序入口处就要设定中断堆栈的大小,而这个大小没有什么的定的公式可循,只能依据经验。中断也有缺陷:ISR不运行在常规的任务上下文,它没有任务控制块。对于ISR的基本约束就是它们不能激活那些可能使调用程序阻塞的函数,例如,它不能获取信号量,因如果该信号量不可利用,内核会试图让调用者切换到悬置态。然而,ISR能给出信号量。因为调用者就是ISR,是中断被悬置,这是很不好的。不过这只是它为了满足实时性的一个约束条件。不能算是缺陷哈。

19.ISR到任务的通讯和同步:

Ж. ISR很少作为信息的接收者,它不可以等待接收信息包或事件.ISR通常作为通信或同步的发起者,它通常返回一个信号量、向队列发送一个信息包或事件给一个任务。

Ж. ISR内的系统调用总是立即返回ISR本身。例如,即使ISR通过发送信息包唤醒了一个很高优先级的任务,它也首先必须返回ISR。这是因为ISR必须先完成。

20. 时钟管理功能:

┓维护系统日历时钟;

┓在任务等待消息包、信号量、事件或内存段时的超时处理;

┓以一定的时间间隔或在特定的时间唤醒或发送告警到一个任务。

┓处理任务调度中的时间片轮循。

这些功能都依赖于周期性的定时中断,离开实时时钟或定时器硬件就无法工作。时钟管理的系统调用有:

tickAnnounce() 通知系统内核时钟“滴答”

tickSet() 设定内核时钟计数器值

tickGet() 得到内核时钟计数器值

timer_create() 创建时钟

timer_gettime() 获得时钟器给定值的当前剩余值

timer_settime() 设定时钟值

timer_connect() 联系用户函数和时钟信号

timer_cancel() 取消一个时钟

sysClkRateSet() 系统时钟速率设置

21.看门狗Watch Dog的作用:

VxWorks看门狗定时器作为系统时钟中断服务程序的一部分,允许C语言函数指明某一时间延迟。(我还以为只是有关safe(看门)的作用呢:))。

被看门狗定时器激活的函数运行在系统时钟中断级。然而,如果内核不能立即运行该函数,函数被放入tExcTask工作队列中。在tExcTask工作队列中的任务运行在最高优先级0。看门狗定时器调用函数:

wdCreate() 分配并初始化看门狗定时器

wdDelete() 中止并解除看门狗定时器

wdStart() 启动看门狗定时器

wdCancel() 取消当前正在计数的看门狗定时器

22.Tanado集成开发环境:

Tornado环境采用主机--目标机交叉开发模型,应用程序在主机(的Windows环境)下开发(编译链接生成可执行文件),在目标机上调试(下载到目标机,通过主机上的目标服务器与目标机上的目标代理程序的通信完成对应用程序的调测、分析)。

即应用程序在主机上开发,在目标机上调试~!

23. Tonado个集成组件的功能:

⊙Tornado开发环境:

Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从

Shell窗口下发命令和浏览。

⊙WindConfig:Tornado系统配置

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

⊙WindSh:Tornado外壳

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

⊙浏览器

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

⊙CrossWind:源码级调试器——提供交叉调试

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

⊙驻留主机的目标服务器

目标服务器管理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上的目标机符号表,提供目标模块的加载和卸载——在主机与目标机通讯时使用。⊙Tornado注册器

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

⊙VxWOrks

Tornado包含了VxWorks操作系统。

⊙目标代理程序

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

23. 系统启动:

在实时应用系统的开发调测阶段,往往采用以PC机作为目标机来调测程序。主机PC和目标机PC之间可采取串口或是网口进行联结。由于大多数目标已配有网卡,网络联结成为最简单快速的连接方式。串口联结虽通信速率不高,也有它自己的优点,系统级任务调试(如中断服务程序ISR)需使通信方式工作在Polled 模式,网口联结就不支持。因此就有两种通讯方式下的启动方式来制作Vxworks启动盘,它和Windows系统不同的,Vxwor

ks操作系统是需要定制的,裁掉不需要的系统,这样可以使系统更小,满足目标板的内存约束。

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

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

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

#undef WDB_COMM_TYPE

#define WDB_COMM_TYPE WDB_COMM_SERIAL

#define WDB_TTY_CHANNEL 1

#define WDB_TTY_BAUD 9600

并且修改#define DEFAULT_BOOT_LINE中vxWorks为vxWorks.st。

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

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系统。

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

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

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

针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为EL T,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= 目标机名"

3.主机信息的确定

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

主机IP 主机名

目标机IP 目标机名

4.在Tornado集成环境中点取Project菜单,选取Make PC486,选择Common Tar get,先进行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/righ t...,在其弹出窗口中选择New User...,根据提示信息输入登录用户名和口令,并且要指定下载文件vxWorks所在根目录;还必选取主菜单 Logging中Log options,使Enable Lo gging、Gets 、Logins 、Commands 、Warnings能。

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

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

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

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

3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available Back"窗口中选择wdbserial, 再在"Serial Port"窗口中选择主机与目标机连接所占用

的串口号(COM1,COM2),再在"Speed(bps)"窗口中选择主机与目标机间串口速率。

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

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

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

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

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

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

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

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

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

5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。28. 应用系统配置:运行在目标板上的系统映象是个二进制模块。系统映象占用空间较大。所以可根据需要裁剪系统配置,降低系统占用资源。

29.板级支持包BSP负责目标板硬件的初始化,实时内核的载入等。

30. VxWorks的系统任务:

目标板加电启动成功后,有如下几个任务已开始运行。

根任务:tUsrRoot

内核首先执行根任务tUsrRoot,其入口点为文件config/all/usrConfig.c中的usrRoot()函数,它负责初始化 VxWorks工具,并创建注册、异常处理、网络通信任务和tRlogind 等任务。一般来说,在所有的初始化工作完成后,根任务tUsrRoot被删除。

注册任务:tLogTask

注册任务tLogTask被VxWorks模块用于传送不需I/O操作的系统消息。

异常处理任务:tExcTask

异常处理任务tExcTask有最高优先级,它负责系统的异常情况出错处理,不能被悬置、删除或是改变其优先级。

网络通信任务:tNetTask

网络通信任务tNetTask负责系统级任务的网络通信。

目标代理任务:tWdbTask

如果目标代理程序运行在任务模式,目标代理任务tWdbTask被创建,用来响应主机目标服务器的请求。

31. 防止死锁,饥饿和优先级翻转:

死锁是指多个任务因为等待进入对方占据的临界区而导致的不可自行恢复的运行终止。在程序设计是要注意对死锁的预防,一个是尽量使互斥资源在相同优先级任务中使用,必须在不同优先级任务中使用时,要注意对死锁的解锁处理。

饥饿是指优先级较低的任务长期得不到系统资源(主要是指CPU资源)而造成的任务长期得无法运行。造成饥饿的主要原因是优先级较高的任务调度过于频繁或占用时间太长。合理的分配任务的优先级和对较高优先级任务的合理调度是解决饥饿的不二法门。

任务的优先级翻转是实时多任务操作系统的热门话题,它是指高优先级任务因等待低优先级任务占用的互斥资源而被较低优先级(高于低优先级但低于高优先级)的任务不断抢占的情况。有些实时多任务操作系统自身提供保护机制可对优先级翻转进行预防。在操作系统未提供保护的情况下,就需要编程人员在编程的时候注意避免优先级翻转的情况发生(如在同一优先级内使用互斥资源),或采取相应的手段进行处理(如动态的进行优先级提升)。注:VRTX和VxWorks提供自身的防止优先级翻转机制,pSOS未提供保护机制。

32. 函数的可重如性(Reantrancy):

在一个多任务环境中,函数的可重入性是十分重要的。可重入函数是一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。在写函数时只要考虑到尽量用局部变量(例如寄存器、堆栈中的变量),对于要使用的全局变量要加以保护(例如采用关中断、信号量等),这样构成的函数就一定是一个可重入的函数。

此外,编译器是否有可重入函数的库,与它所服务的操作系统有关,例如DOS下的Borl and C和Microsoft C/C++等就不具备可重入的函数库,这是因为DOS是一个单用户单任务的操作系统。为了确保每一个任务控制自己的私有变量,在一个可重入的C函数中,须将这样的变量声名为局部变量。C编译器将这样的变量存放在调用栈上或寄存器里。

在VxWorks中,多个任务可调用同一子函数或函数库。VxWorks系统动态连接工具使这相当容易,这种共享代码让系统更加高效,易于维护。

嵌入式系统的比较

嵌入式系统的比较 简单介绍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时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。 嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性能有严格要求的计算机系统。随着

Tornado_VxWorks官方培训教程1

嵌入式培训专题 微迪软件培训中心Tornado &VxWorks 培训 深圳市微迪软件技术有限公司 培训中心

嵌入式培训专题 微迪软件培训中心实时系统概念 ?实时系统是对外来事件在限定时间内能做出反应的系统。 ?指标 –响应时间Response Time –生存时间Survival Time –吞吐量Throughput

嵌入式培训专题 微迪软件培训中心实时系统与普通系统 ? 在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间?对于实时系统来说最重要的要求就是实时操作系统必须有满足在一个事先定义好的时间限制中对外部或内部的事件进行响应和处理的能力 ? 此外作为实时操作系统还需要有效的中断处理能力来处理异步事件和高效的I /O 能力来处理有严格时间限制的数据收发应用

嵌入式培训专题 微迪软件培训中心实时系统分类 ?根据不同的分类方法可以分为几种。 –方法一是分为周期性的和非周期性的(p e r i o d i c 和 a p e r i o d i c ) –方法二是分为硬实时和软实时(h a r d r e a l _t i m e 和s o f t r e a l _t i m e ) –专用系统和开放系统 –集中式系统和分布式系统

嵌入式培训专题 微迪软件培训中心实时多任务操作系统与分时多任务操作系统? 分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。?实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。

嵌入式实时操作系统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的虚拟机;

常见的嵌入式操作系统

常见的嵌入式操作系统 分类:嵌入式操作系统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任务创建编程学习代码

任务创建编程学习代码一 此代码主要的是创建若干的任务,来学习任务的创建和删除. 程序的结构是: start函数:任务创建函数 stop函数:任务删除函数 其它为任务 请大家仔细分析代码,理解任务内务的创建和删除.本代码是在tornado2.0版本调试成功. 如有疑问联系作者jdvxworks 邮箱:foxqs@https://www.sodocs.net/doc/9016697316.html, /********************************* * date:2006.7.10 time:16.08 * maker: jdvxworks * aim: create 4 task * list: task0 task1 task2 task3 * change:_____________________ *********************************/ #include "stdio.h" #include "taskLib.h" #include "vxWorks.h" //#include "semBLib.h" int taskid0; int taskid1; int taskid2; int taskid3; int loopid; SEM_ID sem_id; STATUS Err; void start(void); void test0(void); void test1(void); void test2(void); void test3(void); void stop(void); void taskloop(void); //start init task void start(void) { int i,o; long p=9999999+100000;

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

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

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

VxWorks 基本概念

VxWorks基本概念 Bootrom和Boot image的区别,Boot image和VxWorks image的联系和区别 bootrom 是指on-chip bootrom,在CPU芯片内部,内嵌有小的boot程序(bootloader),类似于PC机主板上的BIOS的存储区域。和boot image不是一回事。VxWorks文档中的bootrom区是指boot image存放的位置。 boot image的作用是把VxWorks image 加载到主板。boot image只初始化很少的硬件系统如串口,网口等。为加载VxWorks image做准备,当VxWorks系统下载完毕后,b oot image的作用也就完成了。 VxWorks image含有完整的VxWorks OS.是真正运行于目标板上的操作系统。应用程序运行于VxWorks系统之上。 boot image 和VxWorks image生成在使用BSP文件上的区别在于:在启动顺序中Bootrom调用bootConfig.c,而VxWorks调用usrConfig.c. 在ROM中VxWorks运行的方式(和bootrom编译到一起还是单独固化到ROM中),在ROM中的内存分配? VxWorks加载到主板运行,分不同的情况,如果VxWorks是压缩的,加载时解压到RAM的RAM_HIGH_ADRS.如果是ROM based VxWorks,VxWorks image的data段复制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中执行。 既不压缩又不ROM based的VxWorks直接copy到RAM_LOW_ADRS运行。 若在config.h中修改系统设置,如增加网卡等,是否需要重新烧bootrom?如果增加其他oem产品呢? 如果主板中有Boot image存在则不需要重新烧,用FTP等download加载VxWorks 即可。 VxWorks 系统编程中任务级与中断级的通讯如何实现? 中断是由硬件触发,软件的作用只是将中断服务例程(ISP)与中断事件连接起来。 1.使能中断,函数intEnable()。 2.用intConnect()登记中断号,和相应的中断例程ISR.这样一旦有中断发生,系统自动跳转到相应位置执行ISR.

vxWorks学习笔记

vxWorks学习笔记 vxWorks学习笔记 2006-07-20 11:141.VxWorks开发方式:交叉开发,即将开发分为主机(host)和目标机(target)两部分。 类似于dos下C语言程序的开发。 合并开发的优点:简单 缺点:资源消耗量大,CPU支持,非标准体系的支持 host (Tornado) target(vxWork) 小程序模块 vxWorks实际采用开发模式 Tornado提供:编辑,编译,调试,性能分析工具,是vxWorks 的开发工具 vxWorks:面向对象可以剪裁的实际运行操作系统 2.vxWorks启动方式 Rom方式(vxWork_rom) vxWorks直接烧入rom Rom引导方式(bootrom+vxWorks) 其中bootrom烧入rom,vxWorks可以通过从串口,网口,硬盘,flash等下载!这里的bootrom不是开发环境中的bootable,在开发环境里bootable指的是vxWorks,downloadable指application 3.调试

attach 用来在多任务调试时将调试对象绑定到某个任务 任务级调试(attach taskName) 单个任务的调试不会影响到其他任务的运行,主要用来调用户的应用程序。 全局断点:在调另一任务或本任务时,系统运行本任务断点,则停下。各任务要配合使用。 任务断点:调本任务时,系统运行到本任务断点,则停下。如果没有attach到本任务,不起作用。 一次性断点:跑到一次之后自动删除。 系统级调试(attach system) 把所有task和系统core、中断看成一个整体,可用于调试系统和中断。对中断调试,如果不是系统级调试,无论是那种断点都不起作用 !wdbAgent不在调试范围内,当任务级调试时工作在中断方式,系统级调试工作在轮询方式。 !可是使用命令行方式的调试,参看crossWind教程。 4.调度 优先级调度(无条件) 时间片:同优先级,如果时间片没有打开,任务采取先到先运行,运行完毕在交出cpu,如果打开,则轮流使用cpu。!死循环使比它优先级低的任务都不能运行。

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

几种主流嵌入式操作系统分析 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解决方案

Dos引导VxWorks

CF卡上引导VxWorks的三种方法 方法一. 直接引导: 引导扇区 >> bootrom.sys >> VxWorks 这种方法最快,但要求bootrom.sys保持连续性(可用chkdsk检查)。 方法二. FreeDOS引导: 引导扇区 >> FreeDOS >> https://www.sodocs.net/doc/9016697316.html, >> bootrom.sys >> VxWorks 这种方法牺牲少量启动时间换取灵活性,因为你可以为FreeDOS增加菜单实现选择性启动,而且许多维护性工作也可在DOS下进行。 方法三. GRUB引导: 引导扇区 >> GRUB >> FreeDOS启动盘映像 >> FreeDOS >> https://www.sodocs.net/doc/9016697316.html, >> bootrom.sys >> VxWorks 这种方法比上一种更进一步,你可以利用GRUB的强大功能实现多系统引导,不过不是所有的主板都支持GRUB。 grub> kernel --type=netbsd /vxWorks 一共两个分区,都是主分区。C盘为Fat32格式,设为活动分区。D盘为Fat格式,设为非活动分区。C盘装的Winxp,用XP引导Grub4DOS。把DOS的系统文件(IO.sys,MSDOS.sys,https://www.sodocs.net/doc/9016697316.html,)拷贝到D盘根目录。 修改menu.lst如下: title DOS6.22 root (hd0,1) chainloader (hd0,1)/IO.SYS title DOSDOS find --set-root (hd0,1)/io.sys chainloader (hd0,1)/io.sys title FINDDOSACT find --set-root (hd0,1)/io.sys

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

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 任务管理 任务管理是嵌入式实时操作系统地核心和灵魂,决定了操作系统地实时性

VxWorks基础知识

VxWorks基础知识收藏 1.多任务:允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。 3.任务切换之前要保存上下文。 4.优先级是动态的0~255,0级最高。 5.Wind内核taskLock()和taskUnlock()禁止和解除抢占,但对中断不起作用。 6.异常处理:VxWorks异常处理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。内核和其它任务继续执行。 7.为什么要共享存储区:任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址空间的同一内存区域。 8. 为什么要互斥:当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。一般来说,关中断是最有效的解决互斥的方法。但这对于实时应用来说,它阻止系统对外部事件的响应,无法满足实时性的要求。同样,中断延迟也是不能接受。因为它们没有实时性。所以要用信号量来完成互斥,主要是二进制信号量,并且二进制信号量不仅能完成互斥而且能完成同步!,但是关中断应该用到程序的初始化过程中。 9.信号量:VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。针对不同类型的问题,有以下三种信号量: ⊙二进制信号量使用最快捷、最广泛,主要用于同步或互斥; ⊙互斥信号量主要用于优先级继承、安全删除和回溯; ⊙计数器 VxWorks还提供POSIX信号量和多处理器上信号量的应用。 10.消息队列,任务之间利用消息队列发送和接收消息。 11.管道:管道是一种灵活的消息传送机制,它比消息队列强在有一个select() 12.信号量的创建与删除: semBCreate() 创建(产生并激活)一个二进制信号量 semMCreate() 创建(产生并激活)一个互斥信号量 semCCreate() 创建(产生并激活)制一个计数信号量 semDelete() 中止并自由信号量 semTake()获得信号量

学习vxworks中遇到的问题

1预期目标 用两台pc机建立起由网络进行通讯的vxworks开发环境,开发工具是tornado 2.2 for pentium,vxworks版本为5.5。 2硬件描述 宿主机是一台装有windows xp和tornado 2.2的带有网络接口的笔记本电脑,ip设置为192.168.1.101,目标机是研华的610L型号工控机,后发现在vxworks系统下驱动工控机自带网卡有困难,于是购置了一块tp-link的pci网卡,装在工控机上,网卡芯片是realtek 8139d。 3建立开发环境的方案 目标工控机上已经装有windows xp,文件系统是fat32,经试验得知工控机支持usb-zip启动,考虑到不对windows系统产生影响,决定使用u盘启动作为系统启动的方式。用u盘启动bootrom后通过网络下载存放在笔记本电脑上的vxworks系统镜像,宿主机和目标机通过网络通讯,从而建立起x86构架下的vxworks开发环境。 4工作现状 u盘启动盘通过ultraISO和tornado 2.2自带的一些工具制作成功,并能在工控机上把bootrom 启动起来到命令行,但是在加载vxworks镜像的时候不能成功。 5遇到的问题 在bsp中添加rtl8139网卡驱动,添加驱动的过程如下 (a)下载rtl8139驱动vxworks-8139(140),是适用于tornado 2.0的。 (b)将目录下的h和src两个文件夹复制到tornado 2.2下target文件夹里,把sysRtl81x9End.c 复制到bsp文件夹下。 (c)运行命令行,在C:\Tornado2.2\target\src\drv\end\unsupported目录下运行 make CPU=PENTIUM 成功,但有警告(环境变量已设置好), 在C:\Tornado2.2\target\lib\objPENTIUMgnuvx目录下生成了rtl81x91.o。 (d)修改bsp文件夹里的config.h 修改的第一处 #elif (CPU == PENTIUM) #define DEFAULT_BOOT_LINE \ "rtl(0,0)host:vxWorks h=192.168.1.101 e=192.168.1.102 u=target pw=target" 修改的第二处 #define INCLUDE_END /* Enhanced Network Driver Support */ #undef INCLUDE_DEC21X40_END /* (END) DEC 21x4x PCI interface */ #undef INCLUDE_EL_3C90X_END /* (END) 3Com Fast EtherLink XL PCI */ #undef INCLUDE_ELT_3C509_END /* (END) 3Com EtherLink III interface */ #undef INCLUDE_ENE_END /* (END) Eagle/Novell NE2000 interface */ #undef INCLUDE_FEI_END /* (END) Intel 8255[7/8/9] PCI interface */ #undef INCLUDE_GEI8254X_END /* (END) Intel 82543/82544 PCI interface */ #undef INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */

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

一.什么是真正的实时操作系统 做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式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期Ξ

相关主题