多任务看门狗监控原理和实现

发布者:DreamyEclipse最新更新时间:2023-03-20 来源: elecfans关键字:多任务  看门狗监控  LPC2132 手机看文章 扫描二维码
随时随地手机看文章

嵌入式系统中为提高微型机系统的可靠性和安全性, 常用的方法就是使用“看门狗”。看门狗分硬件看门狗和软件看门狗。硬件看门狗采用“看门狗”电路, 通过定时器, 对微型机任务即“喂狗”在运行时间上加以约束, 任务必须在最大指定时间范围内完成, 否则重启系统。软件看门狗采用处理器内部定时器, 把任务的理论最大运行时间作为时间约束, 如果该任务超过了这个时间跨度, 则强制退出本次任务。上述看门狗采用的是单任务的顺序机制, 容易实现。在多任务系统中情况稍为复杂, 如果每个任务都像单任务系统那样,只要有一个任务正常工作并定期“喂狗”,看门狗定时器就不会溢出, 而只有所有任务都出现问题时, 定时器才会溢出。重庆师范大学叶帮利老师曾在Windows 系统中探讨和解决了这个问题[ 1 ] , 在嵌入式系统中也有人曾谈到过[ 2 ] , 但是却没有具体实现方法的叙述。


文中把u C / O S - I I 操作系统移植到PHILIPS 公司生产的LPC2132 内核中,基于系统的消息机制和优先级权限, 设置了一个优先级最高的任务作为监视器对微型机上运行的所有任务进行监控, 只要一个任务出现故障, 该监视任务就延迟喂狗, 使定时器溢出, 重启系统, 以保障微型机及所有任务处于长期稳定的运行状态。

多任务看门狗监控原理和实现

1 系统概述

1 . 1 硬件和开发环境简介

把uC/OS-II操作系统移植到LPC2132的开发板中。LPC2132 是一个支持实时仿真和跟踪的32 位ARM7TDMI-STM 核微处理器,带64kB 高速FLASH 存储器,4 个通信接口, 2 个32 位定时器, 1 个10 位8 路ADC,2 个硬件接口,47 个GPIO 以及多达9个边沿或电平触发的外部中断, 完全能满足一般应用程序及扩展的需求。


uC/OS-II 是一个抢占式多任务实时操作系统, 其源代码公开、可移植性强, 有着易用性、易开发性和普及性的特点。uC/OS- Ⅱ最多可以管理64 个任务, 这些任务通常都是一个无限循环的函数。在目前的版本中, 保留了优先级为0 、1 、2 、3 、OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2 、O S _ L O W E S T _ P R I O - 1 、OS_LOWEST_PRIO 的任务,所以用户可以同时拥有5 6 个任务, 足以满足用户设计的各种要求。


1 . 2 系统实现的功能

在多任务系统中, 往往希望有一个任务出问题时把该任务重启, 而不重启整个系统, 以达到不影响其他关键任务运行的目的, 在多次重启该任务无效时再重启系统。当系统的主程序出现错误或者系统硬件出现问题时重启系统。基于以上分析设计的看门狗主要实现以下功能。

( 1 ) 当某个任务出现异常时, 由软件看门狗重启该任务。

( 2 ) 当多次重启某一任务失败时, 重启系统。

( 3 ) 当操作系统本身出现异常时, 或者系统硬件出现异常时, 由软件看门狗或者是硬件看门狗重新启动微处理器。


2 多任务看门狗监控原理

结合LPC2132 内置硬件看门狗和uC/O S - Ⅱ操作系统, 设置了一个优先级别最高的任务作为监视器监视各应用任务是否正常运行, 该监视器称为软件看门狗。该任务对每个被监视任务都设定一个计时器, 被监视任务在设定的时间内对对应的定时器定时清零, 称为“喂软狗”。在被监视的任务都正常工作的情况下, 软件看门狗对内置硬件看门狗定时器周期性清零,称为“喂狗”。如果被监视任务群某个任务出现故障, 不能在设置的时间内对软件看门狗“喂软狗”, 与之对应的定时器溢出,系统内核发送指令, 把该任务的堆栈地址指到其起始地址, 复位该任务, 如果在设定的次数内不能够有效启动该任务, 则延时“喂狗”, 硬件看门狗计数器溢出, 重启系统。另外当监视器任务本身出现故障时,也不能及时对看硬件看门狗定时器清零,重启系统。


3 软件实现

3 . 1 应用任务与软件看门狗之间的通信

在多任务软件看门狗与各应用任务间之间进行信息传递时, 每个应用任务都会对监视器发送运行状态消息, 监视器任务也要对每个任务发送消息。在应用任务较多的情况下, 如果采用信箱进行通讯, 会造成大量无效操作, 也使得编程变得繁琐, 所以在监视器任务中采用消息队列来实现与各应用任务间的消息传递, 而在各应用任务中设置两个信箱, 一个用来对监视器消息队列发送消息, 一个用来接收监视器任务消息队列发送的消息。当某个应用任务在执行出错时,调用OSQPost()函数向监视器任务消息队列发送消息, 监视器任务通过调用OSQPend()函数从消息队列读取该消息,然后调用OSMboxPost()函数向该应用任务的消息接收信箱发送代表不同意义的消息,该任务调用OSMboxPend()函数从信箱中读取该消息后执行相应的操作。


3 . 2 多任务软件看门狗的实现

多任务看门狗通过检查各应用任务是否在规定的时间内对其“喂软狗”来监测各任务的运行状态。借助微处理器的定时器中断机制, 为每个任务分配计时单元和运行标志, 由定时中断依据运行标志状态进行独立计时。当系统中的某任务空闲时, 以小于“喂软狗”设定的时间间隔为周期, 周期性地“喂软狗”; 在该任务执行时,预计执行所需的最长耗时, 并用稍大于该最大耗时的时间间隔设置监视器中定时器参数, 同时中断周期性“喂软狗”模块, 启动监视器任务中的定时器倒计数。当该任务正常执行完毕时, 发送信号“喂软狗”,对定时器清零, 复位该任务, 同时恢复周期性“喂软狗”模块; 当该任务执行出现异常时, 不能在设定的时间间隔内对软件看门狗清零, 使得监视器中相应的定时器溢出,监视器任务通过内核服务发送指令, 把该任务的堆栈地址指到其起始地址, 重启该任务, 同时累计其复位次数, 把该任务的计时器清零。


4 结语

结合LPC2132 内置硬件看门狗和uC/O S - Ⅱ操作系统, 设计了一种能够实现多任务管理的软件看门狗, 该看门狗不但能够有效地监视各应用任务, 也能够在不影响其他任务正常运行的情况下, 重启该任务, 直至在多次重启无效时, 才重启系统,达到了相互独立的应用任务之间不会过于牵制的目的。另外该看门狗也能在主程序和硬件出问题时自动重启, 确保系统长时间稳定运行。


关键字:多任务  看门狗监控  LPC2132 引用地址:多任务看门狗监控原理和实现

上一篇:基于GPRS技术的POP3远程升级系统设计
下一篇:lpc54102双核介绍及LPC54102寄存器直接编程

推荐阅读最新更新时间:2024-11-03 03:21

一种基于C51的多任务机制及应用
引言   传统的单片机程序一般采用单任务机制,单任务系统具有简单直观、易于控制的优点。然而由于程序只能按顺序依次执行,缺乏灵活性,只能使用中断函数实时地处理一些较短的任务,在较复杂的应用中使用极为不便。嵌入式多任务操作系统的出现解决了这个问题。在多任务系统中,可以同时执行多个并行任务,任务之间可以相互跳转。但是嵌入式操作系统在提供强大功能的同时,也带来了代码量大、结构复杂、对硬件要求较高、开发难度大且成本高等问题。而很多时候只需要实现简单的多任务操作就可以满足实际需要,本文设计的这种简单的多任务机制,在只增加极少量C语言代码的前提下,不需使用汇编,无需对原本的程序进行大改动,就可以实现多任务操作。   实时操作系统RTOS的核心
[应用]
单片机最简单的多任务模板
/******单片机多任务模板******/ #include reg52.h #define TASK_NUM 2 //任务数量 #define FRE(x) 10000/x //定义频率 unsigned char code s ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管0---9 unsigned int task_delay ;//定义每个任务所需延时 unsigned int i=0; void Init_Timer0(){ EA=1; ET0=1; TR0=1; TMOD=0x02; TH0=TL0=256-100; /
[单片机]
STC11F04单片机定时器模拟多任务程序
用STC单片机的定时器精确定时,做1秒、1分、1小时的定时任务。 由于本人用的是11.0592的晶体,所以时间上不是很精确。如果对定时有精确要求的,请用32.768M的晶振。 串口输出采用 printf函数输出。 #include reg51.h #include stdio.h #include intrins.h //_nop_() unsigned int tick; int hh,mm,ss; //时:分:秒 char putchar (unsigned char i) { ES = 0; //关串口中断 TI = 0; //清零串口发送完成中断请求标志 SBUF = i; w
[单片机]
STC11F04单片机定时器模拟<font color='red'>多任务</font>程序
基于VxWorks的多DSP系统的多任务程序设计
摘要:多DSP信号处理板广泛地运用于工业、军事、通信和医疗等许多方面。本文介绍一种基于VxWorks实时操作系统的ADSP21160的多DSP板设计,以及该板在数字式声纳的实时信号处理系统中的应用,并介绍在VxWorks实时操作系统下的软件算法仿真和实现。 关键词:多DSP阵列 声纳系统 VxWorks 近年来,计算机产品的应用领域越来越广,数字信号处理器的发展表现得尤为明显。DSP芯片制造商和DSP板开发商利用自身的优势不断开发出多DSP结构的产品来满足这种需求。通常的DSP设备是与嵌入式系统相结合,来实时地完成某一特定任务。随着信号采集速度和处理速度的要求越来越高,许多领域都需要进行多处理器运算,其中包括医学、图像处
[应用]
(C与汇编语言)ARM9之LPC2132控制LCD1602显示字符串
GPADIR EQU 0xE0028008 GPASET EQU 0xE0028004 GPACLR EQU 0xE002800C EXPORT xmain AREA Init,CODE,READONLY ENTRY xmain ldr r0,=GPADIR ldr r1,=0x3ff str r1, ;A=out ;===========init1602=================
[单片机]
(C与汇编语言)ARM9之<font color='red'>LPC2132</font>控制LCD1602显示字符串
基于ARM9和μC/OSII高速实时多任务数据采集的智能化设计
引言 随着IT技术、电子技术、通信技术、以及自动控制技术的飞速发展,对工业现场数据的高速实时采集就成为电子产品和工业控制技术发展不可避免的一个环节。 本文针对高速实时多任务数据采集中的多任务实现算法以及实时性、实效性和高速性的要求,提出了基于ARM9和μC/OSII操作系统的智能化设计方案,实现了任务优先级动态调度、系统工作参数动态设定、系统内部软件智能化设计,针对低速外围设备进行了系统优化,并提高了系统可靠性改善了内部任务同步性。 1 整体电路设计 整个采集系统的硬件电路如图1所示。首先利用多路调制电路对12路信号进行调制,这部分包含相应的信号转换、抗干扰、以及初步的信号处理等,使得各路采集信号能够达到ARM9内核对信号采集
[单片机]
基于ARM9和μC/OSII高速实时<font color='red'>多任务</font>数据采集的智能化设计
iOS/iPadOS 16曝光:苹果强化多任务 用起来更爽
  随着WWDC开发者大会的到来,更多有关iOS/iPadOS 16细节被曝光,而从目前情况看,新系统会在多任务方面进行加强。   最新爆料消息称,即将到来的iPadOS 16将会进一步强化 iPad 的多任务能力,其中包括允许用户调整窗口大小。   这项功能是苹果在Github平台上开源的WebKit基础设施代码中挖掘出来的,有望在下月的WWDC 2022大会上宣布。   该代码似乎暗示用户可以在 iPadOS 上完全自由地调整窗口大小。自从苹果将iPad迁移到自己的操作系统以来,许多人一直在寻找这一功能。   来自苹果工程师的单独 Github 更新似乎也证明添加了iPad多任务模式,对于具体的实际表现,有开发者表示,相
[手机便携]
iOS/iPadOS 16曝光:苹果强化<font color='red'>多任务</font> 用起来更爽
一种实时多任务系统软件设计方法
    摘要: 从进程和线程调度的角度出发,介绍了一种规范化的实时多任务系统软件设计方法,提出了“前向分支”的设计原则,给出了完整的系统模型。     关键词: 线程拆分 前向分支 实时多任务 单片机 在机电产品研制开发中,经常要涉及到基于嵌入式系统或基于单片机系统的程序设计。实时多任务是这类系统最基于的要求之一。在实践中通常采用以下两种解决方案:一是在商业化时操作系统的基础上进行二次开发;二是用户自动设计系统软件。前者设计工作量小,设计周期短,系统的设计质量也容易得到保证。但由于商业实时操作系统往往较多地考虑通用性,缺乏灵活性,对于一些特定的应用场合,其性能往往不能令人满意。同时,这种方案还存在着成本高,依
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved