你好,飞腾派板卡,跑测openAMP那个demo, 想在主核和从核下分别调用控制芯片的硬件timer,目前从核端已经找到示例函数支持读取和设置timer,请问linux系统下有调用timer的应用示例吗?
或者如果用飞腾派在linux系统下调用芯片的timer做一些操作,有相关的指导资料吗?
你可以使用ARM generic timer,具体指导请参见
https://cloud.tencent.com/developer/article/1518249
https://blog.csdn.net/kkqier/article/details/130879375
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
你好,在飞腾开发板上使用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
好的 感谢回复
登录 后才可以发表评论