<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種新的嵌入式處理器在線調試方法

          一種新的嵌入式處理器在線調試方法

          作者: 時間:2011-03-14 來源:網絡 收藏

            3. 2 斷點設置機制

            產生DI 時由于會立即執(zhí)行DR,從而中斷正常的執(zhí)行流程轉為為服務,因此決定DI 產生的時機是實現斷點機制的核心。DI 信號是通過監(jiān)測的取指令地址( Instruction Address, IA)產生的。直接通過一個比較器將IA 與一個數據比較一次只能設置一個斷點,為了解決此矛盾采用了如下: 在UDM 中用雙口RAM 存儲斷點配置信息,使RAM 中的每1bit 與程序存儲區(qū)的一個地址對應起來,數據為1 代表設置了斷點,0 代表沒有。

            將輸入的IA 進行地址變換后對RAM 存儲區(qū)尋址,使得RAM 在一端輸出一個正好代表輸出的地址處是否設置了斷點信息,再根據此數據就可生成正確的DI 信號。在雙口RAM 的另外一端,斷點設置情況可以方便地被修改。這樣一來可以設置的斷點個數變?yōu)橹饕躑DM 中雙口RAM 容量限制了。

            3. 3 服務程序

            只需在DR 中保證不對目標程序的內外部環(huán)境造成改變,就等效于實現了處理器的掛起功能。因此,需要將DR 和目標程序的執(zhí)行環(huán)境隔離開來,這可以通過對編譯器進行某些設置或強制的編碼規(guī)范來實現。在處理器被掛起之后,DR 與外部主機通信,通過查詢命令寄存器的方式響應調試主機發(fā)出的各種調試命令。這些命令包括: 將有關的調試信息搬移到外部調試主機可以觀察的緩存區(qū)中、修改Memory 空間中的數據、退出DR 使目標程序繼續(xù)執(zhí)行等。由于DR 必須與目標程序使用相互隔離的資源并且小型處理器中代碼容量,外部Memory空間大小等都比較受限,因此DR 的設計應該盡可能占用較少的端口數、通用寄存器數和代碼總行數。

            4 設計實例

            Xilinx 公司的PicoBlaze 是一種常用的小巧型處理器,它由ALU、程序計數器棧( 適用于嵌套子程序) 、16 個8 位通用寄存器、64 字節(jié)RAM 構成的暫存器、程序計數器和控制器以及中斷支持電路構成,其代碼容量為1024。本節(jié)以針對PicoBlaze 的應用為例,設計了一個具體的UDM,并在Spartan3S5000FPGA 上進行了實際驗證。該UDM 使用的硬件資源為1 個18KB BRAM 和62 個Spartan - 3邏輯片,軟件資源為61 行匯編代碼,具備的功能如下:

            ·可同時在每一行代碼處設置斷點,在沒有設置斷點的情況下,可強制產生DI,從而運行DR 輸出調試信息;

            ·可以觀察到的調試信息為: 程序計數器PC的值、s0 ~ sb 寄存器、64byte 的暫存器,Memory 空間中的數據,在DR 運行時可以刷新上述調試信息。

            4. 1 硬件實現

            基于PicoBlaze 處理器應用的UDM 硬件結構如圖2 所示。UDM 與調試終端和PicoBlaze 都有總線接口,因此其內部寄存器分為3 類: 僅受PicoBlaze控制,僅受輔助處理器控制以及受二者共同控制。

            PicoBlaze 和輔助處理器分別在雙口RAM 的A、B 端口寫入數據。為了減少占用PicoBlaze 的I /O端口,PicoBlaze 在向雙口RAM 寫入數據之前先向RAM尋址寄存器寫入地址,然后通過寫數據輸出寄存器將數據寫入前一操作指定的地址中。

          UDM 的內部電路結構框圖

          圖2 UDM 的內部電路結構框圖

            雙口RAM 的B 端口連接到輔助處理器的總線,數據位寬為16,可訪問的地址范圍為0 ~ 255,地址0 ~ 165 作為交互調試數據的緩存區(qū),地址192 ~255 用于存儲斷點設置信息。每一個寄存器中存放16 行代碼的斷點設置情況,由于PicoBlaze 的代碼容量為1024 行,故只需占用64 個寄存器,例如地址為193 的數據為0x4080 則表示第24 和31 行設置了斷點。雙口RAM 的A 端口數據位寬為8,在DR 運行時用于輸入調試信息,在目標程序運行時輸出斷點設置信息。因此在A 端口有一個地址選擇電路,使得輸入A 端口的地址在不同的情況下分別由RAM尋址寄存器和IA 決定。當運行目標程序時,A 端口輸入的地址為IA 的高7 位加上偏移量0x180,輸出的8bit 數據再經IA 的低3 位尋址輸出1bit 數據,這樣得到的數據正好反映了與IA 對應的代碼是否設置了斷點。中斷信號產生電路根據上述數據和中斷信號的時序要求,產生輸出給處理器的DI 信號。

            調試命令寄存器由PicoBlaze 和輔助處理器共同控制,輔助處理器向該寄存器寫不同的數代表不同的調試命令。在運行DR 時通過查詢該寄存器來實現對各種調試命令的響應,在響應調試命令之前PicoBlaze 將調試命令寄存器清0,作為與輔助處理器的握手操作機制。當向調試命令寄存器寫3 時,不管是否設置了斷點都會立即產生DI 信號。

            4. 2 軟件實現

            在基于PicoBlaze 的應用中,為了減少代碼容量,DR 的流程比較簡單。在初始化準備之后,依次將s0 ~ sb 寄存器、64byte 的內部RAM,Memory 空間中的數據輸出到雙口RAM 中,然后陷入一個等待和處理調試命令的循環(huán)中。目標程序和DR 執(zhí)行環(huán)境的隔離通過限制目標程序只允許修改寄存器s0 ~sb 以及64byte 的內部RAM,而DR 只允許修改寄存器se ~ sf 來實現。只有當調試命令為退出調試時,DR 程序才會結束,PicoBlaze 又返回到目標程序的執(zhí)行。當調試命令為刷新調試信息時,PicoBlaze 將重復一次初始化和調試信息輸出的過程。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();