VxWorks操作系统是一个应用比较多的实时多任务操作系统。它提供并支持多任务调度机制,用户可以将自己对事件的控制通过不同任务的协调而完成。各个任务之间通过全局变量、信号量、管道等方式进行信息交换。Wind ML是VxWorks上的一个二维图形用户界面,当多个任务都需要作画图工作时,可能出现当一个任务在正在作图时,被另一个作图任务打断,从而出现意想不到得情况。本文将介绍在VxWorks操作系统中,编写应用程序时的两个技巧。一个是内存变量保护;另一个是间的画图保护。
1 全局变量的保护
各个任务之间通过全局变量交换信息时,如果其中某一任务在引用同一个全局变量期间,该变量在另一任务中被重新赋值,那么就可能发生一些意想不到的事情。为了解决这个问题,首先在任务中定义若干个局部变量,之后将相应的全局变量赋值这些局部变量。任务随后引用的是这些局部变量,而不是全局变量,这样就避免了问题的发生。
具体程序设计流程如下所示:
void Task {
int Local_var;
UGL_FOREVER? {
Sem Take(semStart, WAIT_FOREVER);
Local_var=Globle_var;
Subcall_1(Local_var);
Subcall_2(Local_var);
} / * UGL_FOREVER? */
}
对于数组等全局变量采用固定数组,会有利于防止数组超界。
2 多任务间的画图保护
Wind ML在画图时,每一个绘图指令并不是立即执行,而是首先将指令送到命令缓冲区中,在一定时间间隔后,或接收到一个指令后,一次性的刷新图形显示卡,从而完成画图工作。如果程序中有多个任务需要画图,并且在画图过程中发生任务切换,就可能得不到预想的结果。由于无法了解Wind ML和VxWorks在此种情况下的具体处理机制,只有在应用程序这一级,通过避免事件发生的方法解决问题。
可以设置一个全局变量,用来标识整个程序运行过程中是否处于正在进行Wind ML作图的状态。当某个任务要作图时,首先判断此标识,据此决定是放弃作图,还是继续等待。如果此任务开始作图,就立即改变此标识,供其他任务处理。
下面是具体实施的程序流程:
在程序设计过程中,一定要注意ug1BatchStart()与uglBatchEnd()的匹配调用。
结 语
以上两例是笔者在实际应用VxWorks过程中的几点体会,也比较好的解决了程序设计过程中遇到的一些具体问题。同时,在设计实时多任务程序时,把握好任务之间的优先级安排,尽可能地减小各个任务的负荷是有效保证实时性的两个关键所在。
关键字:实时 内存 变量
引用地址:
VxWorks应用技巧两例
推荐阅读最新更新时间:2024-05-13 18:12
如何实现逻辑分析仪的长时间采集并实时存储?
深存储的逻辑分析仪能够采集更多的波形,让协议分析更容易,如有的人还觉得不够用,不妨试试LA2000A的记录模式。 对于如IIC、CAN等低频协议信号,当我们想长时间地记录波形时,用传统的逻辑分析仪的话会感觉力不从心。假设信号的频率为10kHz,那么即使用存储深度为64Mpts的逻辑分析仪,最多也只能采集大概1个小时的波形,而且在这过程中,我们只能呆呆地等采样结束。为了解决这个问题,逻辑分析仪的记录模式便诞生了。 在记录模式下,不受逻辑分析仪的存储深度的限制,能够一直采集数据,直接将数据存储到电脑硬盘,而且在采集的过程中,可以在软件上观察最新采集到的数据波形。 1、 记录模式的原理 图 1形象的诠释了传统模式和记录模式
[测试测量]
Ramtron 4兆位非易失性F-RAM存储器获EDN China创新奖
FM22L16荣获数据IC与可编程器件“优秀产品”称号 全球领先的非易失性铁电随机存取存储器 (F-RAM) 和集成半导体产品开发商及供应商Ramtron International Corporation宣布荣获业界知名的《电子设计技术》杂志EDN China颁发2007年度创新奖之优秀产品奖。Ramtron的FM22L16产品是半导体行业首款4兆位 (Mb) 非易失性F-RAM存储器,获评委会及数以千计《电子设计技术》的读者选为数据IC与可编程逻辑类别的优秀产品。 Ramtron亚太区域总监徐梦岚称:“我们非常高兴获得业界知名的《电子设计技术》杂志颁发的奖项。对于产品得到中国电子设计团体的认同,我们深感荣幸。这款4兆位F-
[焦点新闻]
第9章 内存操作(X86汇编教程)
这一章将讲解汇编对内存的操作.我之前说过,内存操作需要2个地址.段地址和偏移地址.段地址一般放在段寄存器里,在186里面,以S结尾的寄存器就叫段寄存器(0_0!请不要急着写代码测试...),但不是每个段寄存器都能随便改的.为什么呢?我说过:代码也是在内存里的,也就是说,需要一个段寄存器 和一个偏移寄存器来指向我们的代码,还有栈(不是本章内容),那也是一个内存地址,也需要段寄存器和一个偏移寄存器.(我可没说偏移地址放在偏移寄存器里,实际上我们操作内存很少用到偏移寄存器!) 代码地址的段寄存器为CS,偏移寄存器为IP 栈,段寄存器:SS,偏移寄存器:SP 恩,也就是说,CS和SS这2个段寄存器不能随便改
[单片机]
硬实时操作系统-RTLinux
摘要: 介绍了RTLinux的两个重点特点:硬实时性和完备性,及其在嵌入式系统应用中的一些重要功能,并结合实时处理的具体实例对其编程方法加以说明。 关键词: 操作系统 实时处理 Linux 嵌入式系统 近年来,基于PC的嵌入式系统得到迅速的发展。在各种不同的操作系统中,由于Linux操作系统的廉价、源代码的开放性以及系统的稳定性,使其在基于PC的嵌入式系统中的应用日益广泛。RTLinux(RealTime Linux) 是一种基于Linux的实时操作系统,是由FSML
[嵌入式]
实时频谱分析仪的的增益/衰减设置
本应用指南介绍了如何通过三个用户可选的增益设置和可变衰减来控制ThinkRF R5500实时频谱分析仪的-418和-427模型中的宽带前端增益。它进一步说明了设置如何根据用户的使用需求在增益,噪声和线性度之间折衷。 R5500-418和-427的增益/衰减设置 ThinkRF R5500实时频谱分析仪(RTSA) 允许用户通过三个用户可选设置来控制前端增益。这些设置允许根据用户最终的应用需要在增益,噪声和线性度之间进行折衷。较高的增益设置可用于通过同时放大信号和降低R5500的本底噪声电平来从噪声中提取低电平信号。相反,最低增益设置使R5500可以处理较大的信号,而不会因前端放大器的过度驱动而产生压缩或频谱飞溅。
[测试测量]
内存价格暴跌损害利润 三星Q2盈利前景堪忧
据国外媒体报道,本周五,内存制造商三星电子公司一名高管称,因半导体产品可能出现剧烈亏损,公司4-6月的财务状况不可能比第一季度有所改善。 三星负责投资者关系的高级副总裁Chu Woo-sik称:“与第一季度相比,第二季度难于获得改善。” 当前急剧下跌的DRAM芯片价格将严重损害内存制造企业2季度的盈利水平,这种局面已经使许多内存制造商感到担忧。DRAM芯片广泛用于个人电脑,某些关键芯片的价格已比年初时下跌了70%。 半导体部门占三星季度销售额的三分之一左右,06年4季度三星营业利润的80%来自半导体部门。然而,今年这个比例已降至50%以下,半导体部门的利润率则从31%跌至12%。 许多分析师认为,三星财务状况的好转尚需一个月
[焦点新闻]
密歇根大学开发实时3D运动追踪系统 可取代激光雷达和自动驾驶摄像头
据外媒报道,密歇根大学(University of Michigan)开发了新的实时3D运动追踪系统,可取代激光雷达和自动驾驶应用中的摄像头等成像系统技术。 (图片来源:University of Michigan) 该项技术将透明光探测器与高级神经网络相结合,有望用于自动化制造、生物医学成像和自动驾驶领域。密歇根大学电子与计算机工程副教授Zhaohui Zhong及其团队开发了透明、纳米级、高灵敏度的石墨烯光电探测器,该成像系统利用了这一探测器的优势。 电子与计算机工程专业博士生Dehui Zhang表示,“石墨烯纳米设备和机器学习算法的深入结合,可以在科技领域带来机遇。与其他几种解决方案相比,我们的系统具有计算效
[汽车电子]
GPS车载实时异地监控调度系统
一.行业要求
城市出租车数量近年来增长迅速,但是行业管理的相对落后带来了种种弊病:效率低,费用高,实时性差,调度分散,资源浪费,行业发展受阻。加上近年来出租车抢劫案件显著增加,给驾驶员人身安全和财产造成严重威胁。为了适应城市交通的不断发展和社会治安的改善,出租车的现代化管理已提上议事日程,建立一个统一、高效、通畅、覆盖范围广、带有普遍性的出租车监控调度系统就显得非常有必要。而3G技术(GPS、GIS、GSM)的发展使得建立这样的系统变成可能。
二.系统特点
适应出租车大数量、全天候特点。可记录连续运行路线,方便出租车管理,费用低廉。 提高服务水平,增加效益是首要需求效益与安全需要兼顾,对车辆与司机安全要求有保障
[嵌入式]