当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]在嵌入式系统开发中,看门狗(Watchdog Timer, WDT)是一种重要的故障检测和恢复机制。当系统因软件错误、硬件故障或外部干扰而陷入异常状态时,看门狗能够自动触发复位操作,使系统恢复到正常运行状态。本文将深入探讨嵌入式系统中硬件与软件协同复位的看门狗设计策略,并通过实战代码展示其实现方法。


嵌入式系统开发中,看门狗(Watchdog Timer, WDT)是一种重要的故障检测和恢复机制。当系统因软件错误、硬件故障或外部干扰而陷入异常状态时,看门狗能够自动触发复位操作,使系统恢复到正常运行状态。本文将深入探讨嵌入式系统中硬件与软件协同复位的看门狗设计策略,并通过实战代码展示其实现方法。


看门狗的基本原理

看门狗本质上是一个定时器,它会在预设的时间间隔内等待一个特定的信号(通常称为“喂狗”信号)。如果系统正常运行,软件会定期发送喂狗信号来重置看门狗定时器。如果系统因某种原因未能按时发送喂狗信号,看门狗定时器将溢出,并产生一个复位信号,从而重启系统。


硬件看门狗与软件看门狗

在嵌入式系统中,看门狗可以分为硬件看门狗和软件看门狗两种。


硬件看门狗:通常是一个独立的硬件电路,具有自己的时钟源和复位输出。它独立于嵌入式处理器运行,因此即使处理器出现故障,也能可靠地触发复位操作。硬件看门狗具有高可靠性和稳定性,但成本相对较高。

软件看门狗:利用处理器内部的定时器资源来实现。它依赖于软件的正常运行,因此当软件自身出现故障时,软件看门狗可能会失效。然而,软件看门狗具有灵活性高、成本低等优点。

协同复位策略

为了提高嵌入式系统的可靠性和稳定性,可以采用硬件与软件协同复位的看门狗策略。该策略结合了硬件看门狗的高可靠性和软件看门狗的灵活性,能够在系统出现故障时提供有效的复位操作。


具体实现方法如下:


硬件看门狗配置:选择一个合适的硬件看门狗芯片,并根据系统需求配置其定时时间、复位阈值等参数。确保硬件看门狗在上电时即开始工作,并在系统正常运行时定期收到喂狗信号。

软件看门狗实现:在嵌入式软件中使用处理器内部的定时器资源实现软件看门狗。软件看门狗的定时时间应略短于硬件看门狗,以确保在系统软件出现故障时,硬件看门狗能够最终触发复位操作。

协同复位机制:在软件设计中,确保软件看门狗和硬件看门狗能够协同工作。当系统正常运行时,软件看门狗会定期发送喂狗信号给硬件看门狗,从而防止硬件看门狗溢出。如果系统因软件错误而未能按时发送喂狗信号,软件看门狗将首先触发复位操作。如果软件看门狗自身出现故障,硬件看门狗将在其定时时间到达时触发复位操作。

实战代码示例

以下是一个基于STM32微控制器的硬件与软件协同复位看门狗设计示例。


c

#include "stm32f4xx_hal.h"


// 硬件看门狗句柄

IWDG_HandleTypeDef hiwdg;


// 软件看门狗喂狗标志

volatile uint32_t software_watchdog_feed_flag = 0;


void HAL_IWDG_MspInit(IWDG_HandleTypeDef* iwdgHandle) {

   // 初始化硬件看门狗

   if (iwdgHandle->Instance == IWDG) {

       __HAL_RCC_IWDG_CLK_ENABLE();

   }

}


void SystemClock_Config(void) {

   // 系统时钟配置(省略具体实现)

}


void IWDG_Config(void) {

   // 初始化硬件看门狗

   hiwdg.Instance = IWDG;

   hiwdg.Init.Prescaler = IWDG_PRESCALER_64;

   hiwdg.Init.Reload = 4095;

   if (HAL_IWDG_Init(&hiwdg) != HAL_OK) {

       // 初始化错误处理

       Error_Handler();

   }

}


void Software_Watchdog_Feed(void) {

   // 软件看门狗喂狗操作

   software_watchdog_feed_flag = 1;

}


void Software_Watchdog_Handler(void) {

   // 软件看门狗处理函数

   if (software_watchdog_feed_flag == 0) {

       // 软件看门狗超时,触发复位操作

       HAL_NVIC_SystemReset();

   }

   // 重置喂狗标志

   software_watchdog_feed_flag = 0;

}


void HAL_IWDG_Refresh(IWDG_HandleTypeDef* iwdgHandle) {

   // 硬件看门狗喂狗操作

   HAL_IWDG_ReloadCounter(&hiwdg);

}


int main(void) {

   // 初始化HAL库

   HAL_Init();


   // 配置系统时钟

   SystemClock_Config();


   // 初始化硬件看门狗

   IWDG_Config();


   // 主循环

   while (1) {

       // 模拟系统正常工作

       // ...


       // 喂狗操作

       HAL_IWDG_Refresh(&hiwdg);

       Software_Watchdog_Feed();


       // 检查软件看门狗状态

       Software_Watchdog_Handler();


       // 延时(模拟系统负载)

       HAL_Delay(100);

   }

}


void Error_Handler(void) {

   // 错误处理函数

   while (1) {

       // 系统进入错误状态,等待复位

   }

}

结论

硬件与软件协同复位的看门狗设计策略为嵌入式系统提供了高可靠性和稳定性。通过合理配置硬件看门狗和软件看门狗,并在软件设计中实现协同复位机制,可以有效防止系统因软件错误或硬件故障而陷入异常状态。在实际开发中,建议根据具体的应用场景和需求进行详细的配置和测试,以确保看门狗功能的正确性和有效性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭