瑞芯微Rockchip开发者社区
直播中

chunhuahua

8年用户 1330经验值
擅长:接口/总线/驱动
私信 关注
[问答]

如何对RK3399 WATCHDOG进行调试呢

如何对RK3399 WATCHDOG进行调试呢?有哪些调试步骤?

回帖(1)

钱一辰

2022-3-8 11:44:17
RK3399 WATCHDOG调试


一、打开kennel中的watchdog的开关


Symbol: WATCHDOG [=y]
Type  : boolean
Prompt: Watchdog Timer Support
    Location:
(1) -> Device Drivers
    Defined at drivers/watchdog/Kconfig:6

打开以上配置后,deconfig会出现以下配置:


CONFIG_WATCHDOG=y
CONFIG_DW_WATCHDOG=y

编译SDK,即可在/dev下看到watchdog设备文件


二、watchdog的使用


应用操作 /dev/watchdog 节点来控制watchdog,示例如下:


int main(void)
{
    int fd = open("/dev/watchdog", O_WRONLY);                //通过open来启动watchdog
    int ret = 0;
    if (fd == -1) {
        perror("watchdog");
        exit(EXIT_FAILURE);
    }
    while (1) {
        ret = write(fd, "", 1);                                        //通过write来喂狗
        if (ret != 1) {
            ret = -1;
            break;
        }
        sleep(10);
    }
    close(fd);
    return ret;
}

关于 close():




  • 正常情况下 close() ,不再喂狗,watchdog会自动重启。

    echo A > /dev/watchdog , 这里写入的是除大写V以外的任意字符。
  • write(fd, “V”, 1); 再 close() ,写入大写V,内核继续喂狗,系统不会自动重启。

    echo V > /dev/watchdog
  • 配置宏 CONFIG_WATCHDOG_NOWAYOUT ,重复步奏2,内核不会继续喂狗,系统会被重启。


三、超时时间


假设wdt clock为100MHz,最大超时时间 0x7fffffff / 100MHz = 21秒,如果需要更大的超时,需要调整对应的wdt clock。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分