当前位置:网站首页>imx6ull看门狗使用
imx6ull看门狗使用
2022-07-31 11:52:00 【szembed】
一、内部看门狗
1、内部看门狗使用说明
内部看门狗使用WDOG1,
复位输出控制选择WDOG1_B —— MX6UL_PAD_GPIO1_IO08__WDOG1_WDOG_B
注:该引脚正常使用时为高电平,当看门狗超时或系统重启后输出低电平,仅设备重新上电才能够恢复为高电平。


【IMX6ULL参考手册(11/2017 )——59.5.6.2 WDOG_B generation (P4087)】
2、设备树配置
2.1配置输出引脚电器属性
&iomuxc {
pinctrl-names = "default";
……
pinctrl_gpio1_wdg1: gpio1_wdg1_grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO08__WDOG1_WDOG_B 0x30b0
>;
};
……
};
2.2配置看门狗参数
&wdog1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio1_wdg1>;
fsl,ext-reset-output;
timeout-sec = <5>;
status = "okay";
};
fsl,ext-reset-output 开启复位输出
timeout-sec 设置看门狗超时复位时间,上述配置为5S
3、内核配置
Device Drivers --->
[*] Watchdog Timer Support --->
[*] Update boot-enabled watchdog until userspace takes over
<*> IMX2+ Watchdog

4、验证
4.1烧写内核与设备树,重启系统
4.2查看设备

其中/dev/watchdog0便是内部看门狗WDOG1
4.3编写应用测试
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <string.h>
-
#include <unistd.h>
-
#include <fcntl.h>
-
#include <sys/ioctl.h>
-
#include <linux/types.h>
-
#include <linux/watchdog.h>
-
-
#define cst_str2(c1, c2) (((unsigned int)0 | \
-
(char)c2) << 8 | \
-
(char)c1)
-
-
-
int main(int argc, char *argv[])
-
{
-
int fd;
-
int flags;
-
int timeout =
10;
-
int dummy =
0;
-
-
fd =
open(
"/dev/watchdog0", O_WRONLY);
-
-
if (fd ==
-1) {
-
printf(
"Watchdog open fail.\n");
-
exit(
-1);
-
}
-
-
if (argc >
1) {
-
switch (
cst_str2(argv[
1][
0], argv[
1][
1]))
-
{
-
case cst_str2('-','s'):
-
if(argc > 2)
-
timeout =
atoi(argv[
2]);
-
ioctl(fd, WDIOC_SETTIMEOUT, &timeout);
-
printf(
"set timeout : %d\n", timeout);
-
break;
-
case cst_str2('-', 'g'):
-
ioctl(fd, WDIOC_GETTIMEOUT, &timeout);
-
printf(
"get timeout : %d\n", timeout);
-
break;
-
case cst_str2('-', 'e'): //使能看门狗
-
flags = WDIOS_ENABLECARD;
-
ioctl(fd, WDIOC_SETOPTIONS, &flags);
-
printf(
"Watchdog card enabled.\n");
-
break;
-
case cst_str2('-', 'd'): //禁用看门狗
-
flags = WDIOS_DISABLECARD;
-
ioctl(fd, WDIOC_SETOPTIONS, &flags);
-
printf(
"Watchdog card disabled.\n");
-
close(fd);
-
return
0;
-
break;
-
-
default:
-
printf(
"\
-
\t-s set timeout.\n\
-
\t-g get timeout.\n\
-
\t-d to disable.\n\
-
\t-e to enable.\n\
-
");
-
break;
-
}
-
}
-
-
while (
1) {
-
ioctl(fd, WDIOC_KEEPALIVE, &dummy);
//喂狗
-
sleep(
1);
-
}
-
}
二、外部看门狗
1、使用说明
imx6ull外部看门狗使用GPIO控制,利用GPIO输出高低电平保证看门狗芯片(CAT823TTDI-GT3 )不重启。

2、设备树配置
2.1配置输出引脚电器属性
&iomuxc {
pinctrl-names = "default";
……
pinctrl_gpio_wdog: gpio_wdg_grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x010b0
>;
};
……
};
2.2配置看门狗参数
/ {
model = "Freescale i.MX6 ULL 14x14 EVK Board";
compatible = "fsl,imx6ull-14x14-evk", "fsl,imx6ull";
……
watchdog {
compatible = "linux,wdt-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_wdog>;
gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
hw_algo = "toggle";
always-running;
hw_margin_ms = <1000>;
};
……
};
hw_margin_ms 电平反转周期
3、内核配置
Device Drivers --->
[*] Watchdog Timer Support --->
[*] Update boot-enabled watchdog until userspace takes over
<*> Watchdog device controlled through GPIO-line
[*] Register the watchdog as early as possible

4、验证
4.1烧写内核与设备树,重启系统
4.2查看设备

其中/dev/watchdog1便是外部看门狗设备,无需控制,GPIO1_IO01引脚每隔1000ms自动进行两次电平反转。

边栏推荐
- 初始JDBC 编程
- Threading(in thread main)
- ESP8266-Arduino编程实例-MCP9808数字温度传感器驱动
- Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
- 生信周刊第38期
- B/S架构模式的一个整体执行流程
- mysql根据多字段分组——group by带两个或多个参数
- AWS Amazon cloud account registration, free application for 12 months Amazon cloud server detailed tutorial
- 5 个开源的 Rust Web 开发框架,你选择哪个?
- Yarn安装配置(vsftpd安装配置)
猜你喜欢

Is the working process of the belt you know the story - actionreducerstore

Redis学习笔记-3.慢查询和其他高级数据结构

Docker installs canal and mysql for simple testing and achieves cache consistency between redis and mysql

应用层基础 —— 认识URL

普林斯顿微积分读本03第二章--编程实现函数图像绘制、三角学回顾

一文带你了解redux的工作流程——actionreducerstore

Docker build Mysql master-slave replication

Power BI----几个常用的分析方法和相适应的视觉对象

MySQL row-level locks (row locks, adjacent key locks, gap locks)

Summary of several defragmentation schemes for MySQL (to solve the problem of not releasing space after deleting a large amount of data)
随机推荐
Android studio connects to MySQL and completes simple login and registration functions
分布式事务Seata详细使用教程
The most complete phpmyadmin vulnerability summary
JVS开发套件产品定位
Redis学习笔记-3.慢查询和其他高级数据结构
在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据
DCM middleware family welcomes a new member
ESP8266-Arduino编程实例-HDC1008温度湿度传感器驱动
Chrome开发自定义右键菜单实现快速跳转到指定页面
After class, watching the documentation and walking back to the lab, I picked up the forgotten SQL operators again
给你一个大厂面试的机会,你能面试上吗?进来看看!
Yarn安装配置(vsftpd安装配置)
【核心概念】图像分类和目标检测中的正负样本划分以及架构理解
如何正确地把服务器端返回的文件二进制流写入到本地保存成文件
科学论文和学术论文写作
初始JDBC 编程
线程池 ThreadPoolExecutor 详解
Use Excel to read data exposed by SAP ABAP CDS View through ODBC
关于IDEA开发工具的介绍
MySQL row-level locks (row locks, adjacent key locks, gap locks)
