什么是在线仿真
编辑在电路内仿真(ICE)是利用硬件装置或电路内仿真器用于调试的软件的的嵌入式系统。它通过使用具有支持调试操作以及执行系统主要功能的附加能力的处理器来运行。特别是对于处理器有限的旧系统,这通常涉及用硬件仿真器临时替换处理器:更强大但更昂贵的版本。历史上它采用外挂处理器的形式,它具有许多用于调试的内部信号。这些信号提供有关处理器状态的信息。
最近,该术语还涵盖了基于联合测试行动组(JTAG)的硬件调试器,这些调试器使用带有标准生产芯片的片上调试硬件提供等效访问。使用标准芯片而不是定制绑定版本使该技术无处不在且成本低廉,并消除了开发和运行环境之间的大部分差异。在这种常见情况下,在线仿真器术语用词不当,有时会令人困惑,因为不再涉及仿真。
嵌入式系统给程序员带来了特殊的问题,因为它们通常缺少计算机上存在的键盘、显示器、磁盘驱动器和其他用户界面。这些缺点使在线软件调试工具成为许多常见开发任务必不可少的工具。
在线仿真的功能
编辑在线仿真器(ICE)为嵌入式系统提供了一个窗口。程序员使用仿真器将程序加载到嵌入式系统中,运行它们,缓慢地单步执行,并查看和更改系统软件使用的数据。
一个模拟器得到它的名字,因为它模拟(模仿)的中央处理单元的嵌入式系统的计算机(CPU)。传统上,它有一个插头,可以插入通常放置CPU集成电路芯片的插座中。大多数现代系统直接使用目标系统的CPU,具有基于JTAG的特殊调试访问。仿真处理器,或直接JTAG访问它,让ICE做处理器可以做的任何事情,但在软件开发人员的控制下。
在线仿真将计算机终端或个人计算机(PC)连接到嵌入式系统。终端或PC为程序员提供交互式用户界面以调查和控制嵌入式系统。例如,通常有一个带有图形窗口界面的源代码级调试器,该界面通过JTAG适配器(仿真器)与没有图形用户界面的嵌入式目标系统进行通信。
值得注意的是,当他们的程序失败时,大多数嵌入式系统只会变成无功能电子设备的惰性块。嵌入式系统通常缺乏检测软件故障迹象的基本功能,例如用于捕获内存访问错误的内存管理单元(MMU)。如果没有ICE,嵌入式系统的开发可能会极其困难,因为通常无法判断哪里出了问题。使用ICE,程序员通常可以测试代码段,然后将故障隔离到特定代码段,然后检查失败的代码并重写以解决问题。
在使用中,在线仿真为程序员提供执行断点、内存显示和监控以及输入/输出控制。除此之外,可以对在线仿真进行编程,以查找要暂停的任何匹配标准范围,以尝试确定故障的根源。
大多数现代微控制器使用微控制器制造版本上提供的资源进行设备编程、仿真和调试功能,而不需要目标微控制器的另一个特殊仿真版本(即绑定)。尽管它是一种具有成本效益的方法,但由于ICE单元仅管理仿真而不是实际仿真目标微控制器,因此必须进行权衡以在制造时保持较低的价格,同时为产品提供足够的仿真功能(相对较少)仿真应用程序。
在线仿真的优点
编辑几乎所有的嵌入式系统都有一个硬件元素和一个软件元素,它们是分开但又紧密相关的。ICE允许软件元素在其运行的硬件上运行和测试,但仍然允许程序员方便地帮助隔离错误代码,例如源代码级调试(显示程序最初编写的样子)和单步执行(允许程序员逐步运行程序以查找错误)。
大多数ICE由一个适配器单元组成,该单元位于ICE主机计算机和要测试的系统之间。排针和电缆组件将适配器连接到插槽,实际中央处理单元(CPU)或微控制器安装在嵌入式系统中。最新的ICE使程序员能够通过JTAG或后台调试模式接口访问集成到CPU中的片上调试电路(BDM)来调试嵌入式系统的软件。这些系统通常使用标准版本的CPU芯片,并且可以简单地连接到生产系统上的调试端口。它们有时被称为在线调试器或ICD,以区分这样一个事实,即它们不复制CPU的功能,而是控制现有的标准CPU。由于无需更换CPU,因此它们可以在焊接CPU且无法更换的生产单元上运行。在x86Pentium上,ICE使用一种特殊的“探测模式”来帮助调试。
在嵌入式系统的上下文中,ICE不是模拟硬件。相反,它提供对实际CPU的直接调试访问。被测系统处于完全控制之下,允许开发人员直接加载、调试和测试代码。
大多数主机系统是普通的商用计算机,与用于开发的CPU无关。例如,LinuxPC可能用于为使用Freescale68HC11芯片的系统开发软件,该芯片无法运行Linux。
程序员通常也在主机系统上编辑和编译嵌入式系统的代码。主机系统将具有特殊的编译器,为嵌入式系统生成可执行代码,称为交叉编译器或交叉汇编器。
片上调试
编辑片上调试,通常被松散地称为联合测试行动组(JTAG),使用在生产系统中为现场硬件提供额外的调试接口。它提供与在线调试相同的功能,例如检查内部状态或变量,并且可能具有设置检查点、断点和观察点的能力。不同之处在于,这是由生产处理器内的附加芯片提供的,而不是将处理器换成板外调试仿真器。因此,ICE的某些功能会因处理器的规格而改变。控制器板上添加了一个额外的JTAG接口,这是每个生产系统都需要的,但由于这只需要几个信号引脚,因此额外的成本很小。JTAG接口最初是为生产测试的结束而开发的,现在仍然有用。
英特尔
编辑为了支持Intel286上的在线仿真器(ICE)调试,处理器上提供了五个额外的引脚:一个用于从外部强制执行ICE断点的输入引脚,(ICEBP#)和两对可选的输出引脚以通过ICE总线选择操作而不是用户内存。在80286上0F04,0F05存在两条指令(,)将完整的CPU状态转储/恢复到内存偏移量0x800,以及单字节覆盖前缀(F1)以启用ICE模式访问用户内存。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/126758/