TIMER使用参考
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 | 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测试方法:
-
在driver/sstar/timer/ut/目录下使用make命令编译出time_ut.ko
-
在开发板上insmod time_ut.ko进行测试:
4. 查看定时器信息¶
在/sys/class/mstar/目录下每个定时器都有一个对应目录timer*,该目录下有一个info文件,使用cat命令可以查看对应的定时器信息。
参数 | 描述 |
---|---|
id | 定时器的id号 |
name | 定时器名称 |
mode | 运行模式 |
used | 是否被注册使用 |
start | 是否开启计时 |
time | 定时器的定时时间(ms) |
irq | 定时器注册的中断号 |
int_count | 定时器注册后的中断次数 |
clk | 定时器内部时钟频率 |