找回密码
 注册
关于网站域名变更的通知
查看: 300|回复: 2
打印 上一主题 下一主题

在ARM9 + Linux多线程想要精确的定时器,该怎样实现?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-10 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
最近公司有个项目平台是ARM9 + linux, 在开发过程中遇到一个问题: 有一部分CAN通讯,需要250ms定时发送一帧数据包。于是我用select做了一个定时器发送。但是当这个多线程的程序真正跑起来,在接受端进行检测。结果收到的该帧的时间间隔竟然是330ms左右。虽然预先我知道有偏差,但是330的时间间隔确实大大超出了预期!如果用setitimer的话,一是资源少,二是信号如果加入程序中,可能会带来很多不必要的BUG。哪位大神有更好的定时器方法???5 r5 x3 s* Y8 Q7 U$ ^( I. `% W

该用户从未签到

3#
发表于 2019-12-10 19:55 | 只看该作者
select定时器的精度是ms级,即使系统调度会出现延时,不可能延时达到100ms以上,再看测试用例,发送数据并在接收端接收网络数据,因此估计延时时间的误差应该是网络数据发送和接收引起的,所以root cause 不在于定时器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-26 01:26 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表