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

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è)計公司
亚洲一区二区三区四区国产| 亚洲一区二区中文字幕av | 毛茸茸的阴户在线观看| av 一区二区三区av| 中文乱幕亚洲无套内射| 五月开心婷婷中文字幕| 男人午夜影视在线观看| 日韩电影一区二区在线观看中文字幕| 国产精品天天影视久久| av在线观看亚洲天堂| 91人妻互换一区二区| 超碰免费在线公开97| 啄木乌法国一区二区三区| 日韩精品熟女中文字幕| 伊人亚洲一区二区三区| 国产精品毛片视频一区二区| 日本女优久久精品观看| 国产精品美女自拍视频| 亚洲激情一区在线观看| 国产亚洲精品国产福利久久| 亚洲熟妇人妻一区二区三区| 欧美 日韩一区二区在线| 日韩精品熟女中文字幕| 亚洲综合一区国产精品| 亚洲一区二区视频在线观看免费 | 久久国产精品av在线观看| 三级国产大片在线观看| 天天日天天天干夜夜操| 亚洲中文波霸中文字幕| 亚洲av毛片一区二区| 精品黄色大片不卡国产| 欧美精品日韩中文字幕在| 亚洲一区二区中文字幕av| 一区二区三区深夜福利| 日韩欧美国产综合一区二区| 国产精品久久99一区| 久久久亚洲福利精品午夜| 国产亚洲无线码一区二区| 一区二区三区在线观看淫| 密桃精品一区二区三区在线观看| 男女在线视频网站免费|