崴泰科技是一家專業供應BGA返修設備的廠家,產品:BGA拆焊臺,BGA返修臺,BGA植球機,BGA自動除錫機和回焊爐等

聯系電話:18816818769  
bga返修設備供應商-崴泰科技

Powerpc處理器開發出穩定和易用可靠的仿真調試平臺

  PowerPC( MPC8270) 處理器是一款易用、穩定、可靠的仿真調試平臺。針對PowerPC體系結構,構建出一套完整的全系統模擬仿真平臺,并重點闡述了ELF解析、指令集解析、虛擬 MMU 和 時鐘中斷模塊的實現方法。

  嵌入式領域不斷增大的應用需求,而傳統的嵌入式軟件往往需要等待硬件平臺制作完成后才可以進行調試、開發,這極大的延遲了產品的研發周期,并且在實際硬件平臺上調試軟件也具有一定難度。所以,基于軟件環境開發一套可以仿真硬件平臺的系統( 即虛擬機)是十分必要的。虛擬機( Virtual Machine) 系統實際上是真實硬件平臺的一個軟件抽象。通過這里我們就可以看出BGA芯片返修行業又將迎來一次新的洗禮,對于BGA返修臺的制造要求更高了。

  Powerpc處理器開發出穩定和易用可靠的仿真調試平臺

  它以一個普通的應用程 序運行在宿主機的操作系統之上,它將目標平臺的 硬件行為抽象為宿主機的軟件行為,從而達到模擬的效果,軟件架構。PowerPC體系結構在嵌入式領域有著廣泛的應用和卓越的表現,構建一個針對它的仿真調試系統是十分必要的。

  所以本文以PowerPC體系結構為仿真目標,在X86體系結構的PC機上構建一個全系統虛擬化調試平臺。 1、虛擬平臺總體設計 1. 1 平臺整體設計本仿真平臺主要是針對MPC8270這一款高性能、低功耗32 位超標量RISC微處理器。其是Power-QUICC TM II族的一款CPU,使用了E603的核心工作頻率最高可達450MHz,擁有獨立的16k數據和程序 cache,以及獨立的 DMMU 和 IMMU。
多接口Powerpc處理器
  擁有多種可定制接口,廣泛應用于網絡交換機和工業控制模塊中。 虛擬機系統框架圖整個仿真平臺核心功能就是在一臺X86架構的機器上,仿真一個PowerPC平臺,可以如真實的硬件平臺一樣加載運行相應的PowerPC的可執行文件,并提供更方便的調試接口。

  MPC8270 軟件仿真平臺主要分為三層,整體架 構如圖 2 所示: 1) 目標層: 目標 PowerPC 平臺上的運行環境; 區進行讀寫操作。已達到調試的目的。

  PowerPC 體系結構映射單元: 此單元維護了 源體系結構寄存器映射表,主要用于解釋執行和維 護 PowerPC 體系結構的各個寄存器在運行時狀態。

  虛擬化層: 整個系統的核心,即運行在主機 系統的虛擬機進程;平臺工作流程 PowerPC 虛擬調試平臺首先分析帶有調試信息 主機層: 實際宿主機的運行環境。
Powerpc處理器運行環境
  分析出行號表( 即執行指令對應的程 序地址),變量地址以及對應的可執行文件。而后 我們將分析好的可執行加載進虛擬機中。而后虛 擬機開始執行加載進來的可執行文件。其內部以 一種 busyloop 的方式實現,首先檢查是否有外部的 回調函數,外部可以通過此接口完成與虛擬機的通 信。而后檢查將要執行指令是否有斷點,如果有斷 點則暫停運行,控制權交由上層的圖形界面操作。 最后執行 interpret 完成取址、譯碼與執行。

  

仿真平臺總體結構各個模塊主要功能如下:

  1. 虛擬機總控模塊: 負責整個系統的初始化, 虛擬機的空間申請以及釋放,協調各個的消息傳遞。

  2.ELF 文件分析與加載模塊: 分析可執行文件 的 ELF 格式,分析出相應的行號,符號信息。識別 相應的數據段、代碼段等信息。并加載可執行文件 到相應的內存區域。

  3.MMU 仿真模塊: 仿真實際硬件的 DMMU 和 IMMU,分別用于數據和指令的地址轉換,由虛擬地 址翻譯為物理地址。

  4. 解釋器模塊: 即將相應指令 PPC 指令翻譯 為 x86 指令執行的模塊。這里為了達到與真實系統 執行完全一致,選取了經典的處理器的取址-譯碼- 執行循環。這樣可以保證在任何指令處下斷點都 可以與真實系統的執行結果一致。

  5.調試接口模塊: 主要負責外部與虛擬機的通 信,可以向虛擬系統下斷點、設置監視點??梢栽?暫停虛擬機執行的狀態下,對虛擬機的數據或程序 圖 3 平臺工作流程 , 7692 科學技術與工程11卷作數,以及一個目的操作數。
仿真平臺總體結構各個模塊主要功能
  這一指令格式的一些 變種使用部分目標和源寄存器操作數說明符作為 立即字段或作為擴展的操作碼。Rc 標記是否記錄 狀態寄存器。

  

仿真平臺模塊實現

  1.指令解釋 PowerPC 做為一款 RISC 處理器,所有指令的編 碼長度都是 32 位。PowerPC 的位編號方式比較特 別: 第 0 位是最重要的位,第 31 位是最不重要的 位。指令首先由一個字段中較高的 6 位進行解碼, 這 6 位被稱為主要操作碼( primary opcode) 。其余 26 位包含的字段分別是操作數說明、立即( immedi- ate) 操作數以及擴展的操作碼( opcode) ,而且這些 還可能是保留的位或字段。

  

PowerPC 定義的基本指 令格式有如下幾種:

  1. D-form 指令格式 條件轉移指令使用的是這一指令格式。BO 指 令字段指定了條件的類型; BI 指令字段指定了以哪 個 CR 位作為條件; BD 字段用作轉移位置。AA 位 指定了轉移是絕對轉移還是相對轉移。LK 位指定 了下一個順序指令的地址是否作為子例程調用的 返回地址保存在鏈接寄存器中。

  2. D-form 指令格式 這一指令格式提供至多兩個寄存器作為源操作數 一個立即源,至多兩個寄存器作為目的操作數。這一指 令格式的一些變種使用部分目標和源寄存器操作數說 明符作為立即字段或作為擴展的操作碼。

  3.無條件轉移指令使用這一指令格式。由于是 無條件的,BD 格式中的 BO 和 BI 字段改變為另外 的轉移位置,以構成 LI 指令字段。 同 BD 格式一 樣,這一指令格式也支持 AA 和 LK 位。

  對于一個真實的嵌入式系統,我們只需把可執 行的二進制文件燒錄進相應的存儲單元即可。我們的虛擬調試系統為了做到對真實硬件平臺的完 全仿真,我們的執行步驟也是遵循硬件執行指令的經典步驟 : 取址、譯碼、執行。

  D-form 指令格式 這一指令格式提供至多兩個寄存器作為源操 作數,至多兩個目的操作數。這一指令格式的一些 變種使用部分目標和源寄存器操作數說明符作為 立即字段或作為擴展的操作碼。

  取址: 通過訪問內存得到 32 位的指令碼。 譯碼: 譯碼的過程實際上就是找到相應指令

  A-form 對應的處理函數。我們按照每條指令的 0 至 5 位進 行一次 hash 操作,得到一個處理函數的入口。如果 此指令還有擴展操作碼或者其他標志位,我們在處 理函數中通過第二次 hash 找 到最終的函數入口。 實踐表明,這種譯碼方式比樹形的查找更加迅速。

  這一指令格式提供至多三個寄存器作為源操

  執行: 調用譯碼過程查找到的處理函數。

  debug_macinfo&. debug _pubtypes: 包含全局 對象和函數的查找表

  debug_ranges: DIE 的引用地址區間 7) . debug _ str: 包含. debug _ info 段中使用的符 號表。

  里通過指向函數的指針以實現對上一層程序的接 口一致。

  2. 2 ELF 文件解析 最為一個調試系統,最基本的功能就是在函數 中設置斷點,讓虛擬機在執行到有斷點的語句時暫 停,為了實現這個功能,調試系統必須知道高級語 言中的語句與機器代碼地址的映射關系,即行號表 ( line number) ; 并且需要知道各個變量被存儲的地 址,以達到分析執行狀態的目的,這便需要符號信 息。

  這些信息被封裝在 ELF ( Executable and Link- 2. 3 時鐘中斷的實現 時鐘中斷是十分重要的中斷,操作系統的運行 是依賴時鐘中斷,例如任務調度,以及眾多有超時 的函數調用。其相關寄存器是有: DEC 和 TB ( Time Base) 寄存器。

  其中 TB 是一個 64 位寄存器,由 TBL 和 TBU 構成,其中 TBL 表示低 32 位,TBU 表示高 32 位。他在每個時鐘周期后自增 1。而 DEC 寄存器已 TB 寄存器自增的頻率自減??梢酝ㄟ^指令 mfspr 和 able Format ) 格 式 文 件 中。 ELF 文 件 格 式 最 初 由 UNIX 系統實驗室開發,目前已成為 32 位操作系統 環境下較為通用的可執行文件格式。ELF 文件作用 有 2 個:

  其一為構建程序,主要體現在連接過程中, 這與我們的調試系統無關。這里主要分析的是用 于運行程序的 ELF 文件,其大體結構如圖 9 所示。 mtspr 進行讀寫,當向 DEC 中寫入一個大于 0 的值時, 它將在下一個時鐘周期后自減 1。當 DEC 自減至 0 時,便會觸發時鐘中斷( 除非 MSR〔EE〕將其屏蔽) 。

  由于 MPC8270 擁有亂序執行的能力,并且擁有 多條并行的流水線和執行單元,由于仿真這些操作 對虛擬機的性能影響極大,并且他對于調用沒有很 大的好處,我們這里就簡化了時鐘的仿真,DEC 值 時隨著指令的執行而減少。我們建立一個數組區 來存儲每條指令執行的周期,然后在指令執行后 DEC 減少相應的值。這樣導致仿真的時間并不十 分精確。但簡單易行,可以滿足實際應用需求。

  MMU 仿真模塊的實現 MMU 即 Memory Management Unit 它是 CPU 中用 來管理虛擬存儲器、物理存儲器的控制線路,同時也負 責虛擬地址映射為物理地址,以及提供硬件機制的內 存訪問授權,是支持眾多操作系統運行所必須的模塊。 PowerPC 處理器的 MMU 是完全支持段頁式管 理 的,整體結構如圖 10 所示。

  其中段寄存器負責將 有效地址翻譯為內部虛擬地址,頁表負責將虛擬地 址 翻譯為物理地址?,F代操作系統一般對分段支 持較弱,主要使用分頁的功能。 MMU 有2 個重要的模塊: 圖 9 ELF 文件結構 段主要描述各個段的信 息,這里我們主要關注. text 段( 執行段) ,和一系列包含調試信息的. de- bug 段( 即 DWARF) 。 在 ELF 文件中所有的調試信息都以DWARF( De- bugging With Attributed Record Format ) 格式組織起來, DWARF 最基本的描述個體為 DIE( Debugging Information Entry) 。每個 DIE 都有自己的標簽( 包含類型和一系列 屬性) 。

  DIE 以兒子兄弟樹的結構存儲,屬性值可以指向 其他的DIE。其主要包括以下幾項: 1) . debug_frame: 含有調用棧的信息

  debug _ info: ( DIES) DWARF 包 含 的 核 心 數 據 1) TLB( Translation Lookaside Buffer) 頁表旁路 緩沖,其保存了最近所使用的頁表地址翻譯,可以 加速頁表的查詢。

  debug_line: 包含行號信息 4) . debug_loc: 包含宏的描述7694 科學技術與工程11卷圖10MMU 整體結構我們在模擬MMU時也保持其與真實的硬件操 作一致。

  其大體流程首先得到進程 ID,切換到目標上下文環境,檢查是指令訪存還是數據訪存;

  檢查MSR寄存器,查看地址轉換功能是否開啟,如果沒開啟則有效地址就是物理地 址,可直接訪問內存;

  查看BAT是否命中,如果 命中則可以跳過地址翻譯步驟,直接檢查訪問權限,未命中則繼續;

  執行段翻譯,將有限地址翻譯為內 部虛擬地址;

  執行頁翻譯前首先查看 TLB,看相關 翻譯是否已被緩存;

  執行頁翻譯,將虛擬地址翻譯 為物理地址,并更新相關 TLB 信息;

  檢查訪問權 限,如果權限不夠則會引發相關;

  完成地址翻譯。MMU 仿真流程 2 ) BAT ( Block Address Translation) ,他是由軟 件控制的一個數組,用來緩存有效的塊地址翻譯。

  通過上文崴泰小編詳細的說明了Powerpc處理器開發出穩定和易用可靠的仿真調試平臺。Powerpc處理器是一個代表著高水準的仿真調試平臺。

上一篇: 下一篇:
展開