15 Star 45 Fork 28

Phytium嵌入式软件 / Phytium-Linux-buildroot

 / 详情

Phytium-Linux-buildroot编译出的系统支持timer应用吗?

已完成
任务
创建于  
2024-05-10 09:58

你好,飞腾派板卡,跑测openAMP那个demo, 想在主核和从核下分别调用控制芯片的硬件timer,目前从核端已经找到示例函数支持读取和设置timer,请问linux系统下有调用timer的应用示例吗?
或者如果用飞腾派在linux系统下调用芯片的timer做一些操作,有相关的指导资料吗?

评论 (3)

Delisa 创建了任务
zhuhonglei 任务状态待办的 修改为进行中

你好,在飞腾开发板上使用timer,有开源软件可以直接编译安装使用,我们在飞腾开发板上实测过(以在5.10的linux kernel + Ubuntu下操作为例)
https://source.denx.de/Xenomai/xenomai/-/tree/v3.1.3?ref_type=tags

可以参考 https://source.denx.de/Xenomai/xenomai/-/blob/v3.1.3/testsuite/latency/latency.c?ref_type=tags
这个文件就是 timer的一个典型应用实例
该应用程序主要测试定时器超时后,当前的时间与预期的时间之间的差值,也就是定时器的延时时间是多少。
在该文件里面,创建和使用定时器按照如下步骤操作
第一步:timerfd_create 创建定时器对象函数
函数原型:
int timerfd_create(int clockid, int flags);
作用:
创建一个定时器对象,同时返回一个与之关联的文件描述符

第二步:timerfd_settime 设置新的超时时间函数
函数原型:
nt timerfd_settime(int fd, int flags,const struct itimerspec *new_value,struct itimerspec *old_value);

第三步:read 读取 timefd 超时事件通知
作用:
当定时器超时,read 读事件发生即可读,返回超时次数(从上次调用timerfd_settime()启动开始或上次 read 成功读取开始),它是一个 8 字节的 unit64_t 类型整数,如果定时器没有发生超时事件,则 read 将阻塞若 timerfd 为阻塞模式,否则返回EAGAIN 错误( O_NONBLOCK 模式),如果 read 时提供的缓冲区小于 8 字节将以EINVAL 错误返回。

参考案例:
timerfd 定时器类函数
https://blog.csdn.net/jiu_yue_ya/article/details/130587162

好的 感谢回复

zhuhonglei 任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
9691537 powertree 1678429362
1
https://gitee.com/phytium_embedded/phytium-linux-buildroot.git
git@gitee.com:phytium_embedded/phytium-linux-buildroot.git
phytium_embedded
phytium-linux-buildroot
Phytium-Linux-buildroot

搜索帮助