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。
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。
举报