首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于Linux的嵌入式系统全程嘿狗策略
来源:本站整理  作者:佚名  2009-05-08 10:54:43




1.2.3 程序运行阶段
    图2为多线程应用程序运行阶段喂狗方法。在主程序中首先创建一个监控线程,它的优先级高于其他线程。监控线程在其他被监控的线程正常工作的情况下,一定时间内对看门狗进行喂狗操作,喂狗操作通过调用Watch—dog驱动来完成。如果某个线程出现故障,监控线程就不执行喂狗操作,也就达到这个线程出现故障时系统自动重启的目的。如果监控线程自身出现故障,不能及时执行喂狗操作,看门狗也自动复位重启。具体做法是,主程序首先启动监控线程,然后依次启动N个被监控的线程,每一线程内都设置一计数器。被监控的线程中首先对线程内的计数器初始化为O,在各个线程主循环中,对相应的计数器执行加1操作。监控任务首先启动看门狗,进入循环。每隔M秒对各线程内的计数器进行检验,在M秒内每隔1 s要对看门狗喂狗,否则系统就会复位重启。查询N个计数器值是否为0,如果全都大于0,则说明对应接受监控的线程正常运行,然后对看门狗喂狗,并将N个计数器值清零。如果有任意一个计数器值为O,检测到对应接受监视的线程出现故障需要重启,这时不对看门狗喂狗,使得系统复位重启。

    以下示例说明在应用中如何调用Watchdog驱动实现喂狗:

   
    总之,在系统不同阶段,由于系统调用和封装程度不同,看门狗的喂狗实现方法也不同:在Bootloader阶段,直接取反中央处理器的GPIO3的状态寄存器;在Linux内核阶段1,采取取反中央处理器的GPIO3的状态寄存器的方法进行;在Linux内核阶段2,采取调用GPIO的驱动的方法进行;在Linux内核阶段3,采取调用Watchdog驱动的方法进行;在应用程序运行阶段,应用程序中的喂狗程序采取调用Watchdog驱动的方法进行,如图3所示。

2 实验结果
    我们在公司研发的智能视频分析器项目中应用了本方法。该分析器采用TI DaVinci系列DSP芯片(TMS320DM6446)为CPU,用Monta Vista Linux作为操作系统。操作系统启动时间约为20~30 s。采用本方法是为了保证系统在全过程中都能得到有效的失效恢复。在振荡波抗扰度、电压波动与闪烁、静电放电、电快速瞬变脉冲群等EMC兼容性测试中,当各强度指标超过设备EMC兼容性设计强度时,系统失效,利用这种方式可以测试本方法在硬件失效时的效果。以静电放电为例,设计放电等级为±6 kV(我们取±7 kV的强度等级),设备上电后,分别在1~30 s内每隔5 s及在120 s处进行静电放电测试,经观察设备都可以即时恢复。
    对软件失效时本方法效果的测试,采用故障植入脚本的主动方式及系统长时间运行的被动方式进行测试。最终结果表明,设备在失效后可即时恢复。
    综上所述,本全程喂狗的方法能确保系统在任一阶段出现软件或硬件故障时都能复位重启。


结 语
    本文提出了一种嵌入式系统全程喂狗策略,包括硬件电路设计和软件实现方法。该方法有如下特点:看门狗电路简单,硬件只需一块看门狗芯片,不需复杂的外围逻辑电路,成本较低;系统全过程启用看门狗,确保系统在任一阶段出现软件或硬件故障都能复位重启,系统可靠性得到提高。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:160,687.50000 毫秒