在进行嵌入式系统开发的过程中,经常会用到 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。
置”→“控制面板”。双击“管理工具”→“服务”,打开后将看到服务列表,有些服务已经启动,有些则没有。右键单击要配置的服务,然后单击“属性”。在“常规”选项卡上选择“自动”、“手动”或“禁用”,其中“自动”表示每次系统启动时,WindowsXP都自动启动该服务;“手动”表示WindowsXP不会自动启动该服务,而是在你需要该服务时手动启动该服务;而“禁用”则表示不允许启动该服务。在实际配置时,选择“手动”或者“禁用”都可以实现关闭该服务的目的,推荐使用手动功能,这样你随时可以启动一些临时需要的服务。有些服务是WindowsXP所必需的,不能关闭,否则将会造成系统崩溃。至于各项服务的功能,我们可以通过双击该服务或将鼠标悬停在该服务名上查看。具体服务的说明浅显,大家看得懂,可以自己选择那些要那些不要。修改的方法是:选中禁用的服务,点右键,选"属性">"停止",将"启动类型"设置为"手动"或"已禁用"。以下为一些不常用的服务:
Alerter-错误警报器。禁用
AutomaticUpdates-windows自动更新,不影响手动更新。禁用
Clipbook-与局域网电脑共享粘贴/剪贴的内容。禁用
ErrorReportingService-错误报告器。禁用
FastUserSwitchingCompatibility-多用户快速切换服务,不如用注销了。禁用
HelpandSupport-帮助。手动
HumanInterfaceDeviceAccess-支持多媒体键盘等HID设备。手动
IMAPICD-BurningCOMService-有其他的刻录软件就不需要了。禁用
IndexingService-索引服务,用于快速查找文件,关闭也能查。手动
IPSECServices-安全方面的。手动
NetMeetingRemoteDesktopSharing-用Netmeeting实现电脑共享。禁用
NetworkDDE-禁用
NetworkDDEDSDM-禁用
PerformanceLogsandAlerts-记录机器运行状况而且定时写入日志或发警告。手动
PortableMediaSerialNumber-禁用
PrintSpooler-打印机服务,关掉就无法打印了,视情况而定。手动
RemoteDesktopHelpSessionManager-远程帮助服务,禁用
RemoteRegistry-远程注册表运行/修改。大漏洞,禁用
RoutingandRemoteAccess-路由服务。禁用
SecondaryLogon-给与administrator以外的用户分配指定 *** 作权.手动
SecurityAccountsManager-像ProtectedStorage,IISAdmin才需要。手动
SmartCard-智能卡服务,我没用过。手动
SmartCardHelper-智能卡帮助,手动
SystemRestoreService-系统还原服务,自己决定。我选禁用
TCP/IPNetBIOSHelper-如果你的网络不用Netbios或WINS,就禁用
UninterruptiblePowerSupply-UPS用的吧。手动
UploadManager-用来实现服务器和客户端输送文件,简单文件传输不需要这个!手动
VolumeShadowCopy-同MSSoftwareShadowCopyProvider。手动
WebClient-不清楚,我用手动
windowsTime-网上时间校对。手动
WirelessZeroConfiguration-无线网络设置服务。手动
WMIPerformanceAdapter-不清楚。手动
winxp专业版的各标准服务简介
alerter-错误警报器。禁用
applicationlayergatewayservice?C有些防火墙/网络共享软件需要。手动
applicationmanagement-用于设定,发布和删除软件服务。手动
automaticupdates-windows自动更新,不影响手动更新。禁用
backgroundintelligenttransferservice?C后台智能传输。手动
clipbook-与局域网电脑共享粘贴/剪贴的内容。禁用
Com+Eventsystem ?C很多软件需要。自动
COM+Eventsystemapplication -和上面的差不多,但不是那么重要。手动
ComputerBrowser-用来浏览局域网的服务,但关了也不影响浏览!手动
CryptographicServices-windows更新时用的。手动
DHCPClient?C局域网域用户和宽带adsl拨号可能需要。手动
Distributedlinktrackingclient-用于局域网更新连接信息。手动
DistributedTransactioncoordinator-并行处理使用,如果你不是服务器的话,就禁用
DNSClient-DNS解析服务。服务器用。手动
Errorreportingservice-错误报告器。禁用
EventLog-系统日志纪录服务,用于查找系统毛病.自动
Fastuserswitchingcompatibility-多用户快速切换服务,不如用注销了。禁用
helpandsupport?C帮助。手动
Humaninterfacedeviceaccess-支持多媒体键盘等HID设备。手动
IMAPICD-burningCOMservice -有其他的刻录软件就不需要了。禁用
Indexingservice?C索引服务,用于快速查找文件,关闭也能查。手动
InternetConnectionFirewall(ICF)-xp防火墙,没什么用。禁用
IPSECServices-安全方面的。手动
LogicalDiskmanager -磁盘管理服务。手动
LogicalDiskmanageradministrativeservice-同上。手动
messenger?C局域网内利用netsend命令传递消息。禁用
MSsoftwareshadowcopyprovider-软件备份。禁用
NetLogon-登陆domain,如果局域网是工作组方式或是个人用户,请禁用
Netmeetingremotedesktopsharing-用Netmeeting实现电脑共享。禁用
NetworkConnections-上网/局域网要用的!自动
NetworkDDE 和NetworkDDEDSDM -禁用
NetworkLocationAwareness-如有网络共享或ICS/ICF可能需要.(服务器端)手动
NTLMSecuritysupportprovider-安全方面的。禁用
NVIDIADriverHelperservice-nvidia显卡帮助,禁用
Performancelogsandalerts-记录机器运行状况而且定时写入日志或发警告。手动
PlugandPlay-自动检测新装硬件。自动
Portablemediaserialnumber-禁用
PrintSpooler-打印机服务,关掉就无法打印了,视情况而定。手动
ProtectedStorage-储存本地和网上服务密码,包括填表时的“自动完成”等功能。自动
QoSRSVP?C个人用户用不着。手动
Remoteaccessautoconnectionmanager-我是ADSL,设成了手动
Remotedesktophelpsessionmanager-远程帮助服务,禁用
RemoteProcedureCall(RPC)-系统核心服务!自动
RemoteProcedureCallLOCATOR-管理RFC数据库服务,手动
remoteregistry-远程注册表运行/修改。大漏洞,禁用
removablestorage -磁带备份用的。禁用
routingandremoteaccess-路由服务。禁用
secondarylogon-给与administrator以外的用户分配指定 *** 作权.手动
securityaccountsmanager-像ProtectedStorage,IISAdmin才需要。手动
server-局域网文件/打印共享需要的。自动
shellhardwaredetection-不清楚,自动
smartcard?C智能卡服务,我没用过。手动
smartcardhelper?C智能卡帮助,手动
SSDPDiscoveryservice-没有什么硬件利用这个服务。禁用
systemeventnotification-记录用户登录/注销/重起/关机信息。视情况定。手动
systemrestoreservice-系统还原服务,自己决定。我选禁用
taskscheduler-windows计划任务。禁用
TCP/IPNetBIOShelper-如果你的网络不用Netbios或WINS,就禁用
Telephony-拨号服务,如果你的宽带不用拨号,那么关了它。
Telnet-大漏洞,这和dos中telnet命令没关系。禁用
terminalservices-实现远程登录本地电脑,快速用户切换和远程桌面功能需要。禁用
themes?C关掉了就没有漂亮的界面了。自动
uninterruptiblepowersupply-UPS用的吧。手动
universalplugandplaydevicehost-同SSDPDiscoveryService。禁用
uploadmanager-用来实现服务器和客户端输送文件,简单文件传输不需要这个!手动
volumeshadowcopy-同MSSoftwareShadowCopyProvider。手动
webclient-不清楚,我用手动
WindowsAudio- 关了就没声音了!自动
WindowsInstaller-windows的MSI安装服务,手动
windowsimageacquisition(WIA)?C扫描仪用的,但是大多数都不需要。手动
WindowsManagementInstrumentation?C核心服务。自动
windowsmanagementinstrumentationdriverextensions-没上面的重要,手动
windowstime-网上时间校对。手动
wirelesszeroconfiguration-无线网络设置服务。手动
WMIperformanceadapter?C不清楚。手动
Workstation-很多服务都依靠这个服务,支持联网和打印/文件共享的。
清除一下临时文件夹
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)