欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SylixOS高精度時鐘分析

1.Tick工作原理簡介

Tick工作原理其實就是硬件定時器的工作原理,1個系統(tǒng)tick就代表一個定時器硬件中斷。定時器的工作原理很簡單,就是內(nèi)部有一個遞減的計數(shù)器,當(dāng)減到0時產(chǎn)生一個中斷,如圖 1-1所示:

成都創(chuàng)新互聯(lián)公司是專業(yè)的烏拉特后網(wǎng)站建設(shè)公司,烏拉特后接單;提供網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行烏拉特后網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

SylixOS高精度時鐘分析

圖 1-1定時器工作原理

假設(shè)定時器模塊的輸入頻率是1MHz,系統(tǒng)定義的1S內(nèi)tick數(shù)是100,也就是100Hz,可以計算出遞減計數(shù)器要設(shè)置的值為1MHz/100Hz=10000??梢钥闯鲞f減計數(shù)器相當(dāng)于一個分頻器,輸入端每來一個脈沖,其值就減去1,當(dāng)減到0時產(chǎn)生一個中斷,同時其值自動重載成10000,如此循環(huán)下去。

2.系統(tǒng)獲取時間操作

系統(tǒng)獲取時間相關(guān)接口是基于tick來工作的,但是這是有誤差的,如圖 2-1所示:

SylixOS高精度時鐘分析

圖 2-1系統(tǒng)獲取時間

虛線表示下一個tick中斷還未產(chǎn)生,如果此時來獲取時間,獲取到的時間只是之前tick累計的時間。假設(shè)tick中斷產(chǎn)生時刻和獲取時間那一時刻之間的跨度是4ms,那么獲取的時間就有4ms的誤差,高精度時鐘就是為了消除這種誤差而誕生的。

3.高精度時鐘原理

3.1基本原理

上述誤差產(chǎn)生的根本原因是沒有將tick中斷產(chǎn)生時刻和獲取時間那一時刻之間的跨度更新到時間里去,如果計算出這段時間并加到獲取的時間里去就可以校正獲取的時間了。結(jié)合圖 1-1和圖 2-1,基本的校正原理如下所述:

  • 1個tick時間等價于遞減計數(shù)器的初始值,假設(shè)是10000,也就是說遞減10000次相當(dāng)于過了一個tick時間

  • 用1000 * 1000 * 1000 / 10000得到遞減一次的時間,單位是ns

  • 用計數(shù)器初始值減去獲取時間那一時刻計數(shù)器中的值,就得到了獲取時間時刻計數(shù)器已經(jīng)遞減的次數(shù)

  • 用遞減一次的時間 *遞減的次數(shù),就得到tick中斷產(chǎn)生時刻和獲取時間那一時刻之間的時間跨度

3.2特殊情況

當(dāng)系統(tǒng)是多核時,系統(tǒng)產(chǎn)生一個由CPU0來處理的tick中斷,當(dāng)CPU0還沒有更新整個系統(tǒng)的tick數(shù)時,這時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表示遞減計數(shù)器的初始值,也就是產(chǎn)生1個tick時間的計數(shù)值;Gui64NSecPerCnt7表示遞減一次的時間,但是這個時間被擴(kuò)大了128倍,目的是為了提高計算精度

  • uiDone表示獲取時間時刻計數(shù)器已經(jīng)遞減的次數(shù),uiCntCur表示獲取時間時刻計數(shù)器當(dāng)前值

  • if (rSRCPND & BIT_TIMER4)用于特殊情況的判斷,條件成立表示系統(tǒng)的tick數(shù)還沒來得及更新,不成立表示系統(tǒng)的tick數(shù)已經(jīng)被更新

  • 當(dāng)uiCntCur=0時,表示tick中斷剛剛產(chǎn)生,這時uiDone就已經(jīng)代表一個tick的計數(shù)值,所以就無需再加上一個tick的計數(shù)值了

  • 最后將修正后的時間賦值給tv_nsec成員

網(wǎng)站題目:SylixOS高精度時鐘分析
轉(zhuǎn)載源于:http://aaarwkj.com/article24/pjcoce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號App設(shè)計、全網(wǎng)營銷推廣、建站公司、用戶體驗軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
亚洲奇米精品一区二区| 啊啊…嗯嗯…用力免费观看视频| 杨幂一区二区在线观看| 国产亚洲精品视频免费| 少妇熟女视频一区二区三区| 国产一级内射麻豆91| 欧美日韩亚洲国产一区| 激情啪啪啪的免费网站| 91精品人妻互换一区二区| 国产精品麻豆色哟哟av| 欧美成人精品视频在线不卡| 日本不卡一区二区在线播放| 亚洲青涩精品一区二区三区| 成人大片在线免费观看视频| 色婷婷一区二区三区网站| 亚洲欧美激情国产综合久久| 日韩中字在线一区二区| 亚洲视频一区二区精品| 日韩免费av在线观看| 国产日韩一区二区三区电影| 特级特色生活片免费看| 久久精品国产普通话对白| 亚洲欧美综合精品二区| 中文字幕乱码视频日本| 韩日男人女人性生活视频| 日韩欧美亚洲福利在线| 国产精品成人一区二区三| 国产又大又爽免费视频| 国产91在线一区精品| 欧美大吊视频在线观看| 日本的一级片一区二区| 亚洲欧美日韩国产在线一区 | 欧美午夜福利一级高清| 香港精品国产三级国产av | 国产精品免费观看在线国产| 国产女同一区二区三区久久| 日韩一二三区免费不卡视频| 日本成人大片在线观看| 久久99精品国产99久久无| 九九视频在线观看免费专区 | 久久免费看少妇高潮免费|