SylixOS高精度时钟分析
admin
2023-03-15 09:01:13
0

1.Tick工作原理简介

Tick工作原理其实就是硬件定时器的工作原理,1个系统tick就代表一个定时器硬件中断。定时器的工作原理很简单,就是内部有一个递减的计数器,当减到0时产生一个中断,如图 1-1所示:

SylixOS高精度时钟分析

1-1定时器工作原理

假设定时器模块的输入频率是1MHz,系统定义的1S内tick数是100,也就是100Hz,可以计算出递减计数器要设置的值为1MHz/100Hz=10000。可以看出递减计数器相当于一个分频器,输入端每来一个脉冲,其值就减去1,当减到0时产生一个中断,同时其值自动重载成10000,如此循环下去。

2.系统获取时间操作

系统获取时间相关接口是基于tick来工作的,但是这是有误差的,如图 2-1所示:

SylixOS高精度时钟分析

2-1系统获取时间

虚线表示下一个tick中断还未产生,如果此时来获取时间,获取到的时间只是之前tick累计的时间。假设tick中断产生时刻和获取时间那一时刻之间的跨度是4ms,那么获取的时间就有4ms的误差,高精度时钟就是为了消除这种误差而诞生的。

3.高精度时钟原理

3.1基本原理

上述误差产生的根本原因是没有将tick中断产生时刻和获取时间那一时刻之间的跨度更新到时间里去,如果计算出这段时间并加到获取的时间里去就可以校正获取的时间了。结合图 1-1和图 2-1,基本的校正原理如下所述:

  • 1tick时间等价于递减计数器的初始值,假设是10000,也就是说递减10000次相当于过了一个tick时间

  • 1000 * 1000 * 1000 / 10000得到递减一次的时间,单位是ns

  • 用计数器初始值减去获取时间那一时刻计数器中的值,就得到了获取时间时刻计数器已经递减的次数

  • 用递减一次的时间 *递减的次数,就得到tick中断产生时刻和获取时间那一时刻之间的时间跨度

3.2特殊情况

当系统是多核时,系统产生一个由CPU0来处理的tick中断,当CPU0还没有更新整个系统的tick数时,这时CPU1来获取时间,按照基本原理的计算之后还要加上一个tick的时间才是正确的。

4.代码展示

程序清单 4-1

VOID bspTickHighResolution (struct timespec *ptv)

{

REGISTER UINT32 uiCntCur, uiDone;

 

uiCntCur = (UINT32)timerGetCnt(4);

uiDone = GuiFullCnt - uiCntCur;

 

/*

*检查是否有 TICK中断请求

*/

if (rSRCPND & BIT_TIMER4) {

/*

*这里由于 TICK没有及时更新,所以需要重新获取并且加上一个 TICK的时间

*/

uiCntCur = (UINT32)timerGetCnt(4);

uiDone = GuiFullCnt - uiCntCur;

 

if (uiCntCur != 0) {

uiDone += GuiFullCnt;

}

}

 

ptv->tv_nsec += (LONG)((Gui64NSecPerCnt7 * uiDone) >> 7);

if (ptv->tv_nsec >= 1000000000) {

ptv->tv_nsec -= 1000000000;

ptv->tv_sec++;

}

}

  • GuiFullCnt表示递减计数器的初始值,也就是产生1tick时间的计数值;Gui64NSecPerCnt7表示递减一次的时间,但是这个时间被扩大了128倍,目的是为了提高计算精度

  • uiDone表示获取时间时刻计数器已经递减的次数,uiCntCur表示获取时间时刻计数器当前值

  • if (rSRCPND & BIT_TIMER4)用于特殊情况的判断,条件成立表示系统的tick数还没来得及更新,不成立表示系统的tick数已经被更新

  • uiCntCur=0时,表示tick中断刚刚产生,这时uiDone就已经代表一个tick的计数值,所以就无需再加上一个tick的计数值了

  • 最后将修正后的时间赋值给tv_nsec成员

相关内容

热门资讯

凤凰女记者战地日记丨这哪里还算... 【编者按】这是凤凰卫视驻伊朗记者李睿的战地日记。她身处德黑兰,既是战争的亲历者,也是观察者。在她的日...
中国发布禁令,禁止美国制裁中国... 2026年4月24日美国发布公告,把中国5家石化企业列入制裁名单,理由是参与或协助伊朗的石油交易,引...
电力系统母线安全保护领域取得关... (来源:中国电力新闻网) 转自:中国电力新闻网 近日,山西铝业自主研发的《弧光保护系统安装优化方法、...
第三届“探索雅安·阅见美好”阅... 近日,由雅安市图书馆主办的第三届“探索雅安·阅见美好”阅读打卡活动在市区三雅园及雅安市图书馆开展。 ...
实验型真空冷冻干燥机选型指南:... 导语:实验型真空冷冻干燥机作为科研、高校及企业研发环节的关键设备,其性能稳定性直接影响物料干燥效率与...
丁薛祥调研华为芯片基础技术研究... 5月8日晚,中央电视台《新闻联播》播出了一则重量级画面:中共中央政治局常委、国务院副总理丁薛祥到访华...
王自如公布智能指环项目 售价或... 【CNMO科技消息】5月9日,据CNMO科技了解,王自如近日通过视频展示其研发的智能指环产品,该产品...
“190元榴莲遭仅退款”商家直... 近日,河南濮阳一销售冷冻榴莲果肉商家在网络平台发视频称,自家生意遭遇买家恶意“仅退款”。虽然售卖榴莲...
一名中国公民被印度边防部队拘捕... 近日,一名在尼泊尔的中国公民在尼泊尔、印度边境地区因误入印境内被印边防部队拘捕。驻加尔各答总领馆再次...
凤凰直击东盟峰会:菲方推海事中... 5月8日,第48届东盟峰会落幕。菲律宾提出设立“东盟海事中心”的倡议,成为本届峰会焦点之一。菲律宾总...