SylixOS高精度时钟分析

  

  1.蜱虫工作原理简介

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

 SylixOS高精度时钟分析

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

  2 .系统获取时间操作

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

 SylixOS高精度时钟分析

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

  3 .高精度时钟原理

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

<李>

<李>

<李>

<李>

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

  4.代码展示

  ,

  ,

  ,

  ,

<李>

<李>

<李>

<李>

<李>

SylixOS高精度时钟分析