当前位置: 首页 > news >正文

衡山派开发板看门狗(WDT)驱动测试指南:从复位到喂狗的完整功能验证

衡山派开发板看门狗(WDT)驱动测试指南:从复位到喂狗的完整功能验证

大家好,我是衡山派开发板的老用户了。最近在项目里用到了看门狗功能,发现很多刚开始接触Luban-Lite系统的朋友对如何测试看门狗驱动有点摸不着头脑。看门狗是嵌入式系统里防止程序“跑飞”的“保险丝”,测试它是否正常工作至关重要。今天,我就结合自己的经验,带大家手把手走一遍衡山派开发板上看门狗驱动的完整测试流程,从最简单的复位验证到复杂的喂狗、预超时设置,保证你跟着做一遍就能彻底掌握。

1. 测试前的准备工作

在开始“玩转”看门狗之前,咱们得先把测试环境搭建好。这就像做实验前要准备好烧杯和试剂一样,准备工作做扎实了,后面的测试才能顺利进行。

1.1 硬件准备

硬件方面很简单,你只需要:

  • 衡山派开发板:主角就是它。
  • USB转串口线:用于连接开发板和你的电脑。
  • 电脑:用来操作和观察。

1.2 软件配置

软件配置是重点,我们需要在Luban-Lite操作系统中打开看门狗的测试功能。

首先,通过串口终端软件(比如MobaXterm、SecureCRT或者Putty)连接到你的开发板,确保能正常进入系统命令行。

接下来,我们要编译一个包含看门狗测试命令的系统镜像。操作步骤如下:

  1. 进入你的Luban-Lite源代码根目录。

  2. 在终端里输入配置命令:

    scons --menuconfig

    这个命令会打开一个图形化的配置界面。

  3. 在配置界面中,按照下面的路径找到看门狗测试选项并打开它:

    • 首先,进入Drivers options --->
    • 然后,进入Drivers examples --->
    • 最后,找到[*] Enable WDT driver test command这一项,按空格键选中它(前面会出现一个*号)。

    注意:这个步骤是在你的开发主机(通常是电脑)上进行的,目的是修改编译配置,而不是在开发板的串口终端里操作。

  4. 配置完成后,保存并退出配置界面。然后重新编译整个Luban-Lite系统:

    scons
  5. 将新编译好的系统镜像烧录到衡山派开发板上,并重启。

完成以上步骤后,你的系统里就包含了我们接下来要用的reboottest_wdt这两个测试命令了。

2. 复位功能测试:验证看门狗的“终极手段”

看门狗最核心、最终极的功能是什么?就是在系统“卡死”的时候,强制重启它,让系统恢复活力。所以,我们的第一个测试就是验证这个复位功能是否有效。

在衡山派的Luban-Lite驱动中,看门狗模块注册了一个简单的reboot命令。这个命令会直接触发看门狗复位系统,是验证复位通路是否畅通的最直接方法。

测试步骤非常简单:

  1. 确保开发板系统已启动,并进入了命令行界面(通常提示符是aic />)。
  2. 在命令行中直接输入reboot命令,然后按回车。
    aic /> reboot

预期结果与解读:

当你输入命令后,串口终端会立刻打印出重启信息Restarting system ...,紧接着你会看到熟悉的系统启动日志滚动出现,比如DDR初始化、U-Boot启动等。

01-01 08:05:22 I/WDT: Restarting system ... Pre-Boot Program ... (2023-03-02 14:20:30) Going to init DDR2. freq: 504MHz, size: 64MB. DDR2 initialized PBP done U-Boot SPL 2021.10-00008-g13511a4f-dirty (Apr 17 2023 - 13:25:13 +0800) ...

看到这个,就说明看门狗的复位功能是正常的!这个命令虽然简单,但它证明了从软件触发到硬件重启的整个链路是通的,这是所有高级功能的基础。

3. 综合功能测试:深入看门狗的“高级玩法”

通过了基础复位测试,咱们来点更深入的。看门狗不仅仅是个“重启按钮”,它还有很多可配置的参数,比如超时时间、预超时中断、喂狗窗口等。这些功能都通过test_wdt命令来测试。

首先,我们来看看这个命令有哪些“招式”。在命令行输入:

aic /> test_wdt -u

-u参数代表usage,即打印使用帮助。你会看到如下信息:

Usage: test_wdt [-s timeout] [-p pretimeout] [-c clear threshold] [-g] [-k] [-u] -s, --set-timeout Set a timeout, in second -p, --set-pretimeout Set a pretimeout, in second -c, --set-clear threshold Set clear threshold,in second(0~3) -g, --get-timeout Get the current timeout, in second -k, --keepalive Keepalive the watchdog -u, --usage

我来给大家翻译一下每个参数是干嘛的:

  • -s:设置看门狗的超时时间(单位秒)。设置后会立即启动看门狗,如果不在超时前喂狗,系统就会复位。
  • -p:设置预超时时间(单位秒)。这个功能很实用,它会在真正复位前(比如提前3秒)产生一个中断,给你一个“最后处理”的机会,比如保存关键数据。
  • -c:设置清除阈值或喂狗窗口(单位秒,范围0~3)。这是一个安全机制,防止程序错误地、过于频繁地喂狗。设置了之后,只有在超时前的这个时间窗口内喂狗才有效。
  • -g:获取当前设置的超时时间。
  • -k:执行一次“喂狗”操作,重置看门狗计数器。
  • -u:就是显示上面这个帮助信息。

下面,我通过几个典型的测试场景,带你玩转这些功能。

3.1 场景一:测试超时复位

这是最经典的测试,验证看门狗能否在指定时间后复位系统。

  1. 设置并启动看门狗:我们设置一个较短的超时时间,比如3秒。

    aic /> test_wdt -s 3

    执行这条命令后,看门狗计数器就开始从3秒倒计时了。

  2. 什么也不做,等待结果:接下来的3秒内,不要进行任何喂狗操作。你会观察到,大约3秒后,系统自动重启了,串口再次打印启动日志。这说明看门狗超时复位功能完美生效。

踩坑提醒:第一次测试时,建议超时时间设短一点(如3-5秒),快速验证功能。如果设成60秒,你得等一分钟才能看到结果。

3.2 场景二:测试喂狗功能

看门狗不能光会重启,还得能被“安抚”(喂狗)才行。这个测试验证我们能否在超时前阻止复位。

  1. 启动看门狗:同样,先设置一个超时时间,比如10秒,给自己充足的操作时间。

    aic /> test_wdt -s 10
  2. 在超时前喂狗:等待几秒(比如过了5秒),然后执行喂狗命令:

    aic /> test_wdt -k

    执行后,看门狗的计数器会被重置,重新从10秒开始倒计时。

  3. 重复喂狗:你可以多次执行test_wdt -k。只要两次喂狗的间隔小于10秒,系统就永远不会重启。这就模拟了正常程序中,主循环定期喂狗以保证系统正常运行的情况。

3.3 场景三:测试喂狗窗口(清除阈值)

这是一个高级安全特性。想象一下,如果你的程序跑飞了,但错误地进入了一个疯狂喂狗的循环,看门狗就失效了。喂狗窗口就是为了防止这种情况。

  1. 设置喂狗窗口:我们设置清除阈值为3秒。

    aic /> test_wdt -c 3

    这个设置的含义是:只有在超时前的最后3秒内喂狗,才是有效的。提前喂狗会被忽略。

  2. 设计测试:假设超时时间设为10秒(test_wdt -s 10)。

    • 错误操作:在启动看门狗后第2秒就喂狗(-k)。因为此时距离超时还有8秒,不在3秒的窗口内,所以这次喂狗无效。系统仍会在第10秒重启。
    • 正确操作:在启动看门狗后第8秒(或更晚,但在第10秒前)喂狗。此时已进入最后3秒的窗口,喂狗成功,系统不会重启。

这个功能测试需要你更精细地计时,但它对于构建高可靠性的系统非常重要。

3.4 场景四:获取与验证配置

你可以随时使用-g参数来查询当前看门狗的超时时间设置,用于验证你的配置是否生效。

aic /> test_wdt -g

命令会返回当前设置的超时时间值。

4. 测试心得与注意事项

走完整个测试流程,相信你对衡山派看门狗驱动的功能已经有了直观的理解。最后,分享几个我在实际项目中总结的点:

  1. 测试顺序:建议先测reboot,再测test_wdt -s-k,最后再尝试-c(清除阈值)和-p(预超时中断)这些高级功能。由简入繁,理解更深刻。
  2. 超时时间设置:在实际产品代码中,超时时间的设置需要仔细权衡。设得太短,可能因为某个稍长的正常任务导致误复位;设得太长,系统“死”了太久才恢复,可能失去意义。需要根据你的任务最坏执行时间来评估。
  3. 喂狗的位置:在你的应用程序中,喂狗操作(test_wdt -k对应的函数调用)应该放在主循环中,确保系统在正常运行。但要避免在中断服务程序里喂狗,因为即使主程序卡死,中断可能还在响应,这会让看门狗失效。
  4. 预超时的利用-p参数设置的预超时中断是一个很好的“临终关怀”机会。你可以在这个中断服务程序里,把最重要的系统状态、数据紧急保存到非易失性存储器中,这样即使接下来复位了,也能知道上次是怎么“死”的。

好了,关于衡山派开发板看门狗驱动的测试指南就到这里。最好的学习方式就是动手,赶紧连接你的开发板,把上面的命令都敲一遍吧。遇到问题,多看看串口打印的日志,那里面往往藏着答案。

http://www.jsqmd.com/news/473440/

相关文章:

  • 基于ZCU104的Petalinux定制:从XSA到启动镜像的完整构建流程
  • 【ADC延迟剖析】从数字滤波器到系统响应:SAR与ΔΣ ADC的延迟本质与应用抉择
  • 深入剖析Antd Table固定列布局:从空白间隙到完美适配
  • WinCC 条形图详细使用说明
  • LaTeX技巧:高效绘制带自定义符号的学术统计表格
  • 从拉格朗日插值到门限秘密:Shamir方案核心原理解析
  • 基于GD32E230的雨滴传感器模块驱动移植与ADC/GPIO双模式数据采集实战
  • 你知道普通产品经理和AI产品经理有什么区别吗?
  • HY-MT1.5实时翻译场景测试:边缘设备上的低延迟表现
  • 2026最新野草助手下载安装教程(附官网安装包+图文详解) - xiema
  • 51单片机实战:IIC协议驱动24C02实现LED动态控制
  • 一图看懂LangChain、LangGraph、LangSmith全家桶
  • 基于SpringBoot Actuator与Kubernetes的优雅停机策略优化实践
  • 广州市瑞道化工有限公司核心产品 :尼龙成核剂 - 妙妙水侠
  • Cadence Allegro实战:从零到一构建专业PCB设计流程
  • 转行AI产品经理,90%的人第一步就走错了!
  • 高性能图像处理库
  • AutoDL实战指南:1)平台核心优势解析 2)实例创建与配置 3)Trae远程开发环境搭建
  • 【MCP实战】利用端口转发实现Claude Desktop跨平台访问远程Linux服务器
  • 从双目交汇到三维感知:立体视觉中的深度估计实战
  • Gemma-3-12B-IT WebUI开箱即用:一键部署与参数调节指南
  • STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化
  • nnUNet v2 进阶指南:从UKAN模型集成到3D数据实战
  • 38K红外遥控电路设计实战:从发射管选型到接收电路优化
  • 【WinForm实战指南】DataGridView控件:从数据绑定到界面交互的完整实践
  • LN-DETR:多尺度特征融合与通道Transformer在肺结节检测中的协同优化
  • 提升研发效能:用快马一键生成阿里P10推崇的工程化基础框架
  • 深入剖析pip更新报错:从PermissionError到权限管理最佳实践
  • Python实战:卡方检验在医学数据分析中的应用
  • FireRedASR-AED-L开源大模型:1.1B参数本地语音识别技术深度解析