c - 将 watchdog_set_period 设置为最大值会导致重启

标签 c linux arm device-driver watchdog

我不太了解看门狗定时器在嵌入式环境中的工作原理,我正面临与看门狗定时器相关的问题

其中一个宏中定义的最大超时值为 55,当我们尝试通过 watchdog_set_period 函数设置该值时,我们的板子正在重启

#define Max_time_out 55

watchdog_set_period(int period)//设置看门狗超时计数器

其中句点 = 55

现在是预期的东西还是重启的原因是什么

我们正在将这个周期值写入我们通过文件描述符访问的一些驱动程序。

最佳答案

link在看门狗定时器上声明此描述。

看门狗定时器是一种硬件,可用于自动检测软件异常并在发生任何异常时重置处理器。一般来说,看门狗定时器是基于一个从某个初始值递减计数到零的计数器。嵌入式软件选择计数器的初始值并定期重新启动它。如果计数器在软件重新启动之前达到零,则认为软件出现故障并且处理器的复位信号被断言。处理器(以及它正在运行的嵌入式软件)将重新启动,就好像人类运算符(operator)关闭电源一样。

你没有贴出代码所以我们无法判断具体是什么问题。如果您已经编写了代码,请检查您的代码是否导致了导致看门狗定时器重置的任何问题。

关于c - 将 watchdog_set_period 设置为最大值会导致重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400355/

相关文章:

c - while循环中跳过scanf,导致死循环

objective-c - 是什么 ? : operator

C 调用 chdir 后损坏的双链表

Linux untar 命令将文件名显示为问号

c++ - 使用调试信息编译 OpenCL 内核?

c - While 循环内的优先级

php postgreSQL 错误

c - Bare Metal Arm (AM1808) - 从 Kick 寄存器读取

c - 由于缓冲区溢出,程序未返回预期的 PC 注册表地址

assembly - Cortex M0+ ARM 汇编 - 如何实现与位置无关的循环