通過單一硬體串口實現多進程控制的通訊方法
2023-07-20 05:34:06
專利名稱:通過單一硬體串口實現多進程控制的通訊方法
技術領域:
本發明涉及一種在硬體串口間實現進程控制的通訊方法,特別是一種通過單一硬 件串口實現多進程控制的通訊方法。
背景技術:
在目前三代無線通訊標準通訊協議中(3GPP 27. 010標準),定義了一種很普及的 用戶設備與終端設備間的多路轉換器通訊協議,在單一硬體串口上來,為設備間的通訊提 供多路虛擬串口通道,實現多進程的通訊。然而,使用該協議實現進程傳送的通訊方法過於 複雜,而且該協議控制字節佔具太多的數據包空間,造成數據效率低和耗費太多計算資源, 在實際應用中,該甚至可消耗高達50% 75%的中心處理器的計算資源,應此無法在USB這 類的高速串口上使用。
發明內容
發明目的針對上述現有技術存在的問題和不足,本發明的目的是提供一種通過 單一硬體串口實現多進程控制的通訊方法,該方法能節省產品上的硬體晶片引腳數,提高 硬體串口的數據傳送速度和效率,節省計算資源。技術方案一種通過單一硬體串口實現多進程控制的通訊方法,包括如下步驟
(1)傳送方數據包的形成,包括如下步驟
(A)對應用程式分配虛擬串口通道號;
(B)數據包序列號初始化為0;
(C)收到步驟(A)中所述應用程式的負載數據本身,並發送至傳送方的多進程控制協議
層;
(D)在傳送方的多進程控制協議層上,將按照虛擬串口通道號、數據包序列號、負載數 據類型、負載數據長度、校驗值的順序形成的控制字節,再與步驟(C)中所述負載數據本身 按順序形成所述傳送方數據包;
(2)步驟(1)所述傳送方數據包通過單一硬體串口傳送至接收方;
(3)接收方對步驟(2)傳來的數據包解包、分析,包括如下步驟
(E)將傳來的數據包發送至接收方的多進程控制協議層;
(F)取數據包前3個字節,計算其校驗值,若該校驗值與傳來的數據包第4位元組值相等, 則繼續;若該校驗值與傳來的數據包第4位元組值不等,則要求傳送方重新發送步驟(1)所述 傳送方數據包;
(G)取數據包前4個字節,按照虛擬串口通道號、數據包序列號、負載數據類型、負載數 據長度的順序解析;
(H)根據解析出的數據包序列號、負載數據類型對數據包承載的應用程式的數據進行 必要的組裝;
(I)根據解析出的虛擬串口通道號,將由步驟(H)組裝後的應用程式的數據發送給接送方使用該虛擬串口通道號的應用程式,即完成進程的通訊。所述虛擬串口通道號的取值為0-15,佔數據包第0位元組的前4位;所述數據包序 列號的取值為0-127,佔數據包第0位元組的後4位和第1位元組的前3位;所述負載數據類型 的取值為0-7,佔數據包第1位元組的第4-2位;所述負載數據長度的取值為0-1023,佔數據 包第1位元組的後2位和第2位元組的全部8位;所述校驗值的取值為0-255,佔數據包第3字 節的全部8位;所述負載數據本身最長為1023位元組。通道號為0的虛擬串口通道為控制通道。若傳送方應用程式負載數據本身超過1023位元組,則該應用程式的傳送在步驟(D) 後返回對數據包序列號的取值進行累加,從步驟(C)開始繼續形成該應用程式的傳送方數 據包進行傳送。當某個虛擬串口通道的數據包傳送發生堵塞時,發生堵塞的傳送方的多進程控制 協議層或接收方的多進程控制協議層利用控制通道,傳送停止命令給對方的多進程控制協 議層,直至緩衝內存區內的堵塞數據被消耗盡,然後再可以利用控制通道,傳送開通命令給 對方的多進程控制協議層,重新開始該虛擬串口通道的數據包傳送。有益效果本發明實現了利用一個實質的硬體串口為應用程式提供多達16條虛 擬串口通道的多進程控制的通訊方法,兩邊處理器上的多個不同的應用程式,可以獨立使 用各自的一條甚至多條虛擬串口通道,進行多進程的通訊,從而節省產品設計上日趨珍貴 的硬體晶片引腳數,有利於晶片的微小化。本發明通訊方法中應用程式數據包的控制字節只需要很短的4個字節,只佔據非 常小的數據包空間,使得數據包能夠裝載更多的應用程式的有效數據,大大提高了硬體串 口上數據的傳送速度和效率。數據包採用簡潔有效的形成模式,僅佔用很少的內存和計算資源,很容易在軟體 上實現。應用程式數據包的形成和解包過程簡單,特別是對數據包的完整性校驗計算,只需 要對數據包前3個控制字節進行,而且校驗值字節置於負載數據本身之前,讓數據包的每 個控制區域都有一個固定的位置,提高計算速度,減少了計算量,特別適合於高速數據傳輸 和可攜式電子產品。
圖1為典型的微處理器間的硬體串口通訊系統連接圖; 圖2為本發明通訊方法系統原理圖3為虛擬串口通道傳送方數據包的形成流程圖; 圖4為虛擬串口通道接收方數據包的解包、分析流程圖; 圖5為使用本發明的智慧型手機的構架圖。
具體實施例方式下面結合附圖和具體實施例,進一步闡明本發明,應理解這些實施例僅用於說明 本發明而不用於限制本發明的範圍,在閱讀了本發明之後,本領域技術人員對本發明的各 種等價形式的修改均落於本申請所附權利要求所限定的範圍。本發明適用計算機之間或微處理器之間的通訊。這種處理器間的硬體串口通訊系統如附圖1所示,它通常包括主處理器、副處理器、硬體串口等部分。應用該通訊系統的典 型產品有雙核手機間的通訊、手提電腦與其內置的無線網卡間的通訊等,常用的這種硬體 串口有UART、USB和MIPI等。而如附圖1所示的通訊系統的實現,如果每個應用程式均由 各自獨立的一個硬體串口來傳送數據,則在產品上需要多個硬體串口。本發明通訊方法要實現的是在一個硬體串口上開闢多條虛擬串口通道,從而實現 多進程並行通訊。附圖2給出了本發明通訊方法系統原理圖,主處理器和副處理器上的多 個不同的應用程式,可以獨立的使用各自的一條甚至多條虛擬串口通道,進行多進程通訊。 對傳送方應用程式指定一個虛擬串口通道號,在傳送方的多進程控制協議層上將應用程式 形成數據包,然後通過硬體串口,將數據包傳送至接收方,接收方在收到數據包後,在對等 的接收方的多進程控制協議層上,將數據包解包分析,根據解析得到的虛擬串口通道號,將 負載數據發送給使用該虛擬通道的相應的上層接受軟體。數據包的形成模式如下表所示 _
|CH|SeqNo |Type |Length FCS DataPayload
其中
CH為虛擬串口通道號,佔數據包半個字節(第O字節的前4位Byte0_bit7_4),取值範 圍為0-15;
SeqNo為數據包序列號,佔數據包7位(第O字節的後4位+第1位元組的前3位 Byte0_bit3_0 + Bytel_bit7_5),取值範圍為 0-127 ;
Type為負載數據類型,佔數據包3位(第1位元組的第4_2位Bytel_bit4_2),取值範圍 為 0-7 ;
Length為負載數據長度,佔數據包10位(第1位元組的最後2位+第2位元組的全部8 位Bytel_bitl-0 + Byte2_bit7_0),取值範圍為0-1023,表示負載數據的最大載荷(長度) 可達1023位元組;
FCS為校驗值,是對數據包前3個字節的校驗值,佔數據包8位(第3位元組的全部8位 Byte3_bit7_0),取值範圍為 0-255 ;
Data Payload為負載數據本身,它的長度取決於當時需要傳遞的應用程式的數據長 度,最長可達1023位元組,同時,它的長度也受限於硬體串口的最大允許數據包長度。虛擬串口通道傳送方數據包的形成流程,如附圖3所示對應用程式分配虛擬串 口通道號;數據包序列號初始化為O ;收到應用程式為m字節的負載數據本身,並發送至傳 送方的多進程控制協議層;在傳送方的多進程控制協議層上,按照數據包的形成模式,將按 照虛擬串口通道號、數據包序列號、負載數據類型、負載數據長度、校驗值的順序形成的4 個控制字節,再與m字節的負載數據本身形成傳送方數據包,通過單一硬體串口傳送至接 收方,結束傳送方數據包的傳送;若傳送方應用程式負載數據本身超過1023位元組,則該應 用程序的數據未傳送完畢,返回對數據包序列號的取值進行累加,對該應用程式提取待傳 的負載數據本身,繼續形成該應用程式的傳送方數據包進行傳送。虛擬串口通道接收方數據包的解包、分析流程,如附圖4所示接收方將傳來的數 據包發送至接收方的多進程控制協議層;取數據包前3個字節,計算其校驗值,若該校驗值 與傳來的數據包第4位元組值不等,則要求傳送方重新發送傳送方數據包,若該校驗值與傳 來的數據包第4位元組值相等,則取數據包前4個字節,按照數據包的形成模式,解析出虛擬串口通道號、數據包序列號、負載數據類型、負載數據長度;根據解析出的數據包序列號、負 載數據類型對數據包承載的應用程式的數據進行必要的組裝;根據解析出的虛擬串口通道 號,將組裝後的應用程式的數據發送給接送方使用該虛擬串口通道號的應用程式,即完成 進程的通訊。傳送方和接收方兩方處理器需要同時發送和接收數據,因此,雙方的多進程控制 協議層都需要同時實施附圖3和附圖4的發送和接受流程,以滿足雙向的數據傳輸。在實現時,通常0虛擬串口通道被設置為控制通道,用來協調主、副處理器的多進 程控制協議層的通道建立、數據流向和阻塞控制等,餘下的1-15條虛擬串口通道可由應用 軟體隨意支配。當某個虛擬串口通道的數據包傳送發生堵塞時,發生堵塞的一方的多進程 控制協議層,可以利用0虛擬串口通道,傳送一個停止命令數據包給對方的多進程控制協 議層,將該通道的堵塞狀態通知對方,以減少對方發送的數據量,直至緩衝內存區內的堵塞 數據被消耗盡,然後再可以利用0虛擬串口通道,傳送一個開通命令數據包給對方的多進 程控制協議層,重新開始該虛擬串口通道的數據包傳送。校驗值的計算可由用戶根據自己的要求選擇算法計算,用戶可以使用最簡單的累 加計算法,也可以採用複雜但更可靠的其它一些算法。以下以雙核智慧型手機為例,描述本發明的實際應用。典型智慧型手機的構架如附圖5 所示,它通常包括一個應用處理器AP和一個通訊處理器CP,兩個處理器間通常需要至少兩 個硬體串口來維持兩個處理器間的通訊一個硬體串口用於傳送無線網絡狀態和打電話、 送簡訊這類的控制命令;另一個硬體串口用於傳送瀏覽器和網上文件下載時的大流量連續 數據。更多的時候,系統還需要再增加一個硬體串口,用於傳遞產品調試的示蹤記錄。這些 大大增加了硬體的造價。在使用了本發明通過單一硬體串口實現多進程控制的通訊方法後,只需增加一個 本發明的多進程控制協議層,在該多進程控制協議層上按照數據包的形成模式,形成數據 包,或解包、分析數據包,上述3個硬體串口,就可以用3個虛擬串口來實現。在硬體上,只 需要佔用一個實質的硬體串口,從而大大節省了硬體資源。由於控制通道的控制命令的數據量通常都很小,與專用數據虛擬串口通道共享同 一個硬體串口,也不會對整個智慧型手機系統的性能帶來不良的影響。
權利要求
1.一種通過單一硬體串口實現多進程控制的通訊方法,其特徵在於包括如下步驟(1)傳送方數據包的形成,包括如下步驟(A)對應用程式分配虛擬串口通道號;(B)數據包序列號初始化為0;(C)收到步驟(A)中所述應用程式的負載數據本身,並發送至傳送方的多進程控制協議層;(D)在傳送方的多進程控制協議層上,將按照虛擬串口通道號、數據包序列號、負載數 據類型、負載數據長度、校驗值的順序形成的控制字節,再與步驟(C)中所述負載數據本身 按順序形成所述傳送方數據包;(2)步驟(1)所述傳送方數據包通過單一硬體串口傳送至接收方;(3)接收方對步驟(2)傳來的數據包解包、分析,包括如下步驟(E)將傳來的數據包發送至接收方的多進程控制協議層;(F)取數據包前3個字節,計算其校驗值,若該校驗值與傳來的數據包第4位元組值相等, 則繼續;若該校驗值與傳來的數據包第4位元組值不等,則要求傳送方重新發送步驟(1)所述 傳送方數據包;(G)取數據包前4個字節,按照虛擬串口通道號、數據包序列號、負載數據類型、負載數 據長度的順序解析;(H)根據解析出的數據包序列號、負載數據類型對數據包承載的應用程式的數據進行 必要的組裝;(I)根據解析出的虛擬串口通道號,將由步驟(H)組裝後的應用程式的數據發送給接送 方使用該虛擬串口通道號的應用程式,即完成進程的通訊。
2.根據權利要求1所述的通過單一硬體串口實現多進程控制的通訊方法,其特徵在 於所述虛擬串口通道號的取值為0-15,佔數據包第0位元組的前4位;所述數據包序列號的 取值為0-127,佔數據包第0位元組的後4位和第1位元組的前3位;所述負載數據類型的取值 為0-7,佔數據包第1位元組的第4-2位;所述負載數據長度的取值為0-1023,佔數據包第1 字節的後2位和第2位元組的全部8位;所述校驗值的取值為0-255,佔數據包第3位元組的全 部8位;所述負載數據本身最長為1023位元組。
3.根據權利要求1所述的通過單一硬體串口實現多進程控制的通訊方法,其特徵在 於通道號為0的虛擬串口通道為控制通道。
4.根據權利要求1所述的通過單一硬體串口實現多進程控制的通訊方法,其特徵在 於若傳送方應用程式負載數據本身超過1023位元組,則該應用程式的傳送在步驟(D)後返 回對數據包序列號的取值進行累加,從步驟(C)開始繼續形成該應用程式的傳送方數據包 進行傳送。
5.根據權利要求3所述的通過單一硬體串口實現多進程控制的通訊方法,其特徵在 於當某個虛擬串口通道的數據包傳送發生堵塞時,發生堵塞的傳送方的多進程控制協議 層或接收方的多進程控制協議層利用控制通道,傳送停止命令給對方的多進程控制協議 層,直至緩衝內存區內的堵塞數據被消耗盡,然後再可以利用控制通道,傳送開通命令給對 方的多進程控制協議層,重新開始該虛擬串口通道的數據包傳送。
全文摘要
本發明公開了一種通過單一硬體串口實現多進程控制的通訊方法,在單一硬體串口上提供多達16條虛擬串口通道,傳送方在多進程控制協議層上按照數據包的形成模式,將應用程式數據包傳送至接收方,接收方在對等的多進程控制協議層上對數據包解包、分析,完成進程的通訊。本發明的優點是利用一個實質的硬體串口為應用程式提供多進程控制,從而節省產品設計上日趨珍貴的硬體晶片引腳數,有利於晶片的微小化;數據包的控制字節只需要很短的4個字節,大大提高了硬體串口上數據的傳送速度和效率;數據包採用簡潔有效的形成模式,僅佔用很少的內存和計算資源,特別適合於高速數據傳輸和可攜式電子產品。
文檔編號G06F13/42GK102129395SQ20111004951
公開日2011年7月20日 申請日期2011年3月2日 優先權日2011年3月2日
發明者林野 申請人:智比特信息技術(鎮江)有限公司