OpenHarmony的watchdog service频繁崩溃问题分析

内核开启 Watchdog

  1. 找到你的目标板 defconfig

根据你的 SOC/板子,在对应的 defconfig 中添加配置。以项目中已有的配置为参考:

通用框架(必须开启):

CONFIG_WATCHDOG=y

CONFIG_WATCHDOG_CORE=y

SOC 专用驱动(按实际硬件选一个):

DesignWare WDT(常见于 HiSilicon、RK 等)

CONFIG_DW_WATCHDOG=y

ARM SP805(ARM 通用)

CONFIG_ARM_SP805_WATCHDOG=y

软件 watchdog(无硬件时的备选)

CONFIG_SOFT_WATCHDOG=y

可选项:

防止 watchdog 在 boot 阶段被关闭

CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

不允许关闭 watchdog(一旦打开无法停止)

CONFIG_WATCHDOG_NOWAYOUT is not set ← 调试阶段保持关闭

  1. 确认 DTS 中有 watchdog 节点

内核驱动需要 DTS 中有对应节点才能 probe,例如 DW WDT:

watchdog: watchdog@xxxxx {

compatible = "snps,dw-wdt";

reg = <0x0 0xXXXXXXXX 0x0 0x1000>;

clocks = <&clk_wdt>;

interrupts = <GIC_SPI XX IRQ_TYPE_LEVEL_HIGH>;

};

  1. 验证是否生效

内核启动后:

ls -la /dev/watchdog* # 应出现 /dev/watchdog 或 /dev/watchdog0

dmesg | grep -i watchdog # 看驱动 probe 日志

正常 probe 的日志类似:

2.xxx\] WDOG: Starting watchdog clock \[ 2.xxx\] dw_wdt: Watchdog enabled (timeout=30s) 4. 针对你的项目 你的项目 dp1000_oh_defconfig 中是 # CONFIG_WATCHDOG is not set,说明该板子 watchdog 被关闭了。如果目标就是这块板子,在其 defconfig 中加上: CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y CONFIG_DW_WATCHDOG=y # 根据实际 SOC 选择 CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

相关推荐
枳实-叶几秒前
【Linux驱动开发】第7天:总线-设备-驱动三大核心模型:通俗讲解+完整流程图
linux·驱动开发·流程图
BS_Li2 分钟前
【Linux网络编程】应用层自定义协议与序列化
linux·服务器·网络
泓博4 分钟前
docker ubuntu源码安装openclaw的常见问题
java·linux·开发语言·ai
小此方5 分钟前
Re:Linux系统篇(十一)工具篇 · 三:三分钟学会gcc/g++编译工具&&初步认识动静态库&&重温编译基本原理
linux·运维·服务器·开发工具
小吴伴学者5 分钟前
Linux TX报文处理流程解析
linux
Random_index8 分钟前
#Harmony篇:@ohos/axios和Navigation(this.stack)
harmonyos
深邃-10 分钟前
【Web安全】-计算机网络协议(2):请求方法,头部字段,DNS协议详解
linux·网络·网络协议·计算机网络·安全·web安全·网络安全
无限进步_1 小时前
【Linux】gcc/g++ 编译:从源码到可执行文件的四个阶段
linux·运维·服务器
原来是猿9 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
AOwhisky10 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术