ICD和ICE的区别
/按:一直对仿真器的种类不太了解,分不清 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的区别相关推荐
- 使用 Trace32 对 FLASH 编程摘要及Trace32-ICD和Trace32-ICE的区别
使用 Trace32 对 FLASH 编程 https://safrans.blog.csdn.net/article/details/8544901 转来比较麻烦,原文阅读效果更好 摘要内容: 介绍 ...
- 君君学Linux设备驱动第二天之硬件基础
一 处理器 1 通用处理器(GPP) 不针对具体应用领域进行体系结构和指令的优化,具有通用性,以支持复杂的运算和添加新功能. 2 微控制器(MCU):含有CPU和一些基本外设的芯片 微处 ...
- Dubbo详解-说明(一)
Dubbo 是什么? Dubble是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理的方案. Dubbo 有啥特点? 远程通讯:提供透明化的远程方法的调用,提供 ...
- 做音视频开发要掌握哪些知识?
最近有读者留言,说"想转行音视频开发,怎么做",正巧,前几天我还在某乎上,看到有人在问音视频的学习资料,还是个大一的学生. 想说一句:真有眼光. 如今这个时代,想赚钱,一个共识是, ...
- HTML5新元素section和article的区别详解
HTML5带出了一系列新元素,并且将在未来被广泛应用.然而,有一些元素在使用时易被混淆,包括以下两个新元素:<article>和<section>. 在问答网站经常可以看到别人 ...
- ARM7与ARM9的区别
本文是写给准备学习ARM技术,而又没想好要学ARM7还是ARM9或者对ARM7与ARM9的区别不是很了解的初学者.希望本文对你们有点用处. 由于职业的关系,经常会回答一些ARM初学者的问题,虽 ...
- ZeroC ICE java异步实现方式(ami/amd)
首先说说ami 和amd 的区别(以下为个人见解,仅供参考.如有疑问欢迎提出来) ami (异步方法调用): 仅仅基于ice 的同步方式扩展了异步的扩展方式,其他理念改动不大,使用起来好理解,但是服务 ...
- 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
2019独角兽企业重金招聘Python工程师标准>>> SOA: 维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机 ...
- unable to launch什么意思_都表示太...以至于,so … that…?与too… to …有着明显区别...
[2019年12月8日 百天英语-Day135] [华东师范大学-林森撰写] 昨日内容复习提要: 昨天学习了主要学习了 ①be able to -与can的区别.②如何通过不认识的单词,猜到作者表达的 ...
最新文章
- RESTful之过滤Filtering
- 2003 resource kit之Robocopy 高效文件复制工具
- 教表弟用Python写了个“飞机大战”游戏!表弟:可以拜你为师吗?
- android 变量Map集合
- Java Servlet总结
- java中如何调用dal接口案例_关于Java:接口的目的
- 【牛客 - 371牛客OI周赛7-提高组A】小睿睿的等式(dp,暴力 )
- 双重特异性酪氨酸磷酸化调节激酶1A行业调研报告 - 市场现状分析与发展前景预测
- Egret入门学习日记 --- 第十九篇(书中 8.8~8.10 节 内容)
- gc java 单核_JAVA应用性能监控之JVM层GC调优
- 新装的电脑执行maven install命令一直报Could not find artifact jdk.tools:jdk.tools:jar:1.7
- 磁盘驱动器号的修改恢复
- linux中fork() 函数详解
- Freeswitch的Proxy(代理转发)模式和Bypass(旁路)模式的正确配置
- 《三体》与《西部世界》
- QNX Hypervisor —— 设备
- 微信小程序获取二维码scene报错40129
- java实验报告9 输入输出流
- google colab使用入门
- 解决连接 ssh 的时候 ,报 The server key has changed 错误