OpenHarmony的watchdog service频繁崩溃问题分析
内核开启 Watchdog1. 找到你的目标板 defconfig根据你的 SOC/板子在对应的 defconfig 中添加配置。以项目中已有的配置为参考通用框架必须开启CONFIG_WATCHDOGyCONFIG_WATCHDOG_COREySOC 专用驱动按实际硬件选一个# DesignWare WDT常见于 HiSilicon、RK 等CONFIG_DW_WATCHDOGy# ARM SP805ARM 通用CONFIG_ARM_SP805_WATCHDOGy# 软件 watchdog无硬件时的备选CONFIG_SOFT_WATCHDOGy可选项# 防止 watchdog 在 boot 阶段被关闭CONFIG_WATCHDOG_HANDLE_BOOT_ENABLEDy# 不允许关闭 watchdog一旦打开无法停止# CONFIG_WATCHDOG_NOWAYOUT is not set ← 调试阶段保持关闭2. 确认 DTS 中有 watchdog 节点内核驱动需要 DTS 中有对应节点才能 probe例如 DW WDTwatchdog: watchdogxxxxx {compatible snps,dw-wdt;reg 0x0 0xXXXXXXXX 0x0 0x1000;clocks clk_wdt;interrupts GIC_SPI XX IRQ_TYPE_LEVEL_HIGH;};3. 验证是否生效内核启动后ls -la /dev/watchdog* # 应出现 /dev/watchdog 或 /dev/watchdog0dmesg | grep -i watchdog # 看驱动 probe 日志正常 probe 的日志类似[ 2.xxx] WDOG: Starting watchdog clock[ 2.xxx] dw_wdt: Watchdog enabled (timeout30s)4. 针对你的项目你的项目 dp1000_oh_defconfig 中是 # CONFIG_WATCHDOG is not set说明该板子 watchdog 被关闭了。如果目标就是这块板子在其 defconfig 中加上CONFIG_WATCHDOGyCONFIG_WATCHDOG_COREyCONFIG_DW_WATCHDOGy # 根据实际 SOC 选择CONFIG_WATCHDOG_HANDLE_BOOT_ENABLEDy