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

相关推荐
halazi1002 小时前
WSL 安装与 Ubuntu 24.04 配置使用指南
linux·运维·ubuntu·wsl
Lanren的编程日记2 小时前
Flutter 鸿蒙应用权限管理功能实战:标准化权限申请与状态管控,提升用户信任度
flutter·华为·harmonyos
拾贰_C2 小时前
【Ubuntu | Nvidia | driver | installation | commend】
linux·运维·ubuntu
想你依然心痛2 小时前
HarmonyOS 6(API 23)实战:基于 HDS 沉浸光感与悬浮导航打造“光影工作台“多窗口协作系统
microsoft·华为·harmonyos·悬浮导航·沉浸光感
.柒宇.2 小时前
Linux 时间同步服务:Chrony 深度笔记
linux·运维·服务器
Ww.xh2 小时前
OpenHarmony API 9 升级到 API 10 权限与接口变更实战指南
服务器·华为·harmonyos
Strugglingler2 小时前
Linux Device Drivers-第六章 高级字符驱动操作
linux·笔记
青瓦梦滋2 小时前
Linux线程的同步与互斥
linux·c++
Elivs.Xiang2 小时前
centos9中安装Jenkins
linux·运维·centos·jenkins