kennybluezy

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy  发布于  2016-07-20 11:41:30
采纳率 0%
16个问答
4328

海思芯片定时器精度

 
各位好,我现在想通过select实现定时发送数据到解码器解码。结果发现精度好像不能达到需要的精度,比如对60fps的视频,理论上16ms需要发送一帧数据。所以select中定时器精度设为16000us,但实际测试时我在主循环中放置一个select,然后仅通过gettimeofday获取当前时间,发现每次获取到的时间相差约30ms,说明精度达不到16ms。
然后看了下内核,HZ配置为100,意味着定时器精度约为10ms。改成1000后,倒是能够提高精度。但部分驱动工作不正常,比如USB鼠标工作不正常。并且不确定修改后是否会降低系统效率。
所以这里想确定下如何实现精度为1ms的定时器?或者如何定时发送数据到解码器,以播放30帧或者60帧等间隔差距并不是10ms的视频文件?
我来回答
回答2个
时间排序
认可量排序

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-20 17:04:30
认可0
本帖最后由 ngswfx 于 2016-7-20 17:29 编辑

这种定时器,确实很有必要,必须弄一个使用才能解决一些特殊需求。

//我以前有一个PC上的,用着不错。这个arm linux上面的,我还没接触过。不过我感觉和芯片没啥关系,应该就是linux的高精度定时器。

可以参考:

[url]http://blog.csdn.net/waverider2012/article/details/38305785[/url]


这篇也不错:
[url]http://blog.chinaunix.net/uid-317451-id-92667.html[/url]


////不过我一般,用sleep方法达到定时送流需求。

IV_COM_INF_API unsigned long __stdcall GetTickCount()    //ms
{
        struct timeval ts;
        gettimeofday(&ts, NULL);
        return (ts.tv_sec*1000+ts.tv_usec/1000);
}


//////////////////线程里面
long lastDoTimer=0;

while(1)
{
        usleep(1000); //1ms 1毫秒检查一次,符合40ms就干活,估计精度3-5ms应该没问题,实在不行就提升线程的优先级。
                                //这里的1ms最好能大一些,越大,cpu占用率越低。通常需要40ms干活,2-4ms sleep应该就差不多了。要是弄个uslepp(1);也能干活(就是浪费了1000*40次查询计算,cpu有点浪费),改一下GetTickCount,让直接返回us,估计能弄到1ms以内的精度。
。        if((GetTickCount()-lastDoTimer)>=40){
                dosomething();
                lastDoTimer=GetTickCount();
        }
}

////////////////////////////////////////

kennybluezy

0个粉丝

16

问答

0

专栏

0

资料

kennybluezy 2016-07-20 21:13:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=34411&ptid=12021]ngswfx 发表于 2016-7-20 17:04[/url]
这种定时器,确实很有必要,必须弄一个使用才能解决一些特殊需求。

//我以前有一个PC上的,用着不错。这 ...[/quote]

非常感谢。感谢多次指导,谢谢谢谢
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区