專利名稱:多處理器系統以及使多處理器系統的調試處理同步的方法
技術領域:
本發明涉及使得多處理器系統的調試處理同步的方法和系統。
背景技術:
在計算機系統的研發過程中,硬件和/或軟件的調試是很復雜的 工作。對于多處理器系統來說,這項工作甚至更困難和復雜。通常, 在片上系統(簡稱為SoC)上集成了一個或多個微處理器或數字信號 處理器,所述片上系統包括對諸如ROM、 RAM、 EEPROM之類的存 儲器,包括計數定時器、實時定時器、電源之類的外設,諸如USB、 以太網、FireWire線纜和模擬接口之類的外部接口等的選取。當調試 這樣的多處理器系統時,在處理器中的一個發生故障的情況下,理想 的是停止其他處理器,使得錯誤數據不會通過通信網絡而傳播。例如, 當利用多個調試器來調試多個處理器時,發生了以下不同的問題
一當調試器給出用于第一處理器的運行命令時,片上系統同
步硬件檢測該運行命令并且停止第一處理器直到第二處理器
得到該運行命令為止。
一當用戶給出RUN命令時,調試器聲明(assert) STEP和 RUN信號。當調試器從之前遇到的斷點啟動處理器時,這種 操作是典型的。在片上系統內,這個順序像是兩個獨立的RUN 命令。通過處理器同步的簡單實現,第二處理器根據第一處理 器的第一步進命令而啟動,并且在該步進完成之后停止,這并 非想要的操作。應該避免這些"虛警"。 而且,在片上系統的主機側上包括標準調試器,這些調試器并 非設計用于多核調試,并且不知道連接到片上系統的其他處理器或調 試器。當調試一個處理器時,在這樣的多處理器系統中開啟和停止處
5理器和外設期間的通常問題是,用戶想檢查當第一處理器遇到停止條 件時第二處理器做些什么。而且,在系統被調試并且可能進入暫停時 第二處理器可以改變系統的狀態,同時等待來自第一處理器的響應, 并且在調試失敗之后再次啟動。如果像DMA (直接存儲器存取)控 制器或定時器的外設保持運行而系統被調試,則所述外設也能改變系 統的狀態。因此,想要的是處理器的同步運行和停止。
在JP 2228742A1中,描述了針對多個處理器的同步調試方法。 例如,在存儲跟蹤信息時,處理器將中斷信號輸出到中斷信號線并將 其發送到其他處理器。因此,其他處理器定時地和同時地接收該中斷 信號,并且同時將同步信號標志作為跟蹤信息存儲在它們自己的跟蹤 存儲器中。隨后,在處理器的跟蹤存儲器中存儲和保持了同步信號標 志,這些同步信號標志相對于時間彼此不存在偏移。因此,消除了處 理器的執行程序的歷史之間的時間延遲,并且使得這些處理器彼此同 步以執行安全調試。這些同步調試方法使用了中斷信號和同步信號標 志以及跟蹤信息,而沒有處理器的同步啟動和停止。
發明內容
因此,本發明的一個目的是提供一種用于使得多處理器系統的 調試處理同步的方法和系統,其提供了包括使處理器彼此察覺到啟 動、停止和調試的同步機制。
包括本發明的特征的使得多處理器系統的調試處理同步的方法 和系統解決了給出的問題。
在各個從屬權利要求中給出了本發明的有利實施例。
根據本發明,給出了用于使得具有多個處理器的多處理器系統
的調試處理同步的方法,包括以下步驟
如果通過STOP信號請求用于處理器之一的調試處理,那么對 其他處理器聲明HALT信號直到對它們聲明了用于調試請求的STOP 信號為止,
對己經完成調試處理的每個處理器聲明各自的HALT信號直到 其他處理器已經完成它們各自的調試處理,在取消對全部HALT信號和/或STOP信號的聲明并且完成全部 調試處理之后,同步啟動全部處理器。
如果實際上允許處理器運行,那么除了用于調試請求(簡稱為 DBREQ信號)的常規STOP信號之外的這種HALT信號的實現方式 允許處理器同步啟動,另外聲明了HALT信號。而且,HALT信號允 許同步停止。常規調試器(諸如所謂的AxD或者例如gdb調試器) 按步執行并且隨后在用戶給出RUN命令時運行。在調試器從斷點啟 動處理器時以及在通過將"斷點指令"插入調試代碼來實現斷點時, 這種操作是典型的。例如,調試器越過斷點,再次設置斷點,并且隨 后運行處理器。對于同步停止來說,其他處理器根據調試器的第一 STEP命令啟動并且在該STEP完成之后停止。當調試器現在給出最 終的RUN命令時,其他處理器已再次處于調試模式中。為了檢測處 理器是否已經停止以及另外檢測其各自的調試器是否已經完成調試 處理,必須對剩余處理器的STOP信號進行聲明。在處理器已經停止 的情況下,在調試器和調試處理仍在起作用時,僅聲明額外的HALT 信號。由下文提出并描述的所述HALT信號和兩個交叉觸發器矩陣 的方案作出以下假設,調試模式信號(簡稱為DBGMODE)的快速 轉換(toggling)表示"自動調試器相互作用"而慢速轉換表示"用 戶相互作用"。所述HALT信號能夠被分成pre-HALT信號和 post-HALT信號。如果單獨一個處理器已經處于調試模式,那么在未 處于調試模式的各個處理器上pre-HALT信號停止。在已經完成調試 處理的各個處理器上Post-HALT信號停止,直到其他處理器己經完 成了調試處理為止。
在可能的實施例中,如果聲明了請求各個處理器的調試處理的 STOP信號,那么就取消對各個處理器的pre-HALT信號的聲明。換 言之STOP信號優先于HALT信號,g卩,當聲明了STOP信號時, 各個HALT信號不起作用。在可替代的具體實施例中,取消各個處 理器的pre-HALT信號的聲明直到定時器和/或計數器己經從預定值 倒計數到0值為止。在另一具體實施例中,當對各個處理器的 pre-HALT信號的聲明已經經過預定時間和/或預定迭代數目時,聲明該處理器的STOP信號。當各個HALT信號在"足夠的時間段"上處 于穩定時或者當(例如通過總線系統)寫入STOP—SETTLED位時, 僅聲明STOP信號。可通過內部計時器或計數器或者例如通過控制器 或調試監測器例如在主機側從外部自動完成對實際時間或 STOP—SETTLED位的狀態的檢測。
在另一實施例中,如果請求了用于各個處理器的調試處理,那 么就取消對該處理器的STOP信號以及已聲明的HALT信號的聲明。 可以通過各個處理器聲明調試模式信號(簡稱為DBGMODE)或者 通過在處理器上運行的調試監測器經由總線系統聲明調試模式標志 來請求調試處理。
有利地是,取消對各個處理器的post-HALT信號的聲明直到每 個處理器都進入RUN狀態為止。特別地,如果全部處理器已經完成 它們的調試模式,那么就取消早先已經完成其調試模式的各個處理器 的post-HALT信號。
在有益的實施例中,實現了兩個交叉觸發器矩陣。實現HALT 矩陣和STOP矩陣來生成上述HALT信號和/或STOP信號。兩個矩 陣包括作為每個處理器的輸入信號的調試模式信號,該矩陣生成了作 為每個處理器的輸出信號的HALT信號或STOP信號。
實現本發明的目的的技術方案包括用于使得具有多個處理器的 多處理器系統的調試處理同步的系統,所述系統包括
兩個交叉觸發器矩陣,包括作為每個處理器的輸入信號的調試 模式信號以及作為每個處理器的輸出信號的STOP信號和HALT信 號,
如果通過另一交叉觸發器矩陣的STOP信號請求針對處理器之 一的調試處理并且直到另一交叉觸發器矩陣對其他處理器聲明用于 調試請求的各自的STOP信號為止,交叉觸發器矩陣之一對其他處理 器聲明HALT信號,
所述交叉觸發器矩陣對己經完成調試處理的每個處理器聲明各 自的HALT信號直到其他處理器已經完成它們的各自的調試處理為 止,在取消對全部HALT信號和/或STOP信號的聲明并且完成全部 調試處理之后,全部處理器同步啟動。
在所述調試系統中,有利地是,每個處理器在至少三條數據線 上與所述兩個交叉觸發器矩陣相連,該三條數據線包括一條用于所述 HALT信號的數據線、 一條用于所述STOP信號的數據線以及一條用 于調試模式信號的數據線。為了檢測并提供調試處理模式和/或請求, 每個處理器都與各自的調試器模塊相連。
本發明的用于多處理器系統的一種簡單的同步調試方法是有利 的在一個或多個處理器的調試模式期間,通過利用兩個交叉觸發器 矩陣來對用于同步啟動和/或停止處理器的額外的HALT信號進行聲 明或取消聲明。
圖1示出了利用包括兩個交叉觸發器矩陣的三個處理器來使得 多處理器系統的調試處理同步的系統的框圖,
圖2示出了針對具有兩個處理器的多處理器系統的兩個交叉觸 發器矩陣的輸出信號的狀態轉換圖。
具體實施例方式
以下將更具體地來描述本發明。
圖1示出了用于使得包括三個處理器2.1-2.3的多處理器系統2 的調試處理同步的系統1的框圖。系統1包括具有兩個交叉觸發器矩 陣3.1和3.2的交叉觸發器邏輯3。 一個交叉觸發器矩陣3.1將從各 個調試模式信號DBGM#2.1到DBGM#2.3生成各個處理器2.1到2.3 的HALT信號HALT#2.1到HALT#2.3。另一個交叉觸發器矩陣3.2 將從各個調試模式信號DBGM#2.1到DBGM#2.3生成各個處理器2.1 至U 2.3的STOP信號STOP#2.1至U STOP#2.3。
在調試系統1中,每個處理器2.1到2.3均與至少三條數據線上 的所述兩個交叉觸發器矩陣3.1和3.2連接,該三條數據線包括一條 用于所述HALT信號HALT#2.1到HALT#2.3的數據線、 一條用于所述STOP信號STOP#2.1到STOP#2.3的數據線以及一條用于所述調 試模式信號DBGM#2.1至UDBGM弁2.3的數據線。為了檢測各自的調 試處理模式和/或提供調試處理請求,每個處理器2.1到2.3均與各個 調試器模塊4.1到4.3連接。
可由處理器2.1到2.3的各自的調試器4.1到4.3來聲明調試模 式信號DBGM#2.1至U DBGM#2.3。可選地,可通過調試監測器來聲 明調試模式標志,從而經由各個處理器2.1到2.3來聲明調試模式信 號DBGM#2.1至lj DBGM#2.3。
本發明涉及用于對所述多處理器系統2的調試處理進行同步的 方法。現在利用用于多處理器系統2的狀態轉換圖來具體描述調試方 法的可能的實施例,該多處理器系統2包括利用用于交叉觸發的交叉 觸發器邏輯3的兩個處理器2.1到2.2,并且所述兩個處理器2.1到 2.2的同步開始和停止。
圖2示出了用于具有兩個處理器2.1和2.2的多處理器系統1的 兩個交叉觸發器矩陣3.1和3.2的輸出信號HALT//2.1到HALT#2.2 和STOP#2.1至'」STOP#2.2的狀態轉換圖的可能的實施例。
為了在調試處理期間使得處理器2.1和2.2彼此同步,存在以下 不同的具體步進和定時點
定時點1:兩個處理器2.1和2.2都在運行。
定時點2:如果針對處理器2.1到2.2之一聲明了調試模式信號 DBGM#2.1到DBGM#2.2,那么有利地配置交叉觸發器邏輯3來生成 HALT信號HALT#2.1至lj HALT#2.2和STOP信號STOP#2.1到 STOP#2.2。如果在至少2秒內聲明了各自的HALT信號HALT#2.1 到HALT#2.2,貝lj STOP矩陣3.2被配置來例如生成STOP信號 STOP#2.1至lj STOP#2.2。
定時點3:針對處理器2.1聲明了調試模式信號DBGM#2.1。如 果設置了調試模式信號DBGM#2.1,則處理器2在調試處理期間遇到 斷點,并且對另外的處理器8聲明各自的HALT信號HALT弁2.2。處 理器2.2現在處在暫停狀態并且停止。處理器2.1處在調試處理中。
定時點4:在內部和/或外部定時器或計數器從預定值(例如從2秒鐘)倒計時到0值之后,可以取消用于處理器2.2的各自的HALT 信號HALT#2.2的聲明。另外或可選地,由各個處理器2.2的各自的 STOP信號STOP#2.2來取消對各自的HALT信號HALT#2.2的聲明, 各自的STOP信號STOP#2.2請求所述處理器2.2的調試處理并且在 定時器或計數器達到0值之后或者如果用戶已經設置調試處理模式 標志而自動聲明。請求各個處理器2.2的調試處理的聲明的STOP信 號STOP#2.2聲明了交叉觸發器邏輯3中的調試模式信號DBGM#2.2。 現在,處理器2.2和處理器2.1 二者都運行在調試處理中。
定時點5:在啟動的調試處理期間,處理器2.1到2.2與它們的 調試器4.1到4.2進行通信,反之亦然。
定時點6:調試器4.1給出運行命令RUN,這產生了用于各個 處理器2.1的步進和運行命令。處理器2.1從斷點運行。
定時點6a:調試器4.1的步進命令通常取消對調試模式信號 DBGMM.1的聲明。因為另一個處理器2.2仍處在調試處理中,所以 聲明用于各個處理器2.1的HALT信號HALT弁2.1直到所述處理器2.2 己經完成了其各自的調試處理為止。處理器2.1保持在暫停狀態直到 處理器2.2已經完成了其各自的調試處理為止。直到處理器2.1處于 運行狀態才能提供來自調試器4.1的步進命令。調試器4.1等待對開
始步進命令的響應。'
定時點7:各個處理器2.2的調試器4.2聲明運行命令。利用調 試器4.2的運行命令來取消調試模式信號DBGM#2.2的聲明。同樣取 消各個處理器2.1的HALT信號HALT弁2.1的聲明直到所述處理器2.2 進入RUN狀態為止。全部處理器2.1和2.2都處于RUN狀態。
定時點8:調試器4.1被設置一個請求。處理器2.1再次進入調 試模式。在步進命令完成之后,聲明另一個處理器2.1的調試模式信 號DBGM#2.1和HALT信號HALT#2.1。
定時點9:調試器4.1設置運行命令,以完成從處理器2.1斷點 開始的運行。取消對調試模式信號DBGM#2.1和HALT信號 HALT#2.2的聲明并且同步啟動處理器2.1和2.2。因為例如在聲明調 試模式信號DBGM#2.1之后的小于2秒內調試器4.1設置了運行命
11令,所以沒有聲明各自的調試模式信號DBGM#2.2。
總的來說,使用HALT信號HALT#2.1到HALT#2.3來使得處 理器2.1到2.3彼此停止。當各自的調試器4.1到4.3己經完成調試 處理以及與各個處理器2.1到2.3的自動交互時,各自的STOP信號 STOP#2.1至lj STOP#2.3代替了各自的HALT信號HALT#2.1到 HALT#2.3。此時,調試器4.1到4.3和處理器2.1到2.3等待用戶輸 入。當調試器4.1到4.3把各個處理器2.1到2.3相繼設置在RUN狀 態時,HALT矩陣3.1防止這些處理器實際執行直到最后的處理器2.1 到2.3已經完成其調試處理并且進入RUN狀態。
權利要求
1. 一種用于使具有多個處理器(2.1-2.3)的多處理器系統(1)的調試處理同步的方法,包括以下步驟如果通過STOP信號(STOP#2.1-STOP#2.3)請求用于處理器(2.1-2.3)之一的調試處理,那么對其他處理器(2.1-2.3)聲明HALT信號(HALT#2.1-HALT#2.3)直到對它們聲明了用于調試請求的STOP信號(STOP#2.1-STOP#2.3)為止,對已經完成調試處理的每個處理器(2.1-2.3)聲明各自的HALT信號(HALT#2.1-HALT#2.3)直到其他處理器(2.1-2.3)已經完成它們各自的調試處理,在取消對全部HALT信號(HALT#2.1-HALT#2.3)和/或STOP信號(STOP#2.1-STOP#2.3)的聲明并且完成全部調試處理之后,同步啟動全部處理器(2.1-2.3)。
2. 如權利要求1所述的方法,其中如果聲明了請求處理器 (2.1-2.3)調試處理的STOP信號(STOP#2.1-STOP#2.3),那么就取消對該處理器(2.1-2.3)的HALT信號(HALT#2.1-HALT#2.3)的聲明。
3. 如權利要求1或2所述的方法,其中取消對所述處理器 (2.1-2.3)的HALT信號(HALT#2.1-HALT#2.3)的聲明直到預定定時器和/或計數器己經達到O值為止。
4. 如前述權利要求之一所述的方法,其中當對處理器(2.1-2.3) 的HALT信號(HALT#2.1-HALT#2.3)的聲明已經經過預定時間和/ 或預定數目的迭代時,聲明該處理器(2.1-2.3)的STOP信號(STOP#2.1-STOP#2.3)。
5. 如前述權利要求之一所述的方法,其中如果請求了用于處理器(2.1-2.3)的調試處理,那么就聲明該處理器(2.1-2.3)的STOP 信號(STOP#2.1-STOP#2.3)。
6. 如前述權利要求之一所述的方法,其中取消對各個處理器 (2.1-2.3)的HALT信號(HALT#2.1-HALT#2.3)的聲明直到每個處理器(2.1-2.3)都進入RUN狀態為止。
7. 如前述權利要求之一所述的方法,其中如果處理器(2.1-2.3) 運行在調試處理中,那么就取消對該處理器(2.1-2.3)的HALT信號(HALT#2.1-HALT#2.3)禾口 STOP信號(STOP#2.l-STOP#2.3)的聲明。
8. 如前述權利要求之一所述的方法,其中實現兩個交叉觸發器 矩陣(3.1,3.2),這兩個交叉觸發器矩陣(3.1, 3.2)包括作為每個 處理器(2.1-2.3 )的輸入信號的調試模式信號(DBGM#2.1-DBGM#2.3),這兩個交叉觸發器矩陣生成了作為每個 處理器(2.1-2.3)的輸出信號的HALT信號(HALT#2.1-HALT#2.3) 禾口STOP信號(STOP#2,l-STOP#2.3)。
9. 一種用于使得具有多個處理器(2.1-2.3)的多處理器系統(l) 的調試處理同步的系統,包括兩個交叉處理器矩陣(3.1, 3.2),包括作為每個處理器(2.1-2.3) 的輸入信號的調試模式信號(DBGM#2.1-DBGM#2.3)以及作為每個 處理器(2.1-2.3)的輸出信號的STOP信號(STOP#2.1-STOP#2.3) 和HALT信號(HALT#2.1-HALT#2.3),如果通過 一 個交叉觸發器矩陣(3.2 )的STOP信號 (STOP#2.1-STOP#2.3)請求用于處理器(2.1-2.3)之一的調試處理 并且直到這個交叉觸發器矩陣(3.2)對其他處理器(2.1-2.3)聲明 用于調試請求的各自的STOP信號(STOP#2.1-STOP#2.3)為止,另 一交叉觸發器矩陣(3.1)對所述其他處理器(2.1-2.3)聲明HALT信號(HALT#2.1-HALT#2.3),所述另一交叉觸發器矩陣(3.1)對已經完成調試處理的每個處 理器(2.1-2.3)聲明各自的HALT信號(HALT#2.1-HALT#2.3)直 到其他處理器(2.1-2.3)已經完成它們各自的調試處理為止,在取消全部HALT信號(HALT#2.1-HALT#2.3)和/或STOP信 號(STOP#2.1-STOP#2.3)的聲明并且完成全部調試處理之后,全部 處理器(2.1-2.3)同步啟動。
10. 如權利要求9所述的系統,其中每個處理器(2.1-2.3)在至 少三條數據線上與所述兩個交叉觸發器矩陣(3.1, 3.2)相連,該三 條數據線包括一條用于所述HALT信號(HALT#2.1-HALT#2.3)的 數據線、 一條用于所述STOP信號(STOP#2.1-STOP#2.3)的數據線 以及一條用于調試模式信號(DBGM#2.1-DBGM#2.3)的數據線。
11. 如權利要求9或IO所述的系統,其中每個處理器(2.1-2.3) 都與各自的調試模塊(4.1-4.3)相連。
全文摘要
本發明涉及用于使具有多個處理器(2.1-2.3)的多處理器系統(1)的調試處理同步的方法和系統,該方法包括以下步驟如果通過STOP信號(STOP#2.1-STOP#2.3)請求用于處理器(2.1-2.3)之一的調試處理,那么對其他處理器(2.1-2.3)聲明HALT信號(HALT#2.1-HALT#2.3)直到對它們聲明了用于調試請求的STOP信號(STOP#2.1-STOP#2.3)為止;對已經完成調試處理的每個處理器(2.1-2.3)聲明各自的HALT信號(HALT#2.1-HALT#2.3)直到其他處理器(2.1-2.3)已經完成它們各自的調試處理為止;在取消全部HALT信號(HALT#2.1-HALT#2.3)和/或STOP信號(STOP#2.1-STOP#2.3)的聲明并且完成全部調試處理之后,同步啟動全部處理器(2.1-2.3)。
文檔編號G06F11/36GK101506777SQ200780031145
公開日2009年8月12日 申請日期2007年8月20日 優先權日2006年8月21日
發明者烏韋·施特伯 申請人:Nxp股份有限公司