/按:一直对仿真器的种类不太了解,分不清 ICE ,ICD,OCD 的 概念,现在知道了 。ICD = OCD. 一般我们用的jtag是属于此类的。下面这篇文章非常好。



//==============================================================

在用TRACE32的时候, 老是看到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也逐渐显露出一些无法回避的缺陷。首先,ICE必须比被调试 CPU运转更快,这样才能在模拟CPU的同时向外输送调试信息,而CPU主频的不断提高使得实现这一点越来越难;其次,日渐复杂的封装技术导致ICE替换 CPU的难度不断增大;再次,ICE的先天特性决定它总是落后于CPU发布;最后,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,开发环境是 visionClick;Lauterbach的ICD和ICE倒是都货真价实,开发环境统一叫TRACE32,Lauterbach另外还有一款产品叫 Trace32-FIRE,同属ICE范畴。目前国内不少公司也陆续开发了一些针对ARM芯片的JTAG仿真器,不过功能都比较简单,还不能称之为 ICD。



//==============================================================

另外一篇文章 ,载自:http://www.avrtool.com/avr/avrt/sygj/200810/1421.html



JTAG调试功能非常强大,基本上就是相当于51系统开发时常用的传统ICE(In Circuit Emulator)。但根据《AVR JTAG User Guide》上的描述,两者之间还是有一定的差别的。这里主要是OCD功能的区别。

OCD即On-Chip Debugging的简写。两者的区别通过下面两幅图片来说明: 

在ICE(第一幅图片)中,仿真器相当于一个实际的物理硬件,仿真器通过测试电缆连接至目标电路板,实际的待仿真器件由仿真器取代,而在OCD中,仿真器件同样连接至目标板,所不同的是目标板上的待仿真器件必须存在。也就是当你在仿真AVR微控制器时必须先将芯片安装到电路板上,而不同于以前的51系统上要先将单片机从 目标板上拔下再安上仿真头。从仿真过程上看,传统仿真器更多的试图模拟一个真实物理器件的行为,包括端口电平的变化、时序等等。而JTAG ICE使用一种不同的方法,它试图建立一个接口,这个接口连接着目标AVR芯片片上调试系统,并在这基础上使用与IEEE1149.1向兼容的协议监控一 个实际的AVR硬件的运行。

这种JTAG ICE工作方式通过下列途径来实现:在所有带JTAG接口的AVR硬件中存在内建的片上调试逻辑。这个OCD逻辑能够用来控制器件的运行。因此,传统仿真 器进行器件的行为仿真,而JTAG仿真器则控制一个实际的物理器件和它所执行的代码。简单而言,你可以把传统的仿真器(类似8051开发系统中用的)看作 一个实际的8051单片机芯片,仿真时拆下目标芯片,将这个仿真器作为一个单片机连接至应用系统;JTAG仿真器就相当于目标单片机系统与计算机之间的接口,通过调用目标芯片中的片上调试逻辑功能实现仿真。以上是作者对于JTAG仿真功能的理解,各位要是没有看明白可以参见ATMEL的原文(这个我挂在网上了pdf的)。那么使用JTAG仿真有什么优点呢?

对于这个问题,我最直接的感受就是比起8051的仿真接口连接,AVR的仿真器接口非常的简 单,只需10根线(实际使用的信号线还不到这个数目)而已。如果你用过51的仿真器那就要把仿真头的40个脚插到IC座上,不仅插接不便,更可能因为接触 不良导致各种意想不到的问题。因为不存在传统仿真方式中拆卸目标芯片的问题,使得硬件开发周期大大缩短,你可以先将硬件电路搞定,再通过JTAG调试软件功能。在当今IC封装微型化趋势下,多数芯片采用贴片封装,这使得频繁拆卸根本不可能实现,唯有通过JTAG仿真方式才能对可编程芯片实现调试,在FPGA/CPLD/ARM系统开发中JTAG得到了广泛应用。

还有一个另外的优点。由于不需要模拟实际硬件的行为,只要调用AVR内建的JTAG仿真指 令,就可以实现仿真功能,JTAG仿真器较易开发制作,对于学生而言AVR官方出品的仿真器高达近二千元的售价是不能接收的。当AVR公开JTAG指令后 就有国外高手研制了兼容AVR Studio的仿真器。如果你有兴趣的话,也可以参考数据手册上对边界扫描顺序进行研究,制作自己的仿真器。当然分析使用现成的AVR 仿真器的项目可能更可取。国内关于这方面的内容多见与OurAVR网站,但不是很详细。在国外如同AVRFerak的网站上倒是有很多项目,下面介绍一个 比较成熟的项目

ICD和ICE的区别相关推荐

  1. 使用 Trace32 对 FLASH 编程摘要及Trace32-ICD和Trace32-ICE的区别

    使用 Trace32 对 FLASH 编程 https://safrans.blog.csdn.net/article/details/8544901 转来比较麻烦,原文阅读效果更好 摘要内容: 介绍 ...

  2. 君君学Linux设备驱动第二天之硬件基础

    一 处理器 1 通用处理器(GPP)    不针对具体应用领域进行体系结构和指令的优化,具有通用性,以支持复杂的运算和添加新功能. 2 微控制器(MCU):含有CPU和一些基本外设的芯片     微处 ...

  3. Dubbo详解-说明(一)

    Dubbo 是什么? Dubble是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理的方案. Dubbo 有啥特点? 远程通讯:提供透明化的远程方法的调用,提供 ...

  4. 做音视频开发要掌握哪些知识?

    最近有读者留言,说"想转行音视频开发,怎么做",正巧,前几天我还在某乎上,看到有人在问音视频的学习资料,还是个大一的学生. 想说一句:真有眼光. 如今这个时代,想赚钱,一个共识是, ...

  5. HTML5新元素section和article的区别详解

    HTML5带出了一系列新元素,并且将在未来被广泛应用.然而,有一些元素在使用时易被混淆,包括以下两个新元素:<article>和<section>. 在问答网站经常可以看到别人 ...

  6. ARM7与ARM9的区别

    本文是写给准备学习ARM技术,而又没想好要学ARM7还是ARM9或者对ARM7与ARM9的区别不是很了解的初学者.希望本文对你们有点用处.     由于职业的关系,经常会回答一些ARM初学者的问题,虽 ...

  7. ZeroC ICE java异步实现方式(ami/amd)

    首先说说ami 和amd 的区别(以下为个人见解,仅供参考.如有疑问欢迎提出来) ami (异步方法调用): 仅仅基于ice 的同步方式扩展了异步的扩展方式,其他理念改动不大,使用起来好理解,但是服务 ...

  8. 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    2019独角兽企业重金招聘Python工程师标准>>> SOA: 维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机 ...

  9. unable to launch什么意思_都表示太...以至于,so … that…?与too… to …有着明显区别...

    [2019年12月8日 百天英语-Day135] [华东师范大学-林森撰写] 昨日内容复习提要: 昨天学习了主要学习了 ①be able to -与can的区别.②如何通过不认识的单词,猜到作者表达的 ...

最新文章

  1. RESTful之过滤Filtering
  2. 2003 resource kit之Robocopy 高效文件复制工具
  3. 教表弟用Python写了个“飞机大战”游戏!表弟:可以拜你为师吗?
  4. android 变量Map集合
  5. Java Servlet总结
  6. java中如何调用dal接口案例_关于Java:接口的目的
  7. 【牛客 - 371牛客OI周赛7-提高组A】小睿睿的等式(dp,暴力 )
  8. 双重特异性酪氨酸磷酸化调节激酶1A行业调研报告 - 市场现状分析与发展前景预测
  9. Egret入门学习日记 --- 第十九篇(书中 8.8~8.10 节 内容)
  10. gc java 单核_JAVA应用性能监控之JVM层GC调优
  11. 新装的电脑执行maven install命令一直报Could not find artifact jdk.tools:jdk.tools:jar:1.7
  12. 磁盘驱动器号的修改恢复
  13. linux中fork() 函数详解
  14. Freeswitch的Proxy(代理转发)模式和Bypass(旁路)模式的正确配置
  15. 《三体》与《西部世界》
  16. QNX Hypervisor —— 设备
  17. 微信小程序获取二维码scene报错40129
  18. java实验报告9 输入输出流
  19. google colab使用入门
  20. 解决连接 ssh 的时候 ,报 The server key has changed 错误

热门文章

  1. Golang 注释配置
  2. UEFI qemu环境搭建
  3. 盘点:恋爱一族约会英语词汇
  4. Unity优化篇 - 图片资源优化
  5. 基于ZigBee设计的物联网LED控制系统
  6. 【ELM回归预测】基于matlab遗传算法优化ELM回归预测【含Matlab源码 1673期】
  7. 使用prctl为线程命名
  8. vim插件快速配置使用(自己的vim插件配置)
  9. 设计模式-结构型模式(下)
  10. siglow 造成的网卡驱动问题及驱动更新错误解决