首先贴上测试应用程序,如下:

#include <stdio.h>
#include <linux/rtc.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <math.h>
#include <signal.h>typedef unsigned int __u32;
typedef unsigned char __u8;struct watchdog_info {__u32 options;     /* Options the card/driver supports */__u32 firmware_version;   /* Firmware version of the card */__u8  identity[32];   /* Identity of the board */
};#define   WATCHDOG_IOCTL_BASE 'W'#define    WDIOC_GETSUPPORT    _IOR(WATCHDOG_IOCTL_BASE, 0, struct watchdog_info)
#define WDIOC_GETSTATUS     _IOR(WATCHDOG_IOCTL_BASE, 1, int)
#define WDIOC_GETBOOTSTATUS _IOR(WATCHDOG_IOCTL_BASE, 2, int)
#define WDIOC_GETTEMP       _IOR(WATCHDOG_IOCTL_BASE, 3, int)
#define WDIOC_SETOPTIONS    _IOR(WATCHDOG_IOCTL_BASE, 4, int)
#define WDIOC_KEEPALIVE     _IOR(WATCHDOG_IOCTL_BASE, 5, int)
#define WDIOC_SETTIMEOUT        _IOWR(WATCHDOG_IOCTL_BASE, 6, int)
#define WDIOC_GETTIMEOUT        _IOR(WATCHDOG_IOCTL_BASE, 7, int)
#define WDIOC_SETPRETIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 8, int)
#define WDIOC_GETPRETIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 9, int)
#define WDIOC_GETTIMELEFT   _IOR(WATCHDOG_IOCTL_BASE, 10, int)int main(void)
{int fd, retval;unsigned int val = 1;fd = open ("/dev/watchdog0", O_RDWR);if (fd<0) {printf("open /dev/watchdog0 faild!!!\n");return ;}val = 8;retval = ioctl(fd, WDIOC_SETTIMEOUT, &val);if (retval < 0) {printf("ioctl WDIOC_GETTIMEOUT failed\n");return ;}retval = ioctl(fd, WDIOC_GETTIMEOUT, &val);if (retval < 0) {printf("ioctl WDIOC_GETTIMEOUT failed\n");return ;}printf("WDIOC_GETTIMEOUT val1 = %d\n", val);while(1){printf("ping watchdog\n");write(fd, &val, 4);sleep(1);}close(fd);return 0;
}

测试的过程中发现, watchdog超时后,console无法输入, 整个系统感觉卡死一样,没有按照预期出现系统复位, 也就是watchdog的功能是没有实现的。

看到板子上PA3的跳冒是连着的,也就是PA3是低电平, 根据PWRON寄存器的描述, watchdog上电后是关闭的。 于是拔掉PA3跳冒,使得PA3为高电平, 重新测试后发现系统经过一定时间就会reset。 但是另一个问题是linux启动到console需要一定时间,系统在还没有进入console的时候就已经watchdog timeout从而reset了, 在nuc970wdt_probe函数中打印watchdog的两个寄存器,居然有值如下:
probe REG_WDT_CR=782
probe REG_WDT_CTALT=0

猜测是uboot中启动了watchdog。
正确的做法是在uboot中关闭watchdog, 这里偷懒直接在nuc970wdt_probe
函数末尾调用了nuc970wdt_stop(&nuc970_wdd);
这样经过测试系统能够正常进入console, 同时运行测试程序也能测出watchdog功能正常,

nuc972 watchdog 测试相关推荐

  1. 明远智睿MY-IMX6-EK200 Linux-4.1.15测试手册v2.0(3)

    [接上一章节明远智睿MY-IMX6-EK200 Linux-4.1.15测试手册v2.0(2)] 2.16  SPI测试(ECSPI1) [测试说明]:采用自发自收的方式测试. [接口标识]:SPI1 ...

  2. 看门狗(APB watchdog)简介,各个寄存器简介,把看门狗挂到APB总线上,看门狗的验证测试(1)

    看门狗简介: 在系统运行时,可能会在外界的干扰下,出现程序跑飞的情况,看门狗的出现就是为了解决这种故障.看门狗是一个独立于系统的计数器即它的时钟和系统时钟不是同一个时钟,在看门狗时钟的驱动下,计数器会 ...

  3. Pgpool-II + Watchdog 设置与测试

    参考文档: Pgpool-II + Watchdog Setup Example https://www.pgpool.net/docs/latest/en/html/example-configs. ...

  4. 新唐Nuvoton NUC972 看门狗WatchDog(WDT)使用注意事项

      由于新唐系台湾厂商,NUC972 ARM MPU资料不是足够完善,笔者认为,一般ARM处理器的TRM手册至少要3000页以上才能够足以详细描述各种寄存器在不同情况下的功能描述.新唐的TRM只有区区 ...

  5. 在NUC972上移植pjsip库并使用PJSUA测试VOIP电话(二)

    如果有问题,请加QQ群 891339868 进行交流 昨天我已经把pjsip工程相关的库移植好,今天开始使用库里面自带的测试程序进行测试,在这之前需要搭建一个测试环境,我使用的是minsipserve ...

  6. 在NUC972上移植pjsip库并使用PJSUA测试VOIP电话(一)

    如果有问题,请加QQ群 891339868 进行交流 近段时间,突然对VOIP电话有了兴趣,想在NUC972的板子上测试一下VOIP电话,经过查阅资料,了解到VOIP电话是基于sip协议做的,所以对s ...

  7. Ubuntu18.04安装compiz后死机无法进入图形桌面,提示watchdog: BUG: soft lockup - CPU#1 stuck for 22s!如何解决,测试有效!

    现象描述: 安装compiz后没有出现预想的桌面特效效果,本想重启尝试是否生效,结果系统图像桌面直接进不去了 问题定位: 查阅资料许多,定位为compiz本身存在bug,安装后导致gdm3和nvidi ...

  8. 自动驾驶汽车测试在美惹争议,原因为何?

    来源:中国汽车报 摘要:近日,针对美国总统特朗普提出的,汽车制造商需自愿提交他们在公共道路上测试自动驾驶汽车安全报告一事,回应者寥寥,目前只有三家汽车公司响应了上述要求,提交了相关材料. 据美国国家公 ...

  9. python watchdog 同时检测到多个事件_python中watchdog文件监控与检测上传功能

    引言 上一篇介绍完了观察者模式的原理,本篇想就此再介绍一个小应用,虽然我也就玩了一下午,是当时看observer正好找到的,以及还有Django-observer,但Django很久没用了,所以提下这 ...

最新文章

  1. 性能不打折,内存占用减少90%,Facebook提出极致模型压缩方法Quant-Noise
  2. excel不能插入activex控件_办公小技巧:制作更炫酷的Excel下拉菜单
  3. c++test能不能导入keil工程_深度解析AutoML框架——H2O:小白也能使用的自动机器学习平台...
  4. [Java基础]Stream流综合练习
  5. Flume实战监听网络端口
  6. Java SE 6之GUI:让界面更加绚丽(下)
  7. Linux下的whoami命令
  8. SpringMVC学习(六)处理乱码问题
  9. 为什么三表联查查出的数据每条出现好多次_独家解读!京东高可用分布式流数据存储的架构设计...
  10. mysql服务器磁盘空间耗尽_一次服务器磁盘空间不足导致的一系列问题
  11. 《Domain-shift Conditioning using Adaptable Filtering …… for Robust Chinese Spell Check》阅读记录
  12. php 连接新浪云mysql_将php代码部署到新浪云测试(简单方法,包含数据库的连接)...
  13. Windows 2016 修改密码时提示密码不符合规则
  14. 第十四期公关大讲堂:公关稿件写作理念、方法与技巧.
  15. 中层管理者八大绝招 —— 如何培养基层管理者?
  16. 麻雀优化算法 优化XGBoost的参数 python代码
  17. 常用软件性能测试工具
  18. 张一鸣打造“抖音”等现象级产品的秘密:技术深度融合业务,引爆产品创新!
  19. Windows XP自动登录设置方法
  20. emoji mysql 转 unicode_如何转义emoji表情,让它可以存入utf8的数据库?

热门文章

  1. 你家一年级的孩子一般几点睡觉?
  2. Angular cdk 学习之 Scrolling
  3. AMD将推32核服务器芯片;中兴认罚8.9亿美元│IoT黑板报
  4. sikuli python java_python+sikuli环境搭建
  5. 华为HCIE云计算之Fusion Access桌面云
  6. 读取RTKlib生成的pos文件,将XYZ转化为ENU,并绘制RMS柱状图
  7. Windows 2003分区魔术师:Diskpart
  8. 如何写日本留学计划书
  9. unity音乐打击游戏
  10. 家电市场消费现新变化