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-02 20:24
如何通过实时可变栅极驱动强度更大限度地提高 SiC 牵引逆变器的效率
牵引逆变器是电动汽车 (EV) 中消耗电池电量的主要零部件,功率级别可达 150kW 或更高。牵引逆变器的效率和性能直接影响电动汽车单次充电后的行驶里程。因此,为了构建下一代牵引逆变器系统,业界广泛采用碳化硅 (SiC) 场效应晶体管 (FET) 来实现更高的可靠性、效率和功率密度。 图 1 所示的隔离式栅极驱动器集成电路 (IC) 提供从低电压到高电压(输入到输出)的电隔离,驱动逆变器每相的高边和低边功率模块,并监测和保护逆变器免受各种故障的影响。根据汽车安全完整性等级 (ASIL) 功能安全要求,栅极驱动器 IC 必须符合 ISO 26262 标准,确保对单一故障和潜在故障的故障检测率分别为 ≥99% 和 ≥90%。
[电源管理]
一种嵌入式系统的内存分配方案
摘要:实时性、可靠性的要求,使得许多嵌入式应用使用自己的内存管理程序。本文探讨嵌入式系统中对内存管理的要求、存在的问题以及可能的解决策略;介绍一种“一次分配,多次使用”的动态内存分配方法,并给出2个例子。
关键词:嵌入式系统 内存管理 一次分配多次使用
1 嵌入式系统中对内存分配的要求
①快速性。嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。例如,VxWorks采用简单的最先匹配如立即聚合方法;VRTX中采用多个固定尺寸的binning方案。
②可靠性。也就是
[工业控制]
瑞萨电子发布全新RZ/T2L工业用MPU 可通过EtherCAT通信实现快速、准确的实时控制
瑞萨电子发布全新RZ/T2L工业用MPU 可通过EtherCAT通信实现快速、准确的实时控制 与其它瑞萨MPU/MCU的软件兼容性让开发人员能够无缝实施可扩展设计 2023 年 3 月 24 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布, 推出一款支持EtherCAT通信协议的全新工业用微处理器(MPU)——RZ/T2L,为工业系统实现高速、精确的实时控制 。RZ/T2L MPU继承了其高端产品RZ/T2M的硬件架构,为快速增长的EtherCAT通信市场带来理想的解决方案。新型MPU提供了交流伺服驱动器、变频器、工业机器人、协作机器人等所需的高速和精确实时处理性能。同时,与RZ/T2M相比芯片尺寸减
[工业控制]
STC12系列单片机的位变量
在51中的位变量包含2类, 一类是特殊功能寄存器中的可位寻址的位,比如EA,TR0等;这部分位在C中通过sbit来特殊声明,比如sbit Beep=P1^0; ; 另一种即为bdata存储模式的位变量。 bdata是布尔变量的存储方式,表示位变量存储在位于单片机内部RAM字节地址0x20~0x2F的16个字节中,每个字节8位,共计16x8=128个可寻址位,位地址从0x00~0x7F。bdata所指只包含这个区域。 其实一般而言不用去特别声明位变量存储模式,比如bit bdata flag; ,在C51中普通的bit变量只能存放在bdata中,所以只需要bit flag这样去定义变量就行了。 它的取值只能是0或1.通
[单片机]
西班牙为巴士车窗配备5G AR显示屏 可实时显示现实世界位置信息
(图片来源:venturebeat.com) 西班牙巴塞罗那是欧洲最吸引人的旅游胜地,是一个文化丰富、建筑精美且历史悠久的城市。据外媒报道,现在,西班牙电信(Telefónica)、MediaPro正与巴塞罗那大都会运输署(TMB)合作,将5G技术和增强现实技术应用于旅游业,为巴士配备了半透明的显示屏。在车辆经过关键旅游地时,该显示屏就会突出显示该旅游地。 该5G增强型旅游试点项目将5G数据与定位服务功能以及一个超大型的AR显示屏结合在一起。当许多公司都致力于将可穿戴眼睛的AR屏幕缩小,让人们可以在现实空间中移动,转头查看信息,该解决方案却允许多个观众同时查看增强型信息。照片和视频显示,导游或附近的用户可以触摸该显示屏,
[汽车电子]
可实时翻译、拍摄最佳相片
人工智能(AI)发展速度愈来愈快,专家估计,到了 2020 年,全球将有超过三分之一的智能型手机会配备 AI 芯片组,提供实时翻译、侦测恶意软件、提供健康照护建议、辨识用户行为等功能。 韩联社报导,科技市调机构 Counterpoint Technology Market Research 20 日发表研究报告指出,2020 年内建 AI 芯片组的智能型手机出货占比,将从 2017 年的区区 3% 一口气跳增至 35%,相当于超过 5 亿支智能手机。 2018 年、2019 年 AI 智能手机出货占比,则分别为 16%、26%。 报告称,2020 年出货的智能手机当中,每三支就会有一支的芯片组,直接具备机器学习和 AI 功
[手机便携]
MSP430FR5969内存分配的问题
cmd文件里的具体内容我就不贴了,大家自己可以看一下。cmd文件主要由两部分构成,一个是MEMORY{};另一个是SECTIONS{} 其中MEMORY{}是定义内部所有寄存器及存储器的地址,在这里大部分内容都是厂家定义好的,一般不能修改。但是咱们今天要改的就是他,当然只能改其中允许该的地方,那就是FRAM的分配问题。根据数据手册里提供的内存分配情况(如下图)我们可以得知,59x9的内存从0x0000开始,一直到0x13FFF。对应着这个图和Cmd文件,我们可以了解内部的地址分配问题,如果做过总线扩展之类的同学肯定对这个不会陌生了,如果没有见过就需要理解一下。其实也很简单,就是对应的地址要对应上就可以了。有一些是固定好的不能变
[单片机]
基于STM32F407的flash内存结构分析
硬件平台:STM32F4 DISCOVERY开发板 型号:MB997A或MB997C 主芯片型号:STM32F405xx, STM32F407xx, STM32F415xx, 或 STM32F417xx 主要参考文档: (1)PM0081 STM32F40xxx and STM32F41xxx Flash programming manual.pdf (2)STM32F407 datasheet.pdf 做为嵌入式方面的开发人员,拿到一个芯片后,我们首先看它的参数指标,有多少多少容量的RAM,多少多少容量的Flash。当然,前提是芯片自带这两个模块。 今天我们只研究Flash的结构:) (一)声明 STM32F405x
[单片机]