當前位置:吉日网官网 - 傳統美德 - ICD和ICE的區別

ICD和ICE的區別

ICD與ICE的區別

在進行嵌入式系統開發的過程中,經常會用到 ICD和ICE。從字面上講,ICD的全稱為:In Circuit Debugger,ICE為:In Circuit Emulator,中文分別為“在線調試器”和“在線仿真器”。籠統地說,二者都可用於硬件調試和軟硬件聯調。市面上常見的產品包括ARM公司的Multi-ICE,WindRiver公司的VisionICE和VisionProbe,以及Lauterbach公司的Trace32-ICD和 Trace32-ICE。

那麽二者之間究竟有什麽區別和聯系呢?回答這個問題這要從嵌入式系統調試手段的演化說起。

在早期的嵌入式開發中,尤其是8位機和16位機占主流的時代,ICE是最為常用的調試設備,它的核心思想是完全模擬CPU工作,通過外圍電路捕獲CPU的各種狀態信息,輸送到PC端,也就是說它相當於CPU+調試電路,可以從物理上完全替代CPU。所以最早的ICE在使用時需要將CPU從插口上拔下來,再將ICE的電纜插進去。

ICE的出現,給嵌入式開發人員帶來了極大的便捷。但隨著芯片制造技術的飛速發展,ICE也逐漸顯露出壹些無法回避的缺陷

1、ICE必須比被調試 CPU運轉更快,這樣才能在模擬CPU的同時向外輸送調試信息,而CPU主頻的不斷提高使得實現這壹點越來越難;

2、日漸復雜的封裝技術導致ICE替換CPU的難度不斷增大;

3、ICE的先天特性決定它總是落後於CPU發布;

4、ICE的價格通常非常昂貴。

這些缺陷給ICE的發展帶來了壹定的阻礙,在這種情況下,EmbeddedICE應運而生。

EmbeddedICE是ARM公司提出的壹種面向系統的解決方案,其關鍵技術是在處理器芯片內部加入壹個EmbeddedICE單元,提供傳統ICE的諸多功能,例如實時尋址、斷點、單步以及對CPU核的控制,使用邊界掃描鏈和JTAG接口與PC交互信息,從而實現硬件調試。EmbeddedICE解決了傳統ICE的種種難題,從而得到了廣泛的應用。ARM7TDMI系列就是基於該方案的典型產品,其名稱中的字母I即指示EmbeddedICE。

有了EmbeddedICE,相應的也就出現了新的調試工具ICD。與復雜的ICE不同,ICD的核心硬件只包括壹個EmbeddedICE接口盒,用於在PC和處理器芯片的JTAG接口之間搭起壹座橋梁,實現PC端調試器指令與JTAG協議的轉換,例如將PC端的壹次鼠標點擊轉換成JTAG指令和數據序列,並最終通過EmbeddedICE實現對CPU核的控制。

說到這裏,ICE和ICD的區別就不言自明了:ICE通過自身仿真CPU進行調試,而ICD則是利用芯片內部的EmbeddedICE單元對CPU進行調試。特別需要指出的是,上面的討論都集中在硬件部分,實際上,不管是ICE還是ICD,都離不開壹個優秀的集成開發環境;只有通過開發環境對二進制機器碼的翻譯,開發人員才能夠輕松地查看寄存器,查看地址空間,設置斷點,將機器指令轉換為匯編指令甚至對應到高級代碼、實現源碼級調試。

弄清楚了二者的區別,現在回到第壹段,給市面上的產品歸歸類。雖然名字看起來都像是ICE,其實未必:

ARM公司的Multi-ICE實際上是ICD,對應的開發環境是ARM SDT或者ADS;

WindRiver的visionICE和visionProbe也是ICD,開發環境是 visi;

Lauterbach的Trace32-ICD和Trace32-ICE倒是都貨真價實,開發環境統壹叫TRACE32,Lauterbach另外還有壹款產品叫 Trace32-FIRE,同屬ICE範疇;

目前國內不少公司也陸續開發了壹些針對ARM芯片的JTAG仿真器,不過功能都比較簡單,還不能稱之為 ICD。

  • 上一篇:冥想的正確方法
  • 下一篇:制作風箏的方法和步驟
  • copyright 2024吉日网官网