RK3399驱动开发 | 02 - 使用Linux自带的硬件看门狗驱动(SGM706B)

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RK3399驱动开发 | 02 - 使用Linux自带的硬件看门狗驱动(SGM706B)相关的知识,希望对你有一定的参考价值。

一、SGM706

SGM706是一种集成微处理器的监控装置。 与使用单个集成电路或分立元件的设计相比,这种集成设计具有提高系统稳定性和准确性的优点。 SGM706可以在上电、下电甚至降压断电的情况下进行复位。 当VCC低至1V时,复位输出仍然可以工作。 它还具有低电平主动手动复位(MR)功能。


SGM706提供独立的看门狗监控电路,当电源输入超过1.6s没有切换时,可以激活该功能

当电源故障,电池电量低,或需要监控额外电源时,可以通过SGM706的1.25V阈值检测器实现。

引脚描述如下:

引脚作用
MR手动复位输入引脚
VCC电源引脚
GND电源引脚
PFIPower-Fail Voltage Monitor输入脚,当PFI低于1.25V时,PFO引脚会拉低
PFOPower-Fail Voltage Monitor输出引脚,PFI电平高于1.25V时,PFO会保持高电平
WDI看门狗输入引脚,如果WDI引脚超过1.6s电平没有变化,
RESET复位输出引脚,低电平有效
WDO看门狗输入引脚,如果WDI引脚超过1.6s保持低电平,WDO引脚变为低电平。WDO引脚与RESET的引脚是它没有最小脉冲宽度。一旦VCC比reset引脚电平高,WDO电平立即变高

开发板原理图如下:

当 WATCHDOG_WDI 引脚为低时,将三态门芯片的OE引脚拉低时,三态门未使能,输出引脚Y电平为高阻态,此时看门狗的输入引脚WDI为高阻态,所有看门狗芯片内部定时器清零。

当 WATCHDOG_WDI 引脚为高时,将三态门芯片的OE引脚拉高时,三态门使能,输出引脚Y电平取决于输入引脚A,为高电平或低电平,此时看门狗开始工作,如果WDI引脚电平超过1.6s未变化,则看门狗超时,拉低WDO引脚,使RK3399复位。

二、添加设备树节点

1. 设置引脚复用

2. 添加硬件看门狗节点


描述文档为:Documentation/devicetree/bindings/watchdog/gpio-wdt.txt

三、使能Linux内核硬件看门狗驱动

1. 使能驱动模块编译

Linux内核提供的硬件看门狗驱动为drivers/watchdog/gpio_wdt.c,查看其Makefile:

所以要使能宏定义CONFIG_GPIO_WATCHDOG,才会将编译该驱动模块,在开发板配置文件中将其编译为模块:

CONFIG_GPIO_WATCHDOG=m 

在Device Driver->Watchdog Timer Support中:

四、使用

加载驱动模块:

insmod ./gpio_wdt.ko

可以看到多了看门狗设备节点:

因为设备树中设置了 always-running 属性,所以一旦驱动加载,看门狗模块就会一直运行。

此时如果使能三态门芯片,可以看到看门狗芯片开始工作,系统不会复位。

以上是关于RK3399驱动开发 | 02 - 使用Linux自带的硬件看门狗驱动(SGM706B)的主要内容,如果未能解决你的问题,请参考以下文章

RK3399驱动开发 | 08 - RK3399显示系统详解(基于RK SDK Linux 4.4.194内核)

RK3399驱动开发 | 08 - RK3399显示系统详解(基于RK SDK Linux 4.4.194内核)

RK3399驱动开发 | 11 - RK3399以太网调试(基于linux5.4.32内核)

RK3399驱动开发 | 11 - RK3399以太网调试(基于linux5.4.32内核)

RK3399平台开发系列讲解(内核入门篇)1.48理解linux驱动的设计模型

RK3399平台开发系列讲解(内核入门篇)1.48理解linux驱动的设计模型