信號量等待接口定時(shí)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種信號量等待接口定時(shí)方法及裝置。該方法包括:步驟1,在預(yù)定任務(wù)調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對硬件定時(shí)器的定時(shí)時(shí)間、以及信號量等待接口的參數(shù)進(jìn)行設(shè)置;步驟2,通過信號量等待接口獲取信號量,根據(jù)信號量的值判斷信號量是在定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在硬件定時(shí)器中斷之后獲取的中斷信號量;步驟3,在判斷獲取的信號量為正常信號量的情況下,關(guān)閉硬件定時(shí)器,根據(jù)正常信號量進(jìn)行任務(wù)處理,并執(zhí)行步驟1,在判斷獲取的信號量為中斷信號量的情況下,直接執(zhí)行步驟1。借助于本發(fā)明的技術(shù)方案,提高了信號量等待接口定時(shí)的精確度。
【專利說明】 信號量等待接口定時(shí)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是涉及一種信號量等待接口定時(shí)方法及裝置。
【背景技術(shù)】
[0002]實(shí)時(shí)操作系統(tǒng)提供的信號量等待(pend)接口是實(shí)現(xiàn)多任務(wù)同步執(zhí)行的重要策略。在現(xiàn)有技術(shù)中,一般該接口有一個(gè)時(shí)間參數(shù),該時(shí)間參數(shù)說明了該接口等待信號量的時(shí)間長度,即,如果在時(shí)間參數(shù)設(shè)置的時(shí)間長度內(nèi)信號量都沒有到來,該接口將返回一個(gè)等待信號量超時(shí)的返回值,其中,判斷是否等待信號量超時(shí)的行為需要依賴操作系統(tǒng)本身的時(shí)鐘管理系統(tǒng)。
[0003]目前的嵌入式操作系統(tǒng)都采用固定時(shí)間片的方法來維護(hù)操作系統(tǒng)本身的時(shí)鐘,利用中央處理器(Central ProcessingUnit,簡稱為CPU)上的硬件定時(shí)器周期產(chǎn)生一個(gè)中斷,在中斷服務(wù)程序內(nèi)更新系統(tǒng)時(shí)間,并判斷信號量是否等待超時(shí)。從操作系統(tǒng)時(shí)鐘管理機(jī)制來看,用于維護(hù)操作系統(tǒng)時(shí)鐘的硬件定時(shí)器中斷周期,決定了系統(tǒng)定時(shí)的精度。出于對整個(gè)(PU系統(tǒng)性能的考慮,如果操作系統(tǒng)時(shí)鐘的精度太高,勢必需要縮短硬件定時(shí)器的中斷周期,頻繁響應(yīng)中斷對系統(tǒng)性能會帶來很大的影響,因此,嵌入式實(shí)時(shí)操作系統(tǒng)的時(shí)鐘精度不能很聞。
[0004]圖1是現(xiàn)有技術(shù)中多任務(wù)處理使用信號量等待接口的處理流程圖,如圖1所示,包括如下處理:
[0005]步驟I,任務(wù)開始 TaskEntry ();
[0006]步驟2,將調(diào)用的信號量等待接口 Pend (Mbx TimerOut)的時(shí)間參數(shù)設(shè)置為定時(shí)器超時(shí)時(shí)間,其中,Mbx表示該任務(wù)需要等待的信號量,TimerOut表示定時(shí)器超時(shí)時(shí)間;
[0007]步驟3,判斷獲取的信號量Mbx是否超時(shí),如果判斷為是,執(zhí)行步驟4,否則,執(zhí)行步驟5 ;
[0008]步驟4,根據(jù)獲取的信號量Mbx進(jìn)行業(yè)務(wù)處理;
[0009]步驟5,結(jié)束操作,并執(zhí)行步驟2。
[0010]由于操作系統(tǒng)時(shí)鐘本身精度的限制,操作系統(tǒng)提供的信號量等待接口的時(shí)間參數(shù)的精度不能很高。在有些對時(shí)序要求非常高的場合,例如,長期演進(jìn)(Long TermEvolution,簡稱為LTE)通信系統(tǒng)基站側(cè)基帶的處理,協(xié)議任務(wù)運(yùn)行的周期為1ms,那么用于該任務(wù)的等待信號量接口時(shí)間參數(shù)精度至少達(dá)到us級,在信號量沒有及時(shí)到來的情況下退出本子幀的處理,不至于影響下個(gè)子幀的處理,而操作系統(tǒng)的時(shí)鐘精度是無法滿足該要求的。
【發(fā)明內(nèi)容】
[0011]本發(fā)明提供一種信號量等待接口定時(shí)方法及裝置,以解決現(xiàn)有技術(shù)中由于操作系統(tǒng)時(shí)鐘本身精度的限制而導(dǎo)致信號量等待接口定時(shí)精度低的問題。
[0012]本發(fā)明提供一種信號量等待接口定時(shí)方法,包括:[0013]步驟1,在預(yù)定任務(wù)調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對硬件定時(shí)器的定時(shí)時(shí)間、以及信號量等待接口的參數(shù)進(jìn)行設(shè)置;
[0014]步驟2,通過信號量等待接口獲取信號量,根據(jù)信號量的值判斷信號量是在定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在硬件定時(shí)器中斷之后獲取的中斷信號量;
[0015]步驟3,在判斷獲取的信號量為正常信號量的情況下,關(guān)閉硬件定時(shí)器,根據(jù)正常信號量進(jìn)行任務(wù)處理,并執(zhí)行步驟1,在判斷獲取的信號量為中斷信號量的情況下,直接執(zhí)行步驟I。
[0016]本發(fā)明還提供了一種信號量等待接口定時(shí)裝置,包括:
[0017]接口調(diào)用模塊,用于調(diào)用信號量等待接口 ;
[0018]使能模塊,用于在接口調(diào)用模塊調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對硬件定時(shí)器的定時(shí)時(shí)間、以及信號量等待接口的參數(shù)進(jìn)行設(shè)置;
[0019]信號量判斷模塊,用于通過信號量等待接口獲取信號量,根據(jù)信號量的值判斷信號量是在定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在硬件定時(shí)器中斷之后獲取的中斷信
號量;
[0020]處理模塊,用于在信號量判斷模塊判斷獲取的信號量為正常信號量的情況下,關(guān)閉硬件定時(shí)器,根據(jù)正常信號量進(jìn)行任務(wù)處理,并調(diào)用接口調(diào)用模塊,在信號量判斷模塊判斷獲取的信號量為中斷信號量的情況下,直接調(diào)用接口調(diào)用模塊。
[0021]本發(fā)明有益效果如下:
[0022]通過將操作系統(tǒng)提供的信號量等待接口和CPU的硬件定時(shí)器資源配合使用,解決了現(xiàn)有技術(shù)中由于操作系統(tǒng)時(shí)鐘本身精度的限制而導(dǎo)致信號量等待接口定時(shí)精度低的問題,提高了信號量等待接口定時(shí)的精確度,在不增加系統(tǒng)額外負(fù)擔(dān)的情況下,滿足了一些對時(shí)序要求非常嚴(yán)格的應(yīng)用場合。
【專利附圖】
【附圖說明】
[0023]圖1是現(xiàn)有技術(shù)中多任務(wù)處理在使用信號量等待接口時(shí)的處理流程圖;
[0024]圖2是本發(fā)明實(shí)施例的信號量等待接口定時(shí)方法的流程圖;
[0025]圖3是本發(fā)明實(shí)施例的信號量等待接口定時(shí)方法的詳細(xì)處理的流程圖;
[0026]圖4是本發(fā)明實(shí)施例的硬件定時(shí)器中斷服務(wù)程序處理流程圖;
[0027]圖5是本發(fā)明實(shí)施例的信號量隊(duì)列的示意圖;
[0028]圖6是本發(fā)明實(shí)施例的信號量等待接口定時(shí)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0029]為了解決現(xiàn)有技術(shù)中由于操作系統(tǒng)時(shí)鐘本身精度的限制而導(dǎo)致信號量等待接口定時(shí)精度低的問題,在不影響系統(tǒng)整體性能的前提下,本發(fā)明提供了一種信號量等待接口定時(shí)方法及裝置,尤其適用于類似LTE系統(tǒng)等對時(shí)序要求非常高的應(yīng)用場合。以下結(jié)合附圖以及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
[0030]方法實(shí)施例
[0031]根據(jù)本發(fā)明的實(shí)施例,提供了一種信號量等待接口定時(shí)方法,圖2是本發(fā)明實(shí)施例的信號量等待接口定時(shí)方法的流程圖,如圖2所示,根據(jù)本發(fā)明實(shí)施例的信號量等待接口定時(shí)方法包括如下處理:
[0032]步驟201,在預(yù)定任務(wù)調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對硬件定時(shí)器的定時(shí)時(shí)間、以及信號量等待接口的參數(shù)進(jìn)行設(shè)置;其中,信號量等待接口的參數(shù)包括:信號量等待接口的時(shí)間參數(shù)、以及信號量等待接口的信號量參數(shù)。
[0033]優(yōu)選地,在執(zhí)行步驟201之前,需要計(jì)算預(yù)定任務(wù)在本次任務(wù)處理中能夠用于等待信號量的最長時(shí)間。
[0034]在步驟201中,對硬件定時(shí)器的定時(shí)時(shí)間、以及信號量等待接口的參數(shù)進(jìn)行設(shè)置具體包括:1、將硬件定時(shí)器的定時(shí)時(shí)間設(shè)置為預(yù)定任務(wù)等待信號量的最長時(shí)間;2、將信號量等待接口的時(shí)間參數(shù)設(shè)置為永久等待,并將信號量等待接口的信號量參數(shù)設(shè)置為預(yù)定任務(wù)本次任務(wù)處理需要的信號量。
[0035]步驟202,通過信號量等待接口獲取信號量(該信號量為上述預(yù)定任務(wù)等待的信號量),根據(jù)信號量的值判斷信號量是在定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在硬件定時(shí)器中斷之后獲取的中斷信號量;
[0036]執(zhí)行步驟202之前,硬件定時(shí)器(硬件定時(shí)器的中斷服務(wù)程序)在定時(shí)時(shí)間到時(shí)后需要觸發(fā)中斷,將中斷信號量的值設(shè)置為不同于正常信號量的值,并將中斷信號量通過信號量等待接口通知(post)給預(yù)定任務(wù)。
[0037]步驟203,在判斷獲取的信號量為正常信號量的情況下,關(guān)閉硬件定時(shí)器,根據(jù)正常信號量進(jìn)行任務(wù)處理,并執(zhí)行步驟201,在判斷獲取的信號量為中斷信號量的情況下,退出任務(wù)本次循環(huán)的處理,直接執(zhí)行步驟201。
[0038]以下結(jié)合附圖,對本發(fā)明實(shí)時(shí)的上述技術(shù)方案進(jìn)行詳細(xì)說明。
[0039]圖3是本發(fā)明實(shí)施例的信號量等待接口定時(shí)方法的詳細(xì)處理的流程圖,如圖3所示,本發(fā)明實(shí)施例將CPU的硬件定時(shí)器和操作系統(tǒng)提供的信號量等待接口結(jié)合使用,達(dá)到精確判斷信號量等待超時(shí)的目的。具體包括如下處理:
[0040]步驟I,任務(wù)開始TaskEntry (),該任務(wù)在等待信號量之前,首先計(jì)算本次處理能用于等待信號量的最長時(shí)間Ts ;
[0041]步驟2,使能硬件定時(shí)器,并根據(jù)該最長時(shí)間Ts設(shè)置硬件定時(shí)器的定時(shí)時(shí)間(TimeOut);
[0042]步驟3,調(diào)用操作系統(tǒng)提供的信號量等待接口 Pend (Mbx, forever),將該接口的時(shí)間參數(shù)設(shè)置為永久等待(forever),將信號量等待接口的信號量參數(shù)設(shè)置為預(yù)定任務(wù)本次任務(wù)處理需要的信號量(Mbx);
[0043]步驟4,在操作系統(tǒng)的調(diào)度下,CPU開始處理其它多任務(wù)程序,該任務(wù)所等待的信號量有可能在Ts時(shí)間段內(nèi)到來,也有可能在Ts時(shí)間段內(nèi)該信號量沒有到來,如果Ts時(shí)間段內(nèi)該信號量沒有到來,那么硬件定時(shí)器會在Ts時(shí)間后觸發(fā)中斷,post信號量給該任務(wù),硬件定時(shí)器中斷服務(wù)程序處理流程如圖4所示,TimerIsrO為硬件定時(shí)器服務(wù)中斷程序,Post (Mbx)表示通知該信號量。
[0044]無論該任務(wù)所等待的信號量在Ts時(shí)間段內(nèi)到來,或者在Ts時(shí)間段內(nèi)該信號量沒有到來,都會將該任務(wù)激活使其進(jìn)入活動(running)狀態(tài),該任務(wù)將繼續(xù)之后的處理。圖5是本發(fā)明實(shí)施例的信號量隊(duì)列的示意圖,如圖5所示,信號量隊(duì)列中有可能包括:硬件定時(shí)器超時(shí)的中斷信號量、或者正常信號量,因此,任務(wù)根據(jù)信號量的返回值來區(qū)分該信號量到底是任務(wù)所需要的信號量還是超時(shí)中斷post的信號量,根據(jù)這兩種情況決定后續(xù)的處理流程:如果該信號量是該任務(wù)所需要的信號量,執(zhí)行步驟5 ;如果該信號量是硬件定時(shí)器超時(shí)中斷post的信號量,說明該任務(wù)等待所需要的信號量超時(shí),執(zhí)行步驟7 ;
[0045]步驟5,關(guān)閉該硬件定時(shí)器,執(zhí)行步驟6 ;
[0046]步驟6,處理業(yè)務(wù)任務(wù),處理完畢后返回主流程準(zhǔn)備下個(gè)周期的處理;
[0047]步驟7,不對業(yè)務(wù)任務(wù)進(jìn)行處理,直接返回主流程開始下個(gè)周期的處理。
[0048]下面以LTE系統(tǒng)為例,對本發(fā)明實(shí)施例的上述技術(shù)方案進(jìn)行舉例說明。
[0049]LTE基帶協(xié)議業(yè)務(wù)的處理周期為Ims,協(xié)議任務(wù)必須要在第10個(gè)標(biāo)志(symbol)符號中斷到達(dá)之后才能開始處理,任務(wù)能夠容忍等待信號量的時(shí)間最長為0.4ms。根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,在進(jìn)入處理任務(wù)后,首先設(shè)置一個(gè)硬件定時(shí)器,定時(shí)長度設(shè)置為0.4ms,然后調(diào)用操作系統(tǒng)提供的Pend信號量接口,等待時(shí)長設(shè)置為永久等待。判斷pend信號量的值,確定該信號量是來源于第10個(gè)symbol符號中斷post的信號量,或者是硬件定時(shí)器中斷psot的超時(shí)信號量。如果是symbol符號中斷信號量時(shí),表明本子巾貞信號量在規(guī)定時(shí)間內(nèi)到達(dá),可以對本子幀的數(shù)據(jù)進(jìn)行處理;如果是硬件定時(shí)器超時(shí)信號量,表明任務(wù)所需要的信號量已經(jīng)超時(shí),需要退出本子幀的處理,準(zhǔn)備進(jìn)行下個(gè)子幀的處理。
[0050]綜上所述,借助于本發(fā)明實(shí)施例的技術(shù)方案,通過將操作系統(tǒng)提供的信號量等待接口和CPU的硬件定時(shí)器資源配合使用,解決了現(xiàn)有技術(shù)中由于操作系統(tǒng)時(shí)鐘本身精度的限制而導(dǎo)致信號量等待接口定時(shí)精度低的問題,提高了信號量等待接口定時(shí)的精確度,在不增加系統(tǒng)額外負(fù)擔(dān)的情況下,滿足了一些對時(shí)序要求非常嚴(yán)格的應(yīng)用場合。
[0051]裝置實(shí)施例
[0052]根據(jù)本發(fā)明的實(shí)施例,提供了一種信號量等待接口定時(shí)裝置,圖6是本發(fā)明實(shí)施例的信號量等待接口定時(shí)裝置的結(jié)構(gòu)示意圖,如圖6所示,根據(jù)本發(fā)明實(shí)施例的信號量等待接口定時(shí)裝置包括:接口調(diào)用模塊60、使能模塊62、信號量判斷模塊64、以及處理模塊66,以下對本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說明。
[0053]接口調(diào)用模塊60,用于調(diào)用信號量等待接口 ;
[0054]使能模塊62,用于在接口調(diào)用模塊60調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對硬件定時(shí)器的定時(shí)時(shí)間、以及信號量等待接口的參數(shù)進(jìn)行設(shè)置;其中,信號量等待接口的參數(shù)包括:信號量等待接口的時(shí)間參數(shù)、以及信號量等待接口的信號量參數(shù)。
[0055]優(yōu)選地,本發(fā)明實(shí)施例還包括:計(jì)算模塊,用于計(jì)算預(yù)定任務(wù)在本次任務(wù)處理中能夠用于等待信號量的最長時(shí)間。
[0056]使能模塊62具體包括:第一設(shè)置子模塊,用于將硬件定時(shí)器的定時(shí)時(shí)間設(shè)置為預(yù)定任務(wù)等待信號量的最長時(shí)間;第二設(shè)置子模塊,用于將信號量等待接口的時(shí)間參數(shù)設(shè)置為永久等待,并將信號量等待接口的信號量參數(shù)設(shè)置為預(yù)定任務(wù)本次任務(wù)處理需要的信號量。
[0057]上述硬件定時(shí)器具體用于:在定時(shí)時(shí)間到時(shí)后觸發(fā)中斷,將中斷信號量的值設(shè)置為不同于正常信號量的值,并將中斷信號量通過信號量等待接口通知給預(yù)定任務(wù)。
[0058]信號量判斷模塊64,用于通過信號量等待接口獲取信號量,根據(jù)信號量的值判斷信號量是在定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在硬件定時(shí)器中斷之后獲取的中斷 信號量;
[0059]處理模塊66,用于在信號量判斷模塊64判斷獲取的信號量為正常信號量的情況下,關(guān)閉硬件定時(shí)器,根據(jù)正常信號量進(jìn)行任務(wù)處理,并調(diào)用接口調(diào)用模塊60,在信號量判斷模塊64判斷獲取的信號量為中斷信號量的情況下,直接調(diào)用接口調(diào)用模塊60。
[0060]以下結(jié)合附圖,對本發(fā)明實(shí)時(shí)的上述技術(shù)方案進(jìn)行詳細(xì)說明。
[0061]圖3是本發(fā)明實(shí)施例的信號量等待接口定時(shí)方法的詳細(xì)處理的流程圖,如圖3所示,本發(fā)明實(shí)施例將CPU的硬件定時(shí)器和操作系統(tǒng)提供的信號量等待接口結(jié)合使用,達(dá)到精確判斷信號量等待超時(shí)的目的。具體包括如下處理:
[0062]步驟I,任務(wù)開始TaskEntry (),該任務(wù)在等待信號量之前,首先計(jì)算本次處理能用于等待信號量的最長時(shí)間Ts ;
[0063]步驟2,使能硬件定時(shí)器,并根據(jù)該最長時(shí)間Ts設(shè)置硬件定時(shí)器的定時(shí)時(shí)間(TimeOut);
[0064]步驟3,調(diào)用操作系統(tǒng)提供的信號量等待接口 Pend (Mbx, forever),將該接口的時(shí)間參數(shù)設(shè)置為永久等待(forever),將信號量等待接口的信號量參數(shù)設(shè)置為預(yù)定任務(wù)本次任務(wù)處理需要的信號量(Mbx);
[0065]步驟4,在操作系統(tǒng)的調(diào)度下,CPU開始處理其它多任務(wù)程序,該任務(wù)所等待的信號量有可能在Ts時(shí)間段內(nèi)到來,也有可能在Ts時(shí)間段內(nèi)該信號量沒有到來,如果Ts時(shí)間段內(nèi)該信號量沒有到來,那么硬件定時(shí)器會在Ts時(shí)間后觸發(fā)中斷,post信號量給該任務(wù),硬件定時(shí)器中斷服務(wù)程序處理流程如圖4所示,TimerIsrO為硬件定時(shí)器服務(wù)中斷程序,Post (Mbx)表示通知該信號量。
[0066]無論該任務(wù)所等待的信號量在Ts時(shí)間段內(nèi)到來,或者在Ts時(shí)間段內(nèi)該信號量沒有到來,都會將該任務(wù)激活使其進(jìn)入活動(running)狀態(tài),該任務(wù)將繼續(xù)之后的處理。圖5是本發(fā)明實(shí)施例的信號量隊(duì)列的示意圖,如圖5所示,信號量隊(duì)列中有可能包括:硬件定時(shí)器超時(shí)的中斷信號量、或者正常信號量,因此,任務(wù)根據(jù)信號量的返回值來區(qū)分該信號量到底是任務(wù)所需要的信號量還是超時(shí)中斷post的信號量,根據(jù)這兩種情況決定后續(xù)的處理流程:如果該信號量是該任務(wù)所需要的信號量,執(zhí)行步驟5 ;如果該信號量是硬件定時(shí)器超時(shí)中斷post的信號量,說明該任務(wù)等待所需要的信號量超時(shí),執(zhí)行步驟7 ;
[0067]步驟5,關(guān)閉該硬件定時(shí)器,執(zhí)行步驟6 ;
[0068]步驟6,處理業(yè)務(wù)任務(wù),處理完畢后返回主流程準(zhǔn)備下個(gè)周期的處理;
[0069]步驟7,不對業(yè)務(wù)任務(wù)進(jìn)行處理,直接返回主流程開始下個(gè)周期的處理。
[0070]下面以LTE系統(tǒng)為例,對本發(fā)明實(shí)施例的上述技術(shù)方案進(jìn)行舉例說明。
[0071]LTE基帶協(xié)議業(yè)務(wù)的處理周期為Ims,協(xié)議任務(wù)必須要在第10個(gè)標(biāo)志(symbol)符號中斷到達(dá)之后才能開始處理,任務(wù)能夠容忍等待信號量的時(shí)間最長為0.4ms。根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,在進(jìn)入處理任務(wù)后,首先設(shè)置一個(gè)硬件定時(shí)器,定時(shí)長度設(shè)置為0.4ms,然后調(diào)用操作系統(tǒng)提供的pend信號量接口,等待時(shí)長設(shè)置為永久等待。判斷pend信號量的值,確定該信號量是來源于第10個(gè)symbol符號中斷post的信號量,或者是硬件定時(shí)器中斷psot的超時(shí)信號量。如果是symbol符號中斷信號量時(shí),表明本子巾貞信號量在規(guī)定時(shí)間內(nèi)到達(dá),可以對本子幀的數(shù)據(jù)進(jìn)行處理;如果是硬件定時(shí)器超時(shí)信號量,表明任務(wù)所需要的信號量已經(jīng)超時(shí),需要退出本子幀的處理,準(zhǔn)備進(jìn)行下個(gè)子幀的處理。[0072]綜上所述,借助于本發(fā)明實(shí)施例的技術(shù)方案,通過將操作系統(tǒng)提供的信號量等待接口和CPU的硬件定時(shí)器資源配合使用,解決了現(xiàn)有技術(shù)中由于操作系統(tǒng)時(shí)鐘本身精度的限制而導(dǎo)致信號量等待接口定時(shí)精度低的問題,提高了信號量等待接口定時(shí)的精確度,在不增加系統(tǒng)額外負(fù)擔(dān)的情況下,滿足了一些對時(shí)序要求非常嚴(yán)格的應(yīng)用場合。
[0073]盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域的技術(shù)人員將意識到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實(shí)施例。
【權(quán)利要求】
1.一種信號量等待接口定時(shí)方法,其特征在于,包括: 步驟1,在預(yù)定任務(wù)調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對所述硬件定時(shí)器的定時(shí)時(shí)間、以及所述信號量等待接口的參數(shù)進(jìn)行設(shè)置; 步驟2,通過所述信號量等待接口獲取信號量,根據(jù)所述信號量的值判斷所述信號量是在所述定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在所述硬件定時(shí)器中斷之后獲取的中斷信號量; 步驟3,在判斷獲取的信號量為所述正常信號量的情況下,關(guān)閉所述硬件定時(shí)器,根據(jù)所述正常信號量進(jìn)行任務(wù)處理,并執(zhí)行步驟1,在判斷獲取的信號量為所述中斷信號量的情況下,直接執(zhí)行步驟I。
2.如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述步驟I之前,所述方法還包括: 計(jì)算所述預(yù)定任務(wù)在本次任務(wù)處理中能夠用于等待信號量的最長時(shí)間。
3.如權(quán)利要求2所述的方法,其特征在于,所述信號量等待接口的參數(shù)包括:所述信號量等待接口的時(shí)間參數(shù)、以及所述信號量等待接口的信號量參數(shù)。
4.如權(quán)利要求3所述的方法,其特征在于,對所述硬件定時(shí)器的定時(shí)時(shí)間、以及所述信號量等待接口的參數(shù)進(jìn)行設(shè)置具體包括: 將所述硬件定時(shí)器的定時(shí)時(shí)間設(shè)置為所述預(yù)定任務(wù)等待信號量的最長時(shí)間; 將所述信號量等待接口的時(shí)間參數(shù)設(shè)置為永久等待,并將所述信號量等待接口的信號量參數(shù)設(shè)置為所述預(yù)定任務(wù)本次任務(wù)處理需要的信號量。`
5.如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述步驟2之前,所述方法還包括: 所述硬件定時(shí)器在所述定時(shí)時(shí)間到時(shí)后觸發(fā)中斷,將所述中斷信號量的值設(shè)置為不同于所述正常信號量的值,并將所述中斷信號量通過所述信號量等待接口通知給所述預(yù)定任務(wù)。
6.一種信號量等待接口定時(shí)裝置,其特征在于,包括: 接口調(diào)用模塊,用于調(diào)用信號量等待接口 ; 使能模塊,用于在所述接口調(diào)用模塊調(diào)用信號量等待接口時(shí),使能硬件定時(shí)器,對所述硬件定時(shí)器的定時(shí)時(shí)間、以及所述信號量等待接口的參數(shù)進(jìn)行設(shè)置; 信號量判斷模塊,用于通過所述信號量等待接口獲取信號量,根據(jù)所述信號量的值判斷所述信號量是在所述定時(shí)時(shí)間到時(shí)之前獲取的正常信號量還是在所述硬件定時(shí)器中斷之后獲取的中斷信號量; 處理模塊,用于在所述信號量判斷模塊判斷獲取的信號量為所述正常信號量的情況下,關(guān)閉所述硬件定時(shí)器,根據(jù)所述正常信號量進(jìn)行任務(wù)處理,并調(diào)用所述接口調(diào)用模塊,在所述信號量判斷模塊判斷獲取的信號量為所述中斷信號量的情況下,直接調(diào)用所述接口調(diào)用模塊。
7.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 計(jì)算模塊,用于計(jì)算所述預(yù)定任務(wù)在本次任務(wù)處理中能夠用于等待信號量的最長時(shí)間。
8.如權(quán)利要求7所述的裝置,其特征在于,所述信號量等待接口的參數(shù)包括:所述信號量等待接口的時(shí)間參數(shù)、以及所述信號量等待接口的信號量參數(shù)。
9.如權(quán)利要求8所述的裝置,其特征在于,所述使能模塊具體包括:第一設(shè)置子模塊,用于將所述硬件定時(shí)器的定時(shí)時(shí)間設(shè)置為所述預(yù)定任務(wù)等待信號量的最長時(shí)間; 第二設(shè)置子模塊,用于將所述信號量等待接口的時(shí)間參數(shù)設(shè)置為永久等待,并將所述信號量等待接口的信號量參數(shù)設(shè)置為所述預(yù)定任務(wù)本次任務(wù)處理需要的信號量。
10.如權(quán)利要求6所述的裝置,其特征在于,所述硬件定時(shí)器具體用于:在所述定時(shí)時(shí)間到時(shí)后觸發(fā)中斷,將所述中斷信號量的值設(shè)置為不同于所述正常信號量的值,并將所述中斷信號量通過所述信 號量等待接口通知給所述預(yù)定任務(wù)。
【文檔編號】G06F9/40GK103455310SQ201210170486
【公開日】2013年12月18日 申請日期:2012年5月29日 優(yōu)先權(quán)日:2012年5月29日
【發(fā)明者】汪少軍, 董志峰, 肖輝 申請人:中興通訊股份有限公司