專利名稱:雙處理器之間進行通信的方法
技術領域:
本發明涉及通信傳輸技術,尤其涉及雙處理器之間進行通信的方法。
背景技術:
為滿足人們在進行數據傳輸時對實時性和數據處理能力的要求,大型復雜的系統 通常使用雙處理器來完成各自的任務,以達到最佳的系統性能。相應地,雙處理器之間的數 據通信成為業內關注的焦點。 作為一個系統,雙處理器之間需要實時交換才能保證協同并行地工作。雙處理器 之間通過雙端口隨機存取存儲器(DPRAM,Dual Port RAM)實現數據傳輸,如圖1所示,為現 有技術中通過DPRAM進行雙處理器之間數據傳輸的實例,處理器A與DPRAM之間通過端口 A進行數據傳輸,處理器B與DPRAM之間通過端口 B進行數據傳輸。 現有雙處理器之間的進行數據傳輸的方案將DPRAM劃分為四個存儲區第一存儲 區、第二存儲區、第三存儲區和第四存儲區。DPRAM中除了用于進行數據傳輸的存儲區外,還 包括用于進行觸發中斷的中斷控制位。進行數據傳輸的過程如下利用兩個中斷,把讀寫允 許的時間段分為兩段,在第一時間段里,處理器A寫入第一存儲區和讀出第三存儲區,而處 理器B讀出第二存儲區和寫入第四存儲區,如圖la所示;而在第二時間段里,處理器A寫入 第二存儲區和讀出第四存儲區,而處理器B讀出第一存儲區和寫入第三存儲區,如圖lb所 示。這兩個中斷的觸發時間由處理器B控制,具體地,需要觸發第一個中斷時,處理器B向 DPRAM中的中斷控制位寫入中斷信息,DPRAM向處理器B觸發中斷,然后,執行第一段時間里 的操作,即,處理器A寫入第一存儲區和讀出第三存儲區,而處理器B讀出第二存儲區和寫 入第四存儲區;需要觸發第二個中斷時,處理器B向DPRAM中的中斷控制位寫入中斷信息, DPRAM向處理器B觸發中斷,然后,執行第二段時間里的操作,S卩,處理器A寫入第二存儲區 和讀出第四存儲區,而處理器B讀出第一存儲區和寫入第三存儲區。 現有技術將DPRAM劃分為四個存儲區,只能在四個存儲區中進行數據傳輸,并且, 通過兩個中斷,約定了兩個時間段內處理器A和處理器B進行讀取的固定操作方式,這導致 了雙處理器之間進行數據傳輸的靈活性和通用性差。
發明內容
本發明提供一種雙處理器之間進行通信的方法,該方法能夠提高雙處理器之間進 行通信的靈活性和通用性。 —種雙處理器之間進行通信的方法,將DPRAM劃分為至少兩個通道區域,所述通 道區域包括用于傳輸上行數據的上行通道區域和用于傳輸下行數據的下行通道區域,所 有的上行數據通道區域對應一個郵箱(mailbox),所有的下行數據通道區域對應另一個 mailbox,為每個通道區域設置一個通道號,每個通道區域對應中斷指示中的一個位;雙處 理器內分別存儲了通道號與通道區域的地址之間的第一對應關系,還分別存儲了通道號與 mailbox中相應位之間的第二對應關系;該方法包括
所述雙處理器中的一個處理器在DPRAM中指定的通道區域內寫入數據,向與該指 定的通道區域對應的mailbox發送中斷指示;根據所述第二對應關系,將所述中斷指示中 與該指定的通道區域的通道號對應的位設置為讀取指示; 所述與該指定的通道區域對應的mailbox接收中斷指示后,向另一個處理器觸發 中斷; 所述另一個處理器讀取mailbox中的中斷指示,確定中斷指示中設置為讀取指示 的位,根據所述第二對應關系,確定與設置為讀取指示的位對應的通道號;在所述第一對應 關系中查詢出與確定的通道號對應的通道區域的地址,從相應的通道區域讀取數據。
從上述方案可以看出,本發明將DPRAM劃分為至少兩個通道區域,每個通道區域 用中斷指示中的一個位指示其讀取情況,實現了同時通過至少兩個通道區域進行數據傳 輸;而不是像現有技術那樣將DPRAM劃分為四個存儲區,只能在四個存儲區中采用固定的 方式進行數據傳輸;從而,提高了雙處理器之間進行數據傳輸的靈活性和通用性。
圖1為現有技術中雙處理器之間進行通信的流程實例,包括圖la和圖lb.;
圖2為本發明雙處理器之間進行通信的方法流程圖;
圖3為本發明雙處理器之間進行通信的流程實例一 ;
圖4為本發明雙處理器之間進行通信的流程實例二。
具體實施例方式
為使本發明的目的、技術方案和優點更加清楚明白,下面結合實施例和附圖,對本 發明進一步詳細說明。 DPRAM中包括用于傳輸數據的區域,通常所稱的對DPRAM進行劃分,便指的是 對用于傳輸數據的區域進行劃分;DPRAM中還包括用于在兩個處理器之間觸發中斷的兩 個mailbox,其中一個mailbox用于進行一個處理器向另一個處理器的中斷觸發,另一個 mailbox用于進行所述另一個處理器向所述一個處理器的中斷觸發;具體地,當一個處理 器需要通過DPRAM向另一個處理器觸發中斷時,該處理器向相應的mailbox寫入一個值,由 于從mailbox的一端口寫入任一值便可引起另一端口中斷引腳被拉低,另一端口 intr引腳 被拉低,也就實現觸發了另一處理器;這里,將向mailbox寫入的值稱為中斷指示。
本發明結合mai lbox的特性,不僅采用mailbox進行中斷觸發,還通過mailbox進 行通道號的通知,從而實現雙處理器之間的通信。具體地,本發明將DPRAM劃分為至少兩個 通道區域,所述通道區域包括用于傳輸上行數據的上行通道區域和用于傳輸下行數據的下 行通道區域,所有的上行數據通道區域對應一個mailbox,所有的下行數據通道區域對應另 一個mailbox,為每個通道區域設置一個唯一的通道號,每個通道區域對應中斷指示中的一 個位;預先在兩個處理器內分別存儲了通道號與通道區域的地址之間的第一對應關系,還 分別存儲了通道號與mailbox中相應位之間的第二對應關系。 在兩個處理器之間進行數據傳輸的方法流程圖為圖2所示,其包括以下步驟
步驟201,雙處理器中的一個處理器在DPRAM中指定的通道區域內寫入數據,向與 該指定的通道區域對應的mailbox發送中斷指示;根據所述第二對應關系,將所述中斷指示中與該指定的通道區域的通道號對應的位設置為讀取指示。
所述指定的通道區域為當前需要進行數據傳輸的通道區域。 讀取指示的設置例如為將相應的位設置為"l",表示讀取指示,而將相應的位設 置為"0"則不表示讀取指示;相反地,也可以將相應的位設置為"O",表示讀取指示,而將相 應的位設置為"1 "則不表示讀取指示。 步驟202,與該指定的通道區域對應的mailbox接收中斷指示后,向另一個處理器 觸發中斷。 步驟201與202可以無序執行。 步驟203,所述另一個處理器讀取mailbox中的中斷指示,確定中斷指示中設置為 讀取指示的位,根據所述第二對應關系,確定與設置為讀取指示的位對應的通道號;在所述 第一對應關系中查詢出與確定的通道號對應的通道區域的地址,從相應的通道區域讀取數 據。 DPRAM的兩個mailbox—般都為16位,mailbox的每個位對應一個通道區域,每個 通道包括一個上行通道區域和一個下行通道區域,相應地,通道數目最大可以為16,通道區 域的數目最大可以為32。根據將DPRAM劃分的通道數目選擇mailbox中位的使用數目,例 如,劃分為2個通道,則選擇中斷指示中的2個位表示讀取指示;再如,劃分為5個通道,則 選擇中斷指示中的5個位表示讀取指示,選擇出的每個位對應一個通道;等等;當劃分為16 個通道,即32個通道區域時,需要用中斷指示中的所有位,即16位表示讀取指示,這種情況 下,可以同時使用32個通道區域進行數據傳輸。需要說明的是,中斷指示并不僅限于16位 的情況。 在通道區域中進行數據寫入和數據讀取時,可以采用環形隊列方式實現。若采用 該方式,每個通道區域中除了包括用于進行數據寫入和讀取的有效數據單元外,還包括用 于存儲寫入數據時需要的頭指針的頭指針單元,以及存儲讀取數據時需要的尾指針的尾指 針單元。 寫入數據時,在該通道區域中的頭指針存儲單元內獲取頭指針,根據獲取的頭指
針向該通道區域中的有效數據單元中寫入數據,具體地,沿著頭指針指向尾指針的方向寫
入數據;并用完成數據寫入后的頭指針更新頭指針存儲單元中存儲的頭指針。 讀取數據時,在該通道區域中的尾指針存儲單元內獲取尾指針,根據獲取的尾指
針從該通道區域中的有效數據單元中讀取數據,具體地,沿著尾指針指向頭指針的方向讀
取數據;并用完成數據讀取后的尾指針更新指針存儲單元中存儲的尾指針。 在通道區域中進行數據寫入和數據讀取,并不僅限于環形隊列方式,還可以采用
現有技術中已經使用的多種實現方式。 將雙處理器用第一處理器和第二處理器表示,將第一處理器向第二處理器傳輸數 據的方向稱為下行,將第二處理器向第一處理器傳輸數據的方向稱為上行。為了便于說明, 下面以劃分的通道為2,即劃分的通道區域為4的情況對本發明方案進行舉例說明,劃分后 的通道區域包括通道0上行區域、通道0下行區域、通道1上行區域和通道1下行區域,這 里假設中斷指示為16位,選擇16位中的最低位和次低位表示讀取指示。如圖3所示,用 mailbox 1對應上行方向,中斷指示中的最低位對應通道O,次低位對應通道1 ;用mailbox2 對應下行方向,中斷指示中的最低位對應通道O,次低位對應通道1 ;在本實施例中第一處理器具體為圖中的CPU1 ,第二處理器具體為圖中的CPU2 ;將中斷指示中的位設置為"1 ",表 示讀取指示,設置為"0",不表示讀取指示。 通過通道O上行區域進行上行數據傳輸的過程為CPU2往通道0上行區域寫 入數據,往mailboxl寫入中斷指示OOOOOOOOOOOOOOOIB,其中B表示二進制,即當前在 上行方向上只通過通道O進行數據傳輸,向mailboxl進行寫入操作使得對應的中斷引 腳拉低;腿ilboxl檢測到引腳拉低,向CPU2觸發中斷;CPU2讀取mailbox 1中的中斷指 示0000000000000001B,由于最低位為1 ,則獲知需要從通道0上行區域中讀取數據,然后 CPU2清零mailboxl,從通道0上行區域中讀取數據。上述過程在圖中操作順序的001-> 002- > 003- > 004。 通過通道0下行區域進行下行數據傳輸的過程為CPU1往通道0下行區域寫入數 據,往mailbox2寫入中斷指示0000000000000001B,即當前在下行方向上只通過通道0進 行數據傳輸,向mailbox2進行寫入操作使得對應的中斷引腳拉低;mailbox2檢測到引腳拉 低,向CPU2觸發中斷;CPU2讀取mailbox2中的中斷指示0000000000000001B,由于最低位 為l,便獲知需要從通道O下行區域中讀取數據;然后CPU2清零mailbox2,從通道0下行區 域中讀取數據。上述過程在圖中操作順序的011- > 012- > 013- > 014。
同樣的道理,通過通道1進行數據傳輸的流程可通過圖4進行說明。
通過通道1上行區域進行上行數據傳輸的過程為CPU2往通道1上行區域寫入 數據,往mailboxl寫入0000000000000010B,即當前在上行方向上只通過通道1進行數據 傳輸,向mailboxl進行寫入操作使得對應的中斷引腳拉低;mailboxl檢測到引腳拉低,向 CPU1觸發中斷;CPU1讀取mailboxl中的中斷指示0000000000000010B,由于次低位為l,則 獲知需要從通道1上行區域中讀取數據,然后CPU1清零mailboxl,從通道1上行區域中讀 取數據。上述過程在圖中操作順序的101- > 102- > 103- > 104。 通過通道1下行區域進行下行數據傳輸的過程為CPU1往通道1下行區域寫入 數據,往mailbox2寫入0000000000000010B,即當前在下行方向上只通過通道1進行數據 傳輸,向mailbox2進行寫入操作使得對應的中斷引腳拉低;mailbox2檢測到引腳拉低,向 CPU2觸發中斷;CPU2讀取mailbox2中的中斷指示0000000000000010B,由于次低位為l,便 獲知需要從通道1下行區域中讀取數據;然后CPU2清零mailbox2,從通道1下行區域中讀 取數據。上述過程在圖中操作順序的111- > 112- > 113- > 114。 類似地,在上行方向上,還可以同時通過通道O和通道l進行數據傳輸,這種 情況下,CPU2往通道0上行區域和通道1上行區域分別寫入數據,往mailboxl寫入 0000000000000011B,向mailboxl進行寫入操作使得對應的中斷引腳拉低;CPU1檢測到引 腳拉低,向CPU2觸發中斷;CPU2讀取mailboxl中的中斷指示0000000000000011B,由于最 低位和次低位都為l,則獲知需要從通道O上行區域和通道l上行區域中讀取數據,然后 CPU2清零mailboxl,從通道0上行區域和通道1上行區域中讀取數據。
本發明將DPRAM劃分為至少兩個通道區域,每個通道區域用中斷指示中的一個位
指示其讀取情況,實現了同時通過至少兩個通道區域進行數據傳輸;而不是像現有技術那 樣將DPRAM劃分為四個存儲區,只能在四個存儲區中采用固定的方式進行數據傳輸;從而, 提高了雙處理器之間進行數據傳輸的靈活性和通用性。 以上所述的具體實施例,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施例而已,并不用于限定本發明的保 護范圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本 發明的保護范圍之內。
權利要求
一種雙處理器之間進行通信的方法,其特征在于,將雙端口隨機存取存儲器DPRAM劃分為至少兩個通道區域,所述通道區域包括用于傳輸上行數據的上行通道區域和用于傳輸下行數據的下行通道區域,所有的上行數據通道區域對應一個郵箱mailbox,所有的下行數據通道區域對應另一個mailbox,為每個通道區域設置一個通道號,每個通道區域對應中斷指示中的一個位;雙處理器內分別存儲了通道號與通道區域的地址之間的第一對應關系,還分別存儲了通道號與mailbox中相應位之間的第二對應關系;該方法包括所述雙處理器中的一個處理器在DPRAM中指定的通道區域內寫入數據,向與該指定的通道區域對應的mailbox發送中斷指示;根據所述第二對應關系,將所述中斷指示中與該指定的通道區域的通道號對應的位設置為讀取指示;所述與該指定的通道區域對應的mailbox接收中斷指示后,向另一個處理器觸發中斷;所述另一個處理器讀取mailbox中的中斷指示,確定中斷指示中設置為讀取指示的位,根據所述第二對應關系,確定與設置為讀取指示的位對應的通道號;在所述第一對應關系中查詢出與確定的通道號對應的通道區域的地址,從相應的通道區域讀取數據。
2. 如權利要求l所述的方法,其特征在于,所述mailbox為16位,所述通道區域的數目 最大為32。
3. 如權利要求1或2所述的方法,其特征在于,所述在DPRAM中指定的通道區域寫入數 據包括在所述指定的通道區域中的頭指針存儲單元內獲取頭指針,根據獲取的頭指針向所述 指定的通道區域中的有效數據單元中寫入數據,并用完成數據寫入后的頭指針更新頭指針 存儲單元中存儲的頭指針;所述從相應的通道區域讀取數據包括在所述指定的通道區域中的尾指針存儲單元內獲取尾指針,根據獲取的尾指針從所述 指定的通道區域中的有效數據單元中讀取數據,并用完成數據讀取后的尾指針更新指針存 儲單元中存儲的尾指針。
全文摘要
本發明公開了雙處理器之間進行通信的方法,包括將雙端口隨機存取存儲器DPRAM劃分為至少兩個通道區域,所述通道區域包括用于傳輸上行數據的上行通道區域和用于傳輸下行數據的下行通道區域,所有的上行數據通道區域對應一個郵箱mailbox,所有的下行數據通道區域對應另一個mailbox,為每個通道區域設置一個通道號,每個通道區域對應中斷指示中的一個位;雙處理器內分別存儲了通道號與通道區域的地址之間的第一對應關系,還分別存儲了通道號與mailbox中相應位之間的第二對應關系;本發明通過mailbox進行通信過程中通道號的通知,從而,實現雙處理器之間的通信。本發明方案提高了雙處理器之間進行通信的靈活性和通用性。
文檔編號G06F15/163GK101788973SQ20101000236
公開日2010年7月28日 申請日期2010年1月12日 優先權日2010年1月12日
發明者嚴克劍 申請人:深圳市同洲電子股份有限公司