0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

系统看门狗WDOG1内部WDOG模块介绍

痞子衡嵌入式 来源:痞子衡嵌入式 作者:痞子衡嵌入式 2022-06-13 17:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响

软件看门狗模块(WDOG)在 MCU 应用里可以说是非常基础的功能模块。对于一个产品级的应用程序,如果它没有使能主控内部的看门狗模块,一般都不能算是一个合格的软件设计。有的时候,硬件工程师觉得软件看门狗不可靠,还会在板级设计里再加入外部看门狗电路。总之看门狗对于产品工作稳定性具有很重要的意义。

最近有一个 i.MXRT 客户注意到了芯片手册 System Boot 章节里提及了 WDOG 应用,想使能这个功能,并且要确认该功能真实生效以及评估对后续应用程序的影响。借助客户的问题,我们来细聊下这个话题。

一、WDOG模块简介

首先我们来了解一下 i.MXRT1xxx 系列内部的 WDOG 模块,在i.MXRT1xxx 内部 WDOG 模块一共有三个(WDOG1/2/3),虽然 WDOG 本质上就是个特殊功能定时器,但因为芯片设计时为其赋予的超时触发行为不同,所以其应用场合并不一样。

1.1 系统看门狗WDOG1/2

WDOG1 和 WDOG2 属于系统看门狗,前者用于系统级复位(产生 WDOG_RESET_B_DEB 信号给 SRC 模块)防止系统发生异常,后者用于系统 SNVS 域安全警报(不会产生复位效果)。不过从模块寄存器角度,WDOG1 和 WDOG2 是一样的,因此除了超时触发行为外,它们其余方面特性是一样的:

367c8428-ea22-11ec-ba43-dac502259ad0.png

1. 模块内部两个计数时钟源是固定的,来自 ipg_clk_32k 以及 anatop_xtal32k_clk 。
2. 模块内部 8bit 定时器(Time-Out Counter)用于产生 WDOG_RESET_B_DEB 复位信号,计时精度固定为 0.5 秒,超时可设范围为 0.5 秒到 128 秒。
3. 模块内部定时器(Power Down Counter)用于产生对外输出的复位信号 WDOG_B,其超时时间固定为 16 秒。
4. 模块对外输出的信号最多有三个: WDOG_RST_B_DEB、WDOG_B、WDOG_ANY(仅 WDOG1)。
5. 模块使能信号 WDOGx->WCR[WDE] 可多次设置(并不是一次复位期间仅可 write one once)。
6. 模块配置寄存器与定时器计数值可直接修改。
7. 模块 Time-Out Counter 默认是关闭的,Power Down Counter 默认是开启的。

1.2 内核看门狗WDOG3(4)

WDOG3 有时候又叫 RTWDOG(对于 RT1170,还存在用于默认 CM4 从核的 WDOG4),属于内核看门狗,主要用于复位内核,防止程序陷入死循环。其模块寄存器跟 WDOG1/2 完全不同,更接近于一般的定时器模块设计:

36b4c400-ea22-11ec-ba43-dac502259ad0.png

1. 模块内部计数时钟源有四种选择,Bus clock / LPO clock / INTCLK / ERCLK 。
2. 模块内部 16bit 定时器(Time-Out Counter)用于产生内核复位信号。
3. 模块使能信号 WDOGx->CS[EN] 可多次设置(但是其属于 write-once 属性)。
4. 模块配置寄存器 write-once bits 与定时器计数值需要特殊 unlock 时序才可以修改。
5. 模块 Time-Out Counter 默认是开启的。

二、系统ROM里对WDOG的使用

i.MXRT1xxx 系列芯片上电默认都是先执行系统 BootROM,在 BootROM 里会有对看门狗的处理。默认情况下 BootROM 是不启用看门狗做代码执行守护的,只有当用户烧写了指定的 eFuse 位,看门狗功能才会生效。BootROM 并没有使用默认开启的 WDOG3,而是将其关闭并打开了 WDOG1 作为看门狗。

2.1 看门狗使能

i.MXRT10xx 系列芯片 BootROM 看门狗在 eFuse 里配置如下,包含 eFuse 0x460[21] 使能位与 eFuse 0x6D0[15:13] 超时时间设置。

36e1c9a0-ea22-11ec-ba43-dac502259ad0.png

i.MXRT1160/1170 芯片 BootROM 看门狗在 eFuse 里配置如下,包含 eFuse 0x9A0[15] 使能位与 eFuse 0x9B0[2:0] 超时时间设置,以及多了 eFuse 0x9B0[5:3] 关于 WDOG_B 外部信号脚选择设置。

3710aa72-ea22-11ec-ba43-dac502259ad0.png

当 Fuse 里使能了看门狗功能后,BootROM 对看门狗模块的配置如下:

voidROM_WDOG_init(void)
{
uint16_ttimeout=get_timeout_value_from_fuse();

WDOG1->WCR=(uint16_t)(WDOG_WCR_WT(timeout)
|WDOG_WCR_WDW_MASK
|WDOG_WCR_SRE_MASK
|WDOG_WCR_WDA_MASK
|WDOG_WCR_WDBG_MASK
|WDOG_WCR_SRS_MASK);

WDOG1->WCR|=(uint16_t)WDOG_WCR_WDE_MASK;
}

2.2 看门狗作用

对于 i.MXRT10xx 系列,BootROM 看门狗主要用于 Serial Downloader 分支程序下(SDP 模式 BT_MODE = 2'b01,或者 Device Boot 模式 BT_MODE = 2'bx0 下启动失败进入了 Serial Downloader)检测与主机通讯情况,只要在设置的超时时间里没有通信交互行为,看门狗就会复位整个系统(并不是单次通信就可以的,任意超时时间内都得保持交互)。如果在 Device Boot 模式下能够正常启动程序,则看门狗不会被使能。

对于 i.MXRT1160/1170 系列,BootROM 看门狗不仅在 Serial Downloader 分支程序中有效,其在 Device Boot 模式下(BT_MODE = 2'bx0)也同样被使能了,这样做主要有两个用意:

用意1: 如果因板级电路干扰导致首次启动程序失败,BootROM 正常是直接跳转到了 SDP 模式不会再做启动程序行为。但是使能了看门狗,则在 SDP 模式下等待超时时间后系统复位会重新尝试启动程序,这样不断尝试直到板级干扰消失。

用意2: 如果启动程序成功,BootROM 会直接跳转到目标应用程序,但无法检验目标程序是否能够正常执行。但是使能了看门狗,如果应用程序不对看门狗做有效处理,系统还是会复位回来,这样相当于做了应用程序是否执行的验证。

三、WDOG使能后对i.MXRT开发的影响

现在回到文章开头提到的客户问题,如何判断 BootROM 中 WDOG 已经生效了,这个其实特别简单,在 SDP 模式下插上 USB 线,在资源管理器里观察是不是有 HID 设备每隔一段时间就会重新枚举一次,没错就是 WDOG 捣的鬼。

那么对于应用程序的开发,有什么注意事项呢?对于 i.MXRT10xx 其实没有任何影响,而对于 i.MXRT1160/1170,则必须在应用程序里增加对 WDOG1 的处理。在恩智浦提供的头文件 system_MIMXRT1xxx.c 文件里 SystemInit() 函数中其实有关于看门狗相关代码,默认是将全部的看门狗都关一遍(DISABLE_WDOG=1),这部分代码对于 i.MXRT10xx 程序是可以不做的,但是对于 i.MXRT1160/1170 就必须要做了。

378130e4-ea22-11ec-ba43-dac502259ad0.png

至此,系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响痞子衡便介绍完毕了,掌声在哪里~~~

原文标题:系统看门狗WDOG1在i.MXRT系统启动中的应用及影响

文章出处:【微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2849

    浏览量

    53457
  • 看门狗
    +关注

    关注

    10

    文章

    611

    浏览量

    73218
  • 寄存器
    +关注

    关注

    31

    文章

    5620

    浏览量

    130447
  • 应用程序
    +关注

    关注

    38

    文章

    3346

    浏览量

    60424

原文标题:系统看门狗WDOG1在i.MXRT系统启动中的应用及影响

文章出处:【微信号:pzh_mcu,微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCU独立看门狗和窗口看门狗的区别

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。
    发表于 03-03 09:18 1543次阅读

    RT1170EVKB如何设置CM7和CM4内核来实现它们自己的看门狗外设?

    使用 WDOG1 进行系统复位,那么 CM4 的看门狗应该如何设置以防止意外的代码执行故障?CM4 应该使用 WDOG3/4 还是其他 (EWM)?
    发表于 03-17 07:03

    蓝牙DA14580看门狗定时器的用法分享

    屏蔽看门狗冻结Cortex-M0调试模块,当Cortex-M0在调试过程中停止。可屏蔽中断被用户程序冻结,注意,如果系统不是重新开始的等,SysRAM位于0x20000000,看门狗
    发表于 12-30 10:58

    看门狗介绍

    的 5)独立看门狗是用的内部的大约40KHZ RC振荡器,窗口看门狗是用的系统时钟APB1ENR 1
    发表于 07-30 07:38

    如何解锁和更新看门狗

    看门狗定时器(WDOG)的功能有哪些?如何解锁和更新看门狗?如何测试看门狗
    发表于 01-18 07:30

    Vybrid wdog a5配置为60秒时看到7-15秒wdog-A5超时怎么解决?

    :看到它从 60 秒开始倒计时到 0) 似乎是一个内部时钟,具有方向计算时间的倒计时功能。(黑盒子) 观察: LRU 之间的时间不同(一些 7,其他 15 秒看门狗超时),有时单位“表现”并给出
    发表于 05-10 07:44

    K32L3A60多核看门狗及调试问题如何解决?

    ,我将不胜感激;具体来说,使用看门狗调试多核 MCU 的最佳实践是什么。 当我在没有任何断点的情况下运行时(或者没有附加调试器),一切都按预期工作。 我还计划利用 WDOG1 让 M0+ 核心负责启动它。
    发表于 05-24 07:48

    什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析

    stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗
    的头像 发表于 11-06 11:48 2.9w次阅读
    什么是stm32<b class='flag-5'>看门狗</b>?独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>工作原理解析

    STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

    stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定
    发表于 11-09 17:17 8913次阅读
    STM32<b class='flag-5'>看门狗</b>配置(独立<b class='flag-5'>看门狗</b>IWDG和窗口<b class='flag-5'>看门狗</b>WWDG)

    MCU独立看门狗与窗口看门狗的区别

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多MCU都集成了两个看门狗:独立
    发表于 10-28 20:06 8次下载
    MCU独立<b class='flag-5'>看门狗</b>与窗口<b class='flag-5'>看门狗</b>的区别

    PIC内部看门狗使用总结

    PIC的看门狗是一个系统定时器,使用内部低频31Khz时钟源作为时钟,定时范围为1ms-256s。看门狗的配置步骤如下:通过配置字 配置WD
    发表于 11-16 13:36 9次下载
    PIC<b class='flag-5'>内部</b><b class='flag-5'>看门狗</b>使用总结

    系统看门狗WDOG1在i.MX RT系统启动中的应用及影响

    WDOG1WDOG2属于系统看门狗,前者用于系统级复位(产生WDOG_RESET_B_DEB信
    的头像 发表于 06-09 09:53 2996次阅读

    MIMXRT1176中禁止看门狗操作

    看门狗定时器(WDOG模块是一个独立的定时器,可供系统使用。它提供了一个安全功能,以确保软件按计划执行,并且MCU不会陷入无限循环或执行非预期代码。如果
    的头像 发表于 12-05 09:16 1917次阅读

    STM32中的独立看门狗和窗口看门狗

    和窗口看门狗。 独立看门狗:使用的是外部时钟,即使主频不工作了,看门狗也能正常工作。只要在到达喂狗时间的上限前喂狗即表示程序是正常的,这点和窗口看门狗是有区别的。另外独立
    的头像 发表于 12-22 16:58 3384次阅读

    什么是看门狗,工业路由器看门狗技术的功能优势

    一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端。看门狗技术的核心硬件是看门狗模块,分为硬件看门狗和软件看门狗。▍
    的头像 发表于 03-27 10:16 3525次阅读
    什么是<b class='flag-5'>看门狗</b>,工业路由器<b class='flag-5'>看门狗</b>技术的功能优势