基於硬體系統的串口可靠傳輸方法及裝置的製作方法
2023-10-18 12:39:19
專利名稱:基於硬體系統的串口可靠傳輸方法及裝置的製作方法
技術領域:
本發明涉及通信接口的傳輸技術,特別是涉及基於硬體系統的串口可靠傳輸方法及裝置。
背景技術:
UART (Universal Asynchronous Receiver/Transmitter,通用異步收發傳輸器)是一種常見的通訊接口裝置。這種接口的歷史可追溯到計算機尚未誕生之前,但時至今日仍存在於各種專用設備、個人計算機、嵌入式系統當中。通用異步收發傳輸器是基·於字符傳輸的,例如需要發送由若干字符組成一個數據包,則先發送BYTE0、BYTE1最後到BYTEn。在傳輸每個字符時,由物理層的協議規範定義了起始位、數據位、結束位、校驗位,用於保證單個字符可靠傳輸。在實際應用中,只傳輸一個字符數據很少見。通常的應用是傳輸由幾十甚至更多字符組成的數據包。在大多數的嵌入式系統,核心部分通常只有一個8位或16的MCU0 MCU的軟體系統由一個不斷執行應用事務的大循環以及幾個中斷事務組成。中斷事務的優先級比大循環執行的應用事務要高。中斷事務包括串口中斷接收事務,還有定時器中斷事務、外部中斷事務等等。如果串口中斷事務時間耗費過長,會引起其他中斷事務丟失以及應用事務的執行,系統實時性差。對於應用層的服務模式是服務方等待請求方的請求;請求方發送請求命令;月艮務方接收請求命令並處理;服務方返回應答。傳統技術當中,這種服務模式的實現方法是自定義固定幀同步機制。即請求方與服務方所有的數據交互都是基於自定義數據幀進行,數據幀的長度是定長的。也就是說每次數據交換單元是一個定長幀。請求方把請求命令進行一層幀封裝,再通過串口按字符依次發送出去;服務方依次接收到字符並緩存在緩衝區,同時計算字符數量,當達到了預先定義好的數量後,取出這個數據幀做進一步處理並返回應答。因為物理層的串口發送是基於字符的,所以對於定長幀則需要多次啟動物理層串口進行傳輸。相應地,因為物理層的串口接收也是基於字符的,所以接收方也需多次啟動物理層進行接收,將接收到的字符放入緩衝區。由於這種方法對每個數據幀都是定長的,對於某些含字節較少的數據(例如控制信號),會造成空間和時間上的浪費,使用起來顯得不夠靈活。
發明內容
基於此,有必要針對上述問題,提供一種基於硬體系統的串口可靠傳輸方法及裝置,能夠提供一種串口傳輸可變幀的機制,節省傳輸帶寬的空間及時間。—種基於硬體系統的串口可靠傳輸方法,包括讀取緩衝存儲器的數據,並寫入緩衝區,釋放串口中斷業務;根據預設欄位,在所述緩衝區的數據中查找可變長數據幀;解釋該可變長數據幀,接收可變長數據幀內的有效信息。相應地,一種基於硬體系統的串口可靠傳輸裝置,包括
數據轉移單元,用於讀取緩衝存儲器的數據,並寫入緩衝區;與所述數據轉移單元相連的串口控制單元,用於釋放串口中斷業務;與所述數據轉移單元相連的數據幀查找單元,用於根據預設欄位,在所述緩衝區的數據中查找可變長數據幀;與所述數據幀查找單元相連的信息解釋單元,用於解釋該可變長數據幀,接收可變長數據幀內的有效信息。實施本發明,具有如下有益效果本發明提供了一種串口中斷業務的快速處理機制,在讀取緩衝存儲器的數據,並寫入緩衝區之後,馬上釋放串口中斷業務,在後臺對緩衝區的數據進行處理,避免中斷業務佔用時間過長而帶來的其它中斷業務的丟失、業務傳輸數據的丟失以及影響系統實時性等問題。另外,與傳統固定長度幀的方式不同,本發明提供的可變長數據幀能夠節省傳輸帶寬和處理時間,進一步提高了系統的靈活性。
圖I為本發明一種基於硬體系統的串口可靠傳輸方法的流程圖;圖2為本發明一種基於硬體系統的串口可靠傳輸方法的第一實施例流程圖;圖3為本發明一種基於硬體系統的串口可靠傳輸方法的第二實施例流程圖;圖4為本發明的第二實施例的狀態轉移圖;圖5為本發明一種基於硬體系統的串口可靠傳輸裝置的示意圖;圖6為本發明一種基於硬體系統的串口可靠傳輸裝置的第一實施例示意圖;圖7為本發明一種基於硬體系統的串口可靠傳輸裝置的第二實施例示意圖。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述。圖I為本發明一種基於硬體系統的串口可靠傳輸方法的流程圖,包括SlOl :讀取緩衝存儲器的數據,並寫入緩衝區,釋放串口中斷業務;S102 :根據預設欄位,在所述緩衝區的數據中查找可變長數據幀;S103 :解釋該可變長數據幀,接收可變長數據幀內的有效信息。串口數據接收採用中斷事務方式,這種方式具有很好的實時性。因為中斷事務在嵌入式系統中具有最高的優先級。當系統使能多個中斷源時,設置串口接收中斷具有最高的優先級。無論當前系統處於處理什麼事務,當串口接收中斷發生時,系統會跳轉到串口接收中斷處理程序執行。讀取硬體緩衝區的內容,將讀取到的數據放入自定義的緩衝區。與傳統技術不同,本發明並非等到解釋完這些數據再釋放串口中斷業務。由於該串口中斷業務具有最高的優先級,且其中斷時間不宜過長,故此,本發明將串口接收存儲在緩衝存儲器中的數據轉移到緩衝區當中,交由後臺串口接收處理程序進行處理。在數據寫入緩衝區之後,馬上釋放串口中斷業務,以便提高系統的實時性。串口數據處理程序從緩衝區找出一個可變長數據幀。查找過程中,串口數據處理程序首先判斷緩衝區是否有數據,如果有數據,再進行預設欄位的查找。預設欄位可由一個或幾個特殊的字節組成,以方便適合處理程序的查找。當找到可變長數據幀後,解釋該可變長數據幀,接收可變長數據幀內的有效信息。其中,解釋的方式可依據可變長數據幀的自定義信號格式。簡單舉例,可變長數據幀的信號格式可以為「預設欄位+有效信息」,則解釋時,只需提取預設欄位之間的信息即為有效信息。由於使用了可變長數據幀,信號格式中的有效信息並非固定長度,對於某些只傳輸幾個字節的數據來說,本發明能夠節省傳輸帶寬空間以及節約傳輸時間。需要補充說明的是,上述自定義的信號格式並非唯一,在下述圖2的實施例當中,本發明還定義了一種優選的信號格式。所有基於本發明思想的類似格式變換,均應屬於本發明的保護範圍。圖2為本發明一種基於硬體系統的串口可靠傳輸方法的第一實施例流程圖。與圖I相比,圖2定義了一種優選的信號格式,並基於此對本發明的實施方式做進一步的改進。該信號格式定義的可變長數據幀的欄位構成為同步位、幀長度、有效信息(payload)。S201 :讀取緩衝存儲器的數據,並寫入緩衝區,釋放串口中斷業務;S202:所述可變長數據幀的預設欄位包括同步位、幀長度和有效信息,在所述緩衝區的數據中查找同步位欄位;S203 :當查找成功,根據所述幀長度欄位提取所述可變長數據幀;S204 :解釋該可變長數據幀,接收可變長數據幀內的有效信息。所述同步位用於定義可變長數據幀的起始位,同步位後面的幀長度代表了該數據幀有效信息有多長。根據數據幀長度來判斷後續有多少字節都是屬於該數據幀的有效內容。數據幀長度字節後面緊跟著的是該數據幀的有效信息。有效信息是該數據幀真正有效的內容。系統依此接收到傳輸的數據內容。上述「預設欄位」採用同步位予以實現,可以便於查找可變長數據幀。所述幀長度有助於確認該可變數據幀的長度,確保串口信息的可靠傳輸。當查找到的幀長度不符合預設規定,則丟棄該可變長數據幀,查找下一個同步位欄位。其中,該預設規定可以是,在幀長度的數據範圍內還包括同步位所自定義的特殊字符,則顯然,該可變長數據幀傳輸出錯,需要丟棄。同理,本發明不排除其它利用幀長度檢驗信息可靠性的規定。圖3為本發明一種基於硬體系統的串口可靠傳輸方法的第二實施例流程圖。與圖2相比,圖3進一步定義了一種更優信號格式,並基於此對本發明的實施方式做進一步的改進。該信號格式定義的可變長數據幀的欄位構成為同步位、幀長度、有效信息(payload)和校驗位。與前述實施例不同,本實施的有效信息後面還包括校驗位欄位,程序可以據此來判斷接收到的該數據幀是否有錯誤。進一步地,若沒有錯誤,在程序對接收數據處理完畢後,返回相應的應答包通知對方,則對方也可以據此獲知此次發送的信息無誤。S301 :讀取緩衝存儲器的數據,並寫入緩衝區,釋放串口中斷業務;S302:所述可變長數據幀的預設欄位包括同步位、幀長度、有效信息和校驗位,在所述緩衝區的數據中查找同步位欄位;判斷是否查找成功,「是」則轉入步驟S303 ;「否」則轉入步驟S308 ;S303 :當查找成功,根據所述幀長度欄位提取所述可變長數據幀;S304 :根據所述同步位、所述幀長度和所述有效信息的欄位,計算該可變長數據幀的校驗和;
S305:將所述校驗和與所述校驗位的數據進行比較,判斷所述可變長數據幀接收正常;判斷是否正常接收,「是」則轉入步驟S306 ;「否」則轉入步驟S308 ;S306 :接收可變長數據幀內的有效信息;判斷是否數據末端,「是」則轉入步驟S307 ;「否」則返回步驟S302 ;S307 :根據業務指令對所有的有效信息進行處理,再啟動串口中斷業務,返回應答包;S308 :丟棄該可變長數據幀,查找下一個同步位欄位。
在計算機系統的多任務裡,中斷事務具有最高的優先級。所以通常把對實時性要求很高的事務放在中斷處理程序裡完成。串口數據接收也是採用中斷事務處理方式實現。處理過程耗費的時間越短越好,避免因為在處理過程又一個串口接收數據的到來而導致數據丟失的情況。控制器(CPU/MCU)響應串口接收中斷,進入處理程序,讀取串口模塊的硬體緩衝區的數據,寫入一個自定義的緩衝區中,馬上退出,釋放串口中斷業務。優選地,本實施例的緩衝區採用環形緩衝區予以實現,它的應用很廣泛,它是一個先進先出的循環緩衝區。環形緩衝區通常有一個讀指針和一個寫指針。讀指針指向當前緩衝區可讀的數據,寫指針指向當前緩衝區可寫的數據。環形緩衝區初始化時,讀指針和寫指針都指向緩衝區的首端。讀用戶首先判斷緩衝區中是否有數據可讀,如果有數據可讀,那麼讀指針的指向數據讀出來並且讀指針指向下一個位置。最後判斷讀指針是否指向緩衝區末端的下一個位置,如果是這樣,那麼讀指針重新指向緩衝區的首端。寫入用戶首先判斷緩衝區是否滿出,如果還有數據可寫入,那麼將數據寫入寫指針指向的位置並且寫指針指向下一個位置。最後判斷寫指針是否指向緩衝區的末端下一個位置,如果是這樣,那麼將寫指針重新指向緩衝區的首端。因為只有串口數據接收處理程序會修改寫指針,所以寫入過程不需加互斥鎖,提高了接收處理速度。串口數據接收處理程序將串口模塊硬體緩衝區的數據讀取出來,寫入環形緩衝區後,立刻退出。做好下一次中斷接收準備。如前面所述,串口數據接收是在中斷事務實現的,這種處理方式提高接收實時性,不會導致數據丟失的情況。數據處理過程從環形緩衝區讀取數據,找出可變長的數據幀。這個過程要耗費比較多的時間,所以不能放在中斷事務實現。串口接收程序輪詢環形緩衝區的內容,將數據讀取出來並提取一條完整的可變長幀。查找可變長的數據幀過程也是一個狀態機變換的過程。一個可變長的數據幀由以下數據格式組成同步位、幀長度、有效信息(payload)、校驗位。如下表所示
同步位幀長度有效信息校驗位幀長度欄位代表了該數據幀有效信息的實際長度,因此,不同的幀長度該數據幀的有效信息長度是不同的。根據可變長數據幀的四個欄位,引入一種具有以下四種狀態的有限狀態機進行分析狀態A、狀態B、狀態C、狀態D。如圖4所示。圖4為本發明的第二實施例的狀態轉移圖。各個狀態描述如下表所示
權利要求
1.一種基於硬體系統的串口可靠傳輸方法,其特徵在於,包括 讀取緩衝存儲器的數據,並寫入緩衝區,釋放串口中斷業務; 根據預設欄位,在所述緩衝區的數據中查找可變長數據幀; 解釋該可變長數據幀,接收可變長數據幀內的有效信息。
2.根據權利要求I所述的基於硬體系統的串口可靠傳輸方法,其特徵在於,所述可變長數據幀的預設欄位包括同步位、幀長度和有效信息,根據預設欄位,在所述緩衝區的數據中查找可變長數據幀的步驟,包括 在所述緩衝區的數據中查找同步位欄位; 當查找成功,根據所述幀長度欄位提取所述可變長數據幀。
3.根據權利要求2所述的基於硬體系統的串口可靠傳輸方法,其特徵在於,所述可變長數據幀的預設欄位還包括校驗位,解釋該可變長數據幀的步驟,包括 根據所述同步位、所述幀長度和所述有效信息的欄位,計算該可變長數據幀的校驗和; 將所述校驗和與所述校驗位的數據進行比較,判斷所述可變長數據幀接收正常。
4.根據權利要求2或3所述的基於硬體系統的串口可靠傳輸方法,其特徵在於 當查找到的幀長度不符合預設規定,或者當解釋所述可變長數據幀的過程中出現異常,則丟棄該可變長數據幀,查找下一個同步位欄位。
5.根據權利要求I至4任一項所述的基於硬體系統的串口可靠傳輸方法,其特徵在於,接收可變長數據幀內的有效信息的步驟之後,還包括 判斷當前指針指向所述緩衝區的數據末端,根據業務指令對所有的有效信息進行處理,再啟動串口中斷業務,返回應答包; 當所述當前指針不是指向所述緩衝區的數據末端時,查找下一個同步位欄位。
6.一種基於硬體系統的串口可靠傳輸裝置,其特徵在於,包括 數據轉移單元,用於讀取緩衝存儲器的數據,並寫入緩衝區; 與所述數據轉移單元相連的串口控制單元,用於釋放串口中斷業務; 與所述數據轉移單元相連的數據幀查找單元,用於根據預設欄位,在所述緩衝區的數據中查找可變長數據幀; 與所述數據幀查找單元相連的信息解釋單元,用於解釋該可變長數據幀,接收可變長數據幀內的有效信息。
7.根據權利要求6所述的基於硬體系統的串口可靠傳輸裝置,其特徵在於,所述數據中貞查找單元,包括 同步位獲取單元,用於在所述緩衝區的數據中查找同步位欄位; 與所述同步位獲取單元相連的數據幀提取單元,用於根據所述幀長度欄位提取所述可變長數據幀。
8.根據權利要求7所述的基於硬體系統的串口可靠傳輸裝置,其特徵在於,所述信息解釋單元,包括 校驗計算單元,用於根據所述同步位、所述幀長度和所述有效信息的欄位,計算該可變長數據幀的校驗和; 與所述校驗計算單元相連的比較判斷單元,用於將所述校驗和與所述校驗位的數據進行比較,判斷所述可變長數據幀接收正常; 與所述比較判斷單元相連的信息接收單元,用於接收可變長數據幀內的有效信息。
9.根據權利要求7或8所述的基於硬體系統的串口可靠傳輸裝置,其特徵在於,還包括 與所述數據幀提取單元、所述比較判斷單元分別相連的異常處理單元,用於在查找到的幀長度不符合預設規定,或者在解釋所述可變長數據幀的過程中出現異常的情況下,丟棄該可變長數據幀,查找下一個同步位欄位。
10.根據權利要求6至9任一項所述的基於硬體系統的串口可靠傳輸裝置,其特徵在於,還包括 與所述信息解釋單元、數據幀查找單元分別相連的接收完整單元,用於判斷當前指針指向所述緩衝區的數據末端;所述數據幀查找單元,還用於在所述當前指針不是指向所述緩衝區的數據末端時,查找下一個同步位欄位; 與所述接收完整單元相連的命令執行單元,用於根據業務指令對所有的有效信息進行處理; 與所述命令執行單元、所述串口控制單元分別相連的數據應答單元,用於返回應答包;其中,所述串口控制單元還用於啟動串口中斷業務。
全文摘要
本發明公開了基於硬體系統的串口可靠傳輸方法及裝置。該方法包括讀取緩衝存儲器的數據,並寫入緩衝區,釋放串口中斷業務;根據預設欄位,在所述緩衝區的數據中查找可變長數據幀;解釋該可變長數據幀,接收可變長數據幀內的有效信息。採用本發明,可以提供了一種串口中斷業務的快速處理機制,在讀取緩衝存儲器的數據,並寫入緩衝區之後,馬上釋放串口中斷業務,在後臺對緩衝區的數據進行處理,避免中斷業務佔用時間過長而帶來的其它中斷業務的丟失、業務傳輸數據的丟失以及影響系統實時性等問題。
文檔編號H04L1/00GK102724122SQ20121020907
公開日2012年10月10日 申請日期2012年6月21日 優先權日2012年6月21日
發明者何常, 艾君銳, 陳昶 申請人:廣東威創視訊科技股份有限公司