当前位置:网站首页>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自动进行两次电平反转。
边栏推荐
猜你喜欢
学自动化测试哪个培训机构好 试听课程后就选了这个地方学习
JVS开发套件产品定位
The item 'node.exe' was not recognized as the name of a cmdlet, function, script file, or runnable program.
给你一个大厂面试的机会,你能面试上吗?进来看看!
JVS函数公式使用场景介绍
多线程学习笔记-2.final关键字和不变性
Is the working process of the belt you know the story - actionreducerstore
淀粉与纤维素
Android studio connects to MySQL and completes simple login and registration functions
一文吃透接口调用神器RestTemplate
随机推荐
关于IDEA开发工具的介绍
下课看着文档走回实验室,我重新拾起了遗忘的SQL运算符
Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
Android studio connects to MySQL and completes simple login and registration functions
LeetCode 1161.最大层内元素和:层序遍历
LeetCode - 025. 链表中的两数相加
deeplab implements its own remote sensing geological segmentation dataset
台达PLC出现通信错误或通信超时或下载时提示机种不符的解决办法总结
MySQL row-level locks (row locks, adjacent key locks, gap locks)
Yarn安装配置(vsftpd安装配置)
应用层基础 —— 认识URL
Candence学习篇(11) allegro中设置规则,布局,走线,铺铜
基于Multisim的函数信号发生器–方波、三角波、正弦波[通俗易懂]
5 个开源的 Rust Web 开发框架,你选择哪个?
oracle优化:instr做join条件很慢「建议收藏」
AWS亚马逊云账号注册,免费申请12个月亚马逊云服务器详细教程
MySQL 行级锁(行锁、临键锁、间隙锁)
Mysql环境变量的配置(详细图解)
订song餐系统
3.网页信息解析方法:Xpath与BeautifulSoup