一種底層數據報文接收的實現方法
2023-05-03 06:17:11 1
專利名稱:一種底層數據報文接收的實現方法
技術領域:
本發明涉及底層數據接收技術,尤指一種結合使用任務調度查詢和底層接收中斷方式來查詢並處理底層數據報文的方法。
目前,底層數據接收的設計方法有以下幾種1)採用任務調度查詢方式系統創造一個接收任務,設置一定的任務優先級,當調度到該任務時,檢查底層是否接收到數據報文,如果有數據報文,則進行底層數據的接收。
2)採用FCC底層接收中斷方式當底層接收到一個或N(N>1)個數據報文時,進入中斷,在中斷中進行底層數據的接收。
對於任務調度查詢方式的數據接收來說,其不需要對中斷進行處理,工作方式實現最簡單。但是,該方式在系統流量小時,可能在定時時間間隔內沒有數據報文接收,接收任務仍然要檢查各個通道是否接收到數據報文,空耗CPU時間;而在系統流量大時,若任務優先級低,由於接收處理不及時,接收緩衝區描述符(BD,Buffer Desriptor)用滿,會出現丟失數據報文現象;若任務優先級高,會限制其他任務執行,系統工作不穩定;並且對緊急報文,不能及時處理。
對於底層接收中斷方式的數據接收而言,其克服了任務調度查詢方式的缺陷在系統流量小時,根據是否實際接收到數據報文進行數據報文接收,不會空耗CPU時間;在系統流量大時,由於能及時進行數據報文接收,不會出現丟失數據報文現象;同時,對於緊急報文,也能及時處理。但是,該方式在系統流量大時,會頻繁進入中斷,進行數據報文接收,使其他任務和中斷不能執行,雖然將數據報文接收後交給上層,上層也不能處理;系統任務不能及時執行,影響系統的穩定性。
為達到上述目的,本發明的技術方案具體是這樣實現的一種底層數據報文接收的實現方法,該方法包括以下的步驟a.創建一個接收數據報文的任務,並為該任務設定優先級;b.設置一個定時器中斷;c.當定時器時間到時,系統進入中斷處理,檢查底層的數據接收標誌,判斷是否有數據報文接收到,如果有,則激活當前接收任務對應的信號量,關閉定時器中斷,設置當前接收任務為Ready狀態,退出中斷處理,根據預先設定的優先級進行接收任務調度;否則,直接退出本次中斷,等待下一次定時器中斷。
其中,步驟c進一步包括在定時器中斷處理中,系統檢查快速通信控制器(FCC),根據FCC中斷寄存器中數據報文的接收到標誌,來判斷是否收到數據報文。
而且,步驟c中的接收任務調度進一步包括c1.系統實時檢測信號量,當發現當前接收任務對應的信號量已被激活後,則調用該接收任務進行數據接收;c2.數據全部接收完畢後,打開定時器中斷,等待下一次定時器中斷。
在上述方案中,接收任務的優先級別設定在1至100之間。定時器的時間間隔設置在1ms至10ms之間。
由上述方案可以看出,本發明的關鍵在於預先創建一個接收任務,並設定該接收任務的優先級,同時設置一定時器中斷,採用任務調度查詢與底層接收中斷相結合的方式,在定時中斷處理中,進行數據收發狀態的查詢,用信號量控制接收任務的調用,以保證及時查詢並處理底層的數據報文。
因此,本發明所提供的底層數據報文接收的實現方法,採用定時器中斷查詢底層信息,能保證及時查詢到底層數據報文接收情況;由於可以將任務優先級設計較高,也可以及時進行數據報文的上傳。在數據流量小時,能保證一定的響應時間;在數據流量大時,能及時處理數據報文,同時保證其他任務執行,提高整個系統的穩定性和可靠性。
以FCC底層數據接收為例,參見
圖1、圖2所示,本發明結合中斷和任務方式查詢並處理底層數據接收的方法,具體包括以下的步驟1)創建一個接收任務,準備進行數據報文的接收,同時為該任務設定一個優先級,該接收任務對應一個信號量X。實際上,該任務平時被信號量X堵塞,所謂信號量就相當於一個標識;堵塞就是指沒有接收到數據時,就沒有信號量,任務不會被執行,必須在接收到數據信號量被激活後,接收任務才能執行,以此提高系統效率。
一般,任務優先級的設定範圍為1~100,該任務的優先級可以設置得高一些,這樣就能及時處理接收數據,如果過低,系統就不能迅速響應。
2)設置一個定時器中斷,當定時計數到設置的值時,引起定時器中斷,系統進入中斷處理;否則定時器計數。該中斷值根據系統要求的中斷時間間隔來定,通常系統要求中斷時間間隔最大10ms,最小1ms。如果該值設置過大,系統不能迅速響應;設置過小,系統會頻繁中斷,工作不穩定。
3)在定時器中斷處理中,系統檢查FCC底層,根據FCC中斷寄存器(FCCE)中的數據報文接收到標誌,來判斷是否有數據報文接收到,如果沒有,則退出本次中斷,返回步驟2)等待下一次定時器中斷;如果有數據報文接收到,則關閉定時器中斷,激活信號量X,即給當前接收任務發送對應的信號量,並設置接收任務為Ready態,然後退出中斷處理,進入步驟4)系統根據預先設定的優先級進行接收任務調度。
4)系統實時檢測對應各種任務的所有信號量,當發現信號量X被激活後,由於接收任務的優先級設置較高,系統會很快調用該信號量X對應的接收任務,進行數據的接收;當數據報文接收完後,系統打開定時器中斷,返回步驟2)等待下一次定時器中斷。
本發明的底層數據接收處理方法可適用於多種晶片中,只要該晶片滿足以下的條件a.具有可以設置時間的定時器;b.可設置允許/禁止定時器中斷;c.可以返回數據接收到的標誌,比如利用某個寄存器返回;d.允許多任務處理。
可見,只要能設置並靈活控制定時器中斷、支持多任務的各類晶片,均可採用本發明的方法,以達到快速處理底層接收數據,提高系統接收數據率和可靠性的目的。
權利要求
1.一種底層數據報文接收的實現方法,其特徵在於該方法包括以下的步驟a.創建一個接收數據報文的任務,並為該任務設定優先級;b.設置一個定時器中斷;c.當定時器時間到時,系統進入中斷處理,檢查底層的數據接收標誌,判斷是否有數據報文接收到,如果有,則激活當前接收任務對應的信號量,關閉定時器中斷,設置當前接收任務為準備好(Ready)狀態,退出中斷處理,根據預先設定的優先級進行接收任務調度;否則,直接退出本次中斷,等待下一次定時器中斷。
2.根據權利要求1所述的實現方法,其特徵在於步驟c進一步包括在定時器中斷處理中,系統檢查快速通信控制器(FCC),根據FCC中斷寄存器中數據報文的接收到標誌,來判斷是否收到數據報文。
3.根據權利要求1所述的實現方法,其特徵在於步驟c中的接收任務調度進一步包括c1.系統實時檢測信號量,當發現當前接收任務對應的信號量已被激活後,則調用該接收任務進行數據接收;c2.數據全部接收完畢後,打開定時器中斷,等待下一次定時器中斷。
4.根據權利要求1所述的實現方法,其特徵在於設定接收任務優先級別在1至100之間。
5.根據權利要求1所述的實現方法,其特徵在於設定定時器的時間間隔在1ms至10ms之間。
全文摘要
本發明公開了一種底層數據報文接收的實現方法,該方法包括a)創建一個接收數據報文的任務,並為該任務設定優先級;b)設置一個定時器中斷;c)當定時器時間到時,系統進入中斷處理,檢查底層的數據接收標誌,判斷是否有數據報文接收到,如果有,則激活當前接收任務對應的信號量,關閉定時器中斷,設置當前接收任務為準備好(Ready)狀態,退出中斷處理,進行接收任務調度;否則,直接退出本次中斷,等待下一次定時器中斷。採用該方法能保證及時查詢到底層數據報文的接收情況,並及時處理數據報文,從而提高整個系統的穩定、可靠性,同時避免系統資源的浪費。
文檔編號H04L12/54GK1414747SQ0211760
公開日2003年4月30日 申請日期2002年5月8日 優先權日2002年5月8日
發明者李琥, 蘇華波, 田彥敏 申請人:華為技術有限公司