




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 C/OS-II軟件定時器管理算法分析及改進(jìn)摘要:實(shí)現(xiàn)了一種全集成可變帶寬中頻寬帶低通濾波器,討論分析了跨導(dǎo)放大器-電容(OTAC)連續(xù)時間型濾波器的結(jié)構(gòu)、設(shè)計和具體實(shí)現(xiàn),使用外部可編程電路對所設(shè)計濾波器帶寬進(jìn)行控制,并利用ADS軟件進(jìn)行電路設(shè)計和仿真驗(yàn)證。仿真結(jié)果表明,該濾波器帶寬的可調(diào)范圍為126 MHz,阻帶抑制率大于35 dB,帶內(nèi)波紋小于05 dB,采用18 V電源,TSMC 018m CMOS工藝庫仿真,功耗小于21 mW,頻響曲線接近理想狀態(tài)。關(guān)鍵詞:Butte 1、概述軟件定時器是一種軟件措施,通過它可以使一項(xiàng)特定的任務(wù)在
2、給定的時間段后被執(zhí)行。軟件定時器廣泛地應(yīng)用于內(nèi)核設(shè)計和應(yīng)用程序設(shè)計中,例如,一個進(jìn)程使用軟件定時器等待其他的進(jìn)程完成特定的動作,以使任務(wù)間的操作同步等,因此,對軟件定時器的高效實(shí)現(xiàn)對提升系統(tǒng)的響應(yīng)效率是至關(guān)重要的。作為一種基礎(chǔ)的軟件措施,C/OS-II1的 V2.86版本中增加了對軟件定時器的支持。使用C/OS-II提供的軟件定時器,應(yīng)用程序可以方便地完成特定的定時任務(wù)。本文對C/OS-II的軟件定時器的實(shí)現(xiàn)機(jī)制進(jìn)行簡要分析,然后提出了對C/OS-II的軟件定時器的實(shí)現(xiàn)進(jìn)行改進(jìn)的方法。2、C/OS-II軟件定時器的實(shí)現(xiàn)機(jī)制及算法分析2.1 C/OS-II軟件定時器的核心數(shù)據(jù)結(jié)構(gòu)C/OS-II實(shí)
3、現(xiàn)軟件定時器的核心數(shù)據(jù)結(jié)構(gòu)是 OS_TMR,其定義如下:typedef struct os_tmr INT8U OSTmrType; /*應(yīng)該設(shè)置為OS_TMR_TYPE*/OS_TMR_CALLBACK OSTmrCallback; /*指定時間到達(dá)時要執(zhí)行的回調(diào)函數(shù)*/void *OSTmrCallbackArg; /*傳遞給回調(diào)函數(shù)的參數(shù)*/void *OSTmrNext; /*軟件定時器鏈表管理指針*/void *OSTmrPrev;INT32U OSTmrMatch; /*當(dāng)OSTmrTime = OSTmrMatch 時表示定時器時間到*/INT32U OSTmrDly; /*對于
4、周期性定時器,再次啟動定時器前的延時時間*/INT32U OSTmrPeriod; /*對于周期性定時器,時鐘周期的長度*/INT8U OSTmrOpt; /*選項(xiàng) (如 OS_TMR_OPT_xxx 等) */INT8U OSTmrState; /*定時器的狀態(tài)*/ OS_TMR;每個 OS_TMR結(jié)構(gòu)的實(shí)例定義了一個軟件定時器,多個軟件定時器通過結(jié)構(gòu)中的 OSTmrNext和 OSTmrPrev構(gòu)成一個定時器雙向鏈表。為了提高對軟件定時器的管理效率,C/OS-II引入了“定時器輪”數(shù)據(jù)結(jié)構(gòu),所謂定時器輪,是將定時器實(shí)例中的 OSTmrMatch域的值參照某一個預(yù)先設(shè)計的數(shù)(稱為輪數(shù))進(jìn)行求
5、余運(yùn)算,并根據(jù)求余結(jié)果將定時器進(jìn)行分組以改善對到期定時器的命中率。定時器輪數(shù)缺省配置如下:typedef struct os_tmr_wheel OS_TMR *OSTmrFirst; /*指向第一定時器的指針*/INT16U OSTmrEntries; /*該定時器輪中的定時器項(xiàng)數(shù)*/ OS_TMR_WHEEL;缺省配置下,C/OS-II 定義的輪數(shù)為8,因此,C/OS-II 的定時器輪為如下的一個數(shù)組:OS_TMR_WHEEL OSTmrWheelTbl8;例如,在某一個特定的時刻,此處假設(shè)時刻5,系統(tǒng)中有定時時間為2ticks、4ticks、5ticks、32ticks、161ticks
6、、357ticks的軟件定時器,那么,這些定時器將在時鐘滴答分別為7、9、10、37、166、362時到期,則此時系統(tǒng)的定時器輪的實(shí)例如圖 1所示: 2.2 C/OS-II軟件定時器的處理算法分析C/OS-II對定時器的超時處理在一個稱為“uC/OS-II Tmr”的任務(wù)中進(jìn)行,該任務(wù)是通過信號量 OSTmrSemSignal來激活。基于以上定義的定時器輪,C/OS-II對定時器的處理算法如下:static void OSTmr_Task (void *p_arg)for(;)等待OSTmrSemSignal 信號量并獲得OSTmrWheelTbl 的訪問權(quán);STmrTi
7、me = OSTmrTime+1,并對8 求余后得到對應(yīng)的定時器輪項(xiàng)索引index;for OSTmrWheelTblindex定時器輪中的每一個定時器ptmr,doif (OSTmrTime = ptmr->OSTmrMatch) 執(zhí)行ptmr 軟件定時器中的回調(diào)函數(shù);對于單次定時器,從定時器輪中刪除該時鐘;對于周期性定時器,則重置該定時器的OSTmrMatch 值;釋放對OSTmrWheelTbl 的訪問權(quán);2.3 C/OS-II的定時器處理算法的效率分析 采用上面的例子,對C/OS-II的定時器處理算法效率進(jìn)行一個簡單的分析:在下一次時鐘滴答,也就是時鐘滴答 6時,沒有定時器到期,
8、而 for循環(huán)必須對每個時鐘進(jìn)行檢查,類似的情況還發(fā)生在自時鐘到達(dá) 10以后的多個檢查中。根據(jù)系統(tǒng)中的定時器的數(shù)量,這種無謂的檢查將占用大量的 CPU時間。3、對C/OS-II的定時器管理算法的改進(jìn)3.1 改進(jìn)以后的數(shù)據(jù)結(jié)構(gòu)設(shè)計對C/OS-II的定時器管理算法進(jìn)行改進(jìn)的主要目標(biāo)是:要么不對定時器進(jìn)行檢查,要檢查則一定有定時器到期2。為了達(dá)到這個設(shè)計目標(biāo),需要對C/OS-II的定時器輪進(jìn)行重新設(shè)計。采用同樣的 OS_TMR數(shù)據(jù)結(jié)構(gòu)和 OS_TMR_WHEEL定時器輪結(jié)構(gòu),但是,對定時器輪的每一個項(xiàng)的功能進(jìn)行重新規(guī)劃:(1)定時器輪的第 1項(xiàng)到第 7項(xiàng),即 OSTmrWheelTbl1到 OSTm
9、rWheelTbl7的定時器輪,分別表示將在此后的第 1個時鐘滴答到第 7個時鐘滴答將到期的定時器項(xiàng),此時,每個定時器結(jié)構(gòu)的 OSTmrMatch中的值表示需要經(jīng)過多少個時鐘滴答該定時器項(xiàng)將到期。在同一個定時器輪中的多個定時器項(xiàng)通過 OSTmrNext和 OSTmrPrev指針構(gòu)成雙向鏈表。(2)定時器輪的第 0項(xiàng),表示將至少需要經(jīng)過 8個時鐘滴答才到期的定時器,并通過OSTmrNext和 OSTmrPrev指針將這些定時器構(gòu)成雙向鏈表。 針對上面的同一個例子,按照此規(guī)劃形成的新的定時器輪如圖 2所示: 3.2 改進(jìn)的處理算法對定時器的超時處理仍然在“uC/OS-II T
10、mr”任務(wù)中進(jìn)行,該任務(wù)還是通過信號量OSTmrSemSignal來激活,因此,對于基于該接口調(diào)用的應(yīng)用程序可以不做任何修改即可正常運(yùn)行?;谛乱?guī)劃的定時器輪,對定時器的處理算法如下:static void OSTmr_Task (void *p_arg)STmrTime = 0;for(;)等待OSTmrSemSignal 信號量并獲得OSTmrWheelTbl 的訪問權(quán);STmrTime = OSTmrTime+1;if (OSTmrTime < 8)for OSTmrWheelTblOSTmrTime定時器輪中的每一個定時器ptmr,do執(zhí)行ptmr 軟件定時器中的回調(diào)函數(shù);對于單
11、次定時器,從定時器輪中刪除該定時器;對于周期性定時器,則重置該定時器的OSTmrMatch 值;else / STmrTime = 8for OSTmrWheelTbl0定時器輪中的每一個定時器ptmr,doptmr->OSTmrMatch = ptmr->OSTmrMatch 8;/已經(jīng)經(jīng)過了8 個時鐘滴答;if (ptmr->OSTmrMatch = 0) /到期定時值正好是8 的倍數(shù)執(zhí)行ptmr 軟件定時器中的回調(diào)函數(shù);對于單次時鐘,從定時器輪中刪除該定時器;對于周期性時鐘重置該定時器的OSTmrMatch 值;continue;if (ptmr->OSTmrMa
12、tch < 8) /少于8 個ticks 將到期的定時器根據(jù)ptmr->OSTmrMatch 的值將ptmr 插入到相應(yīng)的OSTmrWheelTbl定時器輪中;STmrTime = 0; /重新計數(shù)滴答;釋放對OSTmrWheelTbl 的訪問權(quán);3.3改進(jìn)的處理算法的效率分析通過對改進(jìn)以后的算法進(jìn)行分析可以發(fā)現(xiàn):在每一個時鐘滴答,如果對應(yīng)的定時器輪的OSTmrFirst指針不為NULL,則在該時鐘滴答有到期的定時器,需要調(diào)用對應(yīng)的回調(diào)函數(shù)。通過對定時器輪進(jìn)行重新規(guī)劃,避免了不必要的定時器到期檢查,從而可節(jié)省 CPU時間,提高了運(yùn)行效率。4、結(jié)束語針對本文提出的改進(jìn)算法,本文在基于 ARM7核的 LP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 探索化學(xué)奧秘的互動游戲?qū)W習(xí)軟件設(shè)計
- 電解鋁固廢的循環(huán)經(jīng)濟(jì)模式與應(yīng)用
- 從全球化視角看工匠精神的跨文化影響與借鑒
- 產(chǎn)業(yè)轉(zhuǎn)型升級的金融支持與投資機(jī)制
- 山東省青島市南區(qū)2025屆物理八年級第一學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 浙江省臺州市三門縣2024年數(shù)學(xué)七年級第一學(xué)期期末綜合測試試題含解析
- 重慶實(shí)驗(yàn)學(xué)校2025屆化學(xué)九上期末教學(xué)質(zhì)量檢測試題含解析
- 新興技術(shù)行業(yè)的職業(yè)發(fā)展趨勢與選擇
- 美食烹飪師職業(yè)生涯發(fā)展路徑
- 2025至2030陶罐行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025年大學(xué)英語四級考試題及答案
- 財政國庫管理培訓(xùn)課件
- 企業(yè)管理考試題目和答案
- 質(zhì)量管理基礎(chǔ)知識培訓(xùn)課件
- 2025年電力系統(tǒng)與自動化專業(yè)考試試題及答案
- 多耐病人的隔離措施及護(hù)理
- 2025年食品安全法律法規(guī)的基礎(chǔ)考試試卷及答案
- 專題02 運(yùn)動的描述-2025-2026學(xué)年人教版《物理》八年級上學(xué)期暑期預(yù)習(xí)自學(xué)講義
- 新生兒腹脹的觀察及護(hù)理
- 3、焊縫(焊道、焊口)寬度計算公式
- 天車工考試考試試題
評論
0/150
提交評論