Edit online

测试指南

4 Dec 2024
Read time: 3 minute(s)

准备测试环境

Watchdog 测试所需的测试环境如下:
  • 硬件:开发板,或 D211 的 FPGA 板
  • 软件
    • PC 端的串口终端软件,用于 PC 和开发板进行串口通信
    • Luban 中带有的 test_wdt 测试工具

打开 test-wdt

在 Luban 的根目录下执行 make menuconfig 命令,打开 test-watchdog 选项:
ArtInChip packages
    Sample code
        [*] test-watchdog

test-wdt 测试

test-wdt 主要用于通过 ioctl 标准接口,查询和设置 Watchdog,具体步骤如下:
  • 在 Shell 中直接运行 test_wdt 即可。

    板子上的 test-wdt 位于 /usr/local/bin/,无需进入该目录。

  • 执行 test_wdt -u 命令可查看帮助信息:

    test_wdt 的帮助信息输出示例如下:
    
    Compile time: Apr 16 2022 14:31:42
    Usage: test_wdt [options]
         -i, --info     Print the status and infomation
         -s, --set-timeout  Set a timeout, in second
         -g, --get-timeout  Get the current timeout, in second
         -p, --set-pretimeout   Set a pretimeout, in second
         -G, --get-pretimeout   Get the current pretimeout, in second
         -k, --keepalive    Keepalive the watchdog
         -u, --usage
    
    Example: test_wdt -c 0 -s 12
    Example: test_wdt -c 1 -s 100 -p 90
  • test_wdt 的使用示例:
    注:
    • 在 WDT V1.0 驱动中,timeout 参数取值范围必需为 [1, 3600],即最小 1 秒且最多 1 小时。
    • 在 Linux 的 Watchdog 子系统中,pretimeout 必须小于 timeout。
    • 初始化和查看状态:

      test_wdt -i
      输出结果示例如下:
      In ArtInChip Watchdog timer watchdog V0, options 0x8180
      Status: 32768
      Boot status: 0
      • -i 选项用于初始化 Watchdog timer 并显示其当前状态。
      • 输出显示了 Watchdog timer 的版本、选项、状态和启动状态。
    • 设置超时时间:
      test_wdt -s 0
      输出结果示例如下:
      wdt_set_timeout()125 - Set chan0 timeout 0, pretimeout 0
      [ERROR] wdt_set_timeout()128 - Failed to set timeout 22[Invalid argument]
      
    • 设置超时时间为 0
      test_wdt -s 0
      输出结果示例如下:
      wdt_set_timeout()125 - Set chan0 timeout 0, pretimeout 0
      [ERROR] wdt_set_timeout()128 - Failed to set timeout 22[Invalid argument]
      
      • 尝试将超时时间设置为 0 秒失败,因为 0 秒为无效值。
    • 获取当前超时时间
      test_wdt -g
      输出结果示例如下:
      wdt_get_timeout()155 - Get chan0 timeout 16
      
      • -g 选项用于获取当前的超时时间。
      • 输出显示当前的超时时间为 16 秒。
    • 设置有效的超时时间,例如 2 秒
      test_wdt -s 2
      输出结果示例如下:
      
      wdt_set_timeout()125 - Set chan0 timeout 2, pretimeout 0
      
    • 再次获取当前超时时间
      test_wdt -g
      输出结果示例如下,显示当前的超时时间为 2 秒:
      wdt_get_timeout()155 - Get chan0 timeout 2
      
    • 设置另一个有效的超时时间,例如 9 秒。
      test_wdt -s 9
      输出结果示例如下,表示成功将超时时间设置为 9 秒:
      
      wdt_set_timeout()125 - Set chan0 timeout 9, pretimeout 0
      
    • 再次获取当前超时时间
      test_wdt -g
      输出结果示例如下,显示当前的超时时间为 9 秒:
      
      wdt_get_timeout()155 - Get chan0 timeout 9
      
    • 设置带预超时时间的超时时间,例如 9 秒
      test_wdt -s 9 -p 4
      输出结果示例如下,表示成功将超时时间设置为 9 秒,并将预超时时间设置为 4 秒。
      
      wdt_set_timeout()125 - Set chan0 timeout 9, pretimeout 4