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)

  1. 针对你的项目

你的项目 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

相关推荐
想你依然心痛1 小时前
HarmonyOS 6(API 23)实战:打造“光码智学舱“——AI编程学习新范式
学习·ar·ai编程·harmonyos·智能体
LZZ and MYY1 小时前
RTS 在windows和Linux之间ShareMem
linux·运维·服务器
aningx1 小时前
openSUSE Leap 16.0 运行 sunshine 报错的解决方法
linux
爱学习的徐徐1 小时前
Linux 基础IO
linux·服务器
xiaobobo33302 小时前
面向对象:linux内核中函数转数据的用法
linux·面向对象·隔离·函数指针绑定
姓刘的哦2 小时前
C++软件架构设计思路
linux
ModestCoder_2 小时前
windows/ubuntu解决挂梯子但是codex reconnecting五次的问题
linux·windows·ubuntu
禹凕2 小时前
Linux基础——环境
linux·运维·服务器·ubuntu
好好风格2 小时前
【一行代码】查看本机公网 IP
linux·命令行
慧海灵舟3 小时前
鸿蒙南向开发教程 Day 4:OpenHarmony 软件定时器
华为·harmonyos