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 | 电源引脚 |
PFI | Power-Fail Voltage Monitor输入脚,当PFI低于1.25V时,PFO引脚会拉低 |
PFO | Power-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内核)