Edit online

测试指南

4 Dec 2024
Read time: 2 minute(s)

准备测试环境

  • 硬件
    • 开发板

    • USB 转串口的线缆

  • 软件
    • PC 端的串口终端软件,用于 PC 和开发板进行串口通信

    • Luban-Lite 自带的 test_hrtimer 命令行工具

使能 test_hrtimer 命令行

Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择打开 test_hrtimer 命令行工具:

Drivers options --->
    Drivers examples --->
        [*] Enable HRTimer driver test command

测试 HRTimer 常用场景

test_hrtimer 命令支持创建两类 Timer:

  • Oneshot 类型定时器(默认):只触发一次超时,然后该 Timer 会被注销,适用于需要一次性触发的任务,例如超时报警、单次事件等。

    示例:启动一个 Oneshot 定时器,例如 hrtime0,超时时间为 2 秒 4 微秒。
    aic /> test_hrtimer -c 0 -s 2 -u 4 -d
    hrtimer0: Create a timer of 2.000004 sec, Oneshot mode
    aic /> 0/0 hrtimer0 timeout callback! Elapsed 2000012 us
  • Period 类型定时器:可以循环触发超时,对应参数 -m period,适用于需要周期性触发的任务,例如心跳包发送、定时数据采集等。

    示例:启动一个 Period 定时器,例如 HRTimer0,超时时间为 3 秒 123 微秒,循环触发 19 次。

    aic /> test_hrtimer -c 0 -s 3 -u 123 -d -m period
    hrtimer0: Create a timer of 3.000123 sec, Period mode
        Will loop 19 times
    aic /> 0/19 hrtimer0 timeout callback! Elapsed 3000129 us
    1/19 hrtimer0 timeout callback! Elapsed 2995773 us
    ...
    19/19 hrtimer0 timeout callback! Elapsed 2995689 us

test_hrtimer 命令的帮助信息如下:

aic /> test_hrtimer -h
Usage: test_hrtimer [options]:
     -m, --mode         mode of timer, oneshot/period
     -c, --channel      the number of hrtimer [0, 2]
     -s, --second       the second of timer (must > 0)
     -u, --microsecond  the microsecond of timer (must > 0)
     -d, --debug        show the timeout log
     -h, --usage

Example: test_hrtimer -m oneshot -c 0 -s 2 -u 3
注意事项:
  1. HRTimer 的精度是微秒级,因此 RTOS 的调度、调试信息输出都会干扰到定时器的精度。上述运行日志中,存在一些误差,属于合理现象。

  2. test_hrtimer 命令默认不打印定时器的超时信息,需要使用 -d 参数打开日志。

  3. Period 定时器示例仅为演示效果,在持续大约 60 秒后会自动停止定时器。