TIMER使用参考


REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 12/12/2023

    1. 概述

    Opera 共有6组HW Timer,其配置信息在设备树文件arch/arm/boot/dts/pioneer5.dtsi(linux 64bit版本文件在arch/arm/boot/dts/sstar/pioneer5.dtsi)。

    使用HW Timer内核需要开启CONFIG_SSTAR_TIMER编译选项:

    Location:
        -> Device Drivers
            -> Sstar SoC platform drivers (MSTAR_DRIVERS [=y])
    

    2. HW TIMER 接口说明

    HW Timer驱动代码位于drivers/sstar/timer/目录,其对外接口头文件是drivers/sstar/include/mdrv_timer.h。

    2.1. sstar_timer_register

    • 功能

      申请一个空闲的定时器,注册中断

    • 语法

      sstar_timer_handle sstar_timer_register(unsigned int timer_id, enum sstar_timer_mode mode, sstar_timer_callback callback, void *pdata)

    • 参数

      参数 描述
      timer_id 定时器的编号,[0-5]分别对应6个定时器
      mode 定时器模式,0:定时器只定时计数一次;1:定时器循环定时计数
      callback 定时器计时到达后的回调函数
      pdata 回调函数传入的参数
    • 返回值

      指向该定时器的句柄:成功

      NULL:失败

    2.2. sstar_timer_unregister

    • 功能

      停止定时器,释放注册的中断

    • 语法

      int sstar_timer_unregister(sstar_timer_handle handle)

    • 参数

      参数 描述
      handle 定时器句柄
    • 返回值

      0:成功

      非0值:失败

    2.3. sstar_timer_start

    • 功能

      设置定时器定时时间,并让定时器开始计时

    • 语法

      int sstar_timer_start(sstar_timer_handle handle, unsigned long long exp_time)

    • 参数

      参数 描述
      handle 定时器句柄
      exp_time 定时器定时时间,单位ms
    • 返回值

      0:成功

      非0值:失败

    2.4. sstar_timer_stop

    • 功能

      停止定时器计时

    • 语法

      int sstar_timer_stop(sstar_timer_handle handle)

    • 参数

      参数 描述
      handle 定时器句柄
    • 返回值

      0:成功

      非0值:失败

    2.5. sstar_timer_get_current

    • 功能

      获取当前定时器已计时的时间

    • 语法

      int sstar_timer_get_current(sstar_timer_handle handle, unsigned long long *ptime)

    • 参数

      参数 描述
      handle 定时器句柄
      ptime 存放当前定时器已计时的时间值的变量,单位ms
    • 返回值

      0:成功

      非0值:失败

    2.6. sstar_timer_device_count

    • 功能

      获取驱动注册的定时器数量

    • 语法

      int sstar_timer_device_count(void)

    • 返回值

      驱动注册的定时器数量,Opera平台最多6个

    2.7. sstar_timer_find_idle

    • 功能

      返回第一个可用定时器的id号

    • 语法

      int sstar_timer_find_idle(void)

    • 返回值

      可用的定时器id,-1代表没有空闲的定时器可以使用。

    3. 测试demo

    驱动测试UT目录位于driver/sstar/timer/ut/

    demo测试方法:

    1. 在driver/sstar/timer/ut/目录下使用make命令编译出time_ut.ko

    2. 在开发板上insmod time_ut.ko进行测试:

    4. 查看定时器信息

    在/sys/class/mstar/目录下每个定时器都有一个对应目录timer*,该目录下有一个info文件,使用cat命令可以查看对应的定时器信息。

    参数 描述
    id 定时器的id号
    name 定时器名称
    mode 运行模式
    used 是否被注册使用
    start 是否开启计时
    time 定时器的定时时间(ms)
    irq 定时器注册的中断号
    int_count 定时器注册后的中断次数
    clk 定时器内部时钟频率