除了优先级的抢占外,主要任务间还通过设置信号量进行二次调度,确保任务的连续正确执行及资源的合理分配,优化程序结构。在主程序引导函数ProgStart( )中,建立了2个二进制信号量和1个互斥信号量:semCON,semSEND,currNodeSemId。semCON信号量用于数据接收任务和监控任务的信息传递,主要是数据的超时重发机制监控;s工字电感器emSEND信号量用于数据采集任务和数据发送任务的信息传递;currNodeSemId信号量用于数据采集监控任务中数据采集的完整性而设立的信号量,避免通讯任务抢占临界资源一体电感以及调用不合理而产生"死锁"现象。其中,2个二进制信号量创建时为空(SEM_EMPTY),处于不可用状态,高优先级任务执行semGive()释放后变为满(SEM_FULL),变为可用状态,供低优先级任务执行semTake()使用。互斥信号量currNodeSemId创建时,为了避免优先级倒置的情况以及为任务提供删除安全,联合使用了SEM_Q_PRIORITY、SEM_INVERS插件电感ION_SAFE、SEM_DELETE_SAFE选项联合使用,使用按位或操作,程序代码如下:
currNodeSemId=semMCreate(SEM_Q_PRIORITY|SEM_INVERSION_SAFE|SEM_DELETE_SAFE)
程序最后执行ProgStop(共模电感器)结束主程序,删除创建的任务并释放信号量资源。因为程序中使用了互斥信号量,并启动了互斥信号量的任务删除保护功能,所以在删除任务之前,必须先成功占有互斥信号量。先删除任务,再删除信号量。
结束语
本文主要讲述了1553B总线测控系统的设计及其在VxWorks下的软件开发过程。实际中,建立了地面最小实验系统,经过联机调试,测控系统运行正常,系统具有很好的实时性和稳定性,达到了预期效果。
X86主板原理图设计的经验总结根据笔者设计的一些经验,把整个系统原理图的详细设计分成了一下几大模块。电源部分设计:通过LDO和DC-DC 开关电源控制芯片实现。如何能够比较高效而且准确的设计出整个系统的电源呢? 根据我自己的经验,
非同小可:如何减小稳压器尺寸 我的妻子喜欢花,每次收到一束简单、小巧的鲜花都能让她满面笑容。鲜花也能让家变得更加温馨,也为我们带来愉悦的心情。
如果减小稳压器尺寸也如此简单就好了。但在大
如何轻松解决电源模块常见的八大故障 摘要:单片机复位、电脑死机、手机蓝屏等生活中常见的现象,其实和电源模块的供电也有着千丝万缕的联系,针对电源供电故障现象,如何定位背后问题?这里将为大家一一揭晓。
目