几种调试处理器系统的常见方法
Ofweek 2021-07-30

  在任何产品设计过程中,设计人员通常要将相当长的一部分时间,用于系统的集成性和软硬件调试。在引擎管理、硬盘控制和调制解调器之类的实时系统中尤其如此。

  嵌入式系统中,由于嵌于ASIC或用户芯片的内部,系统调试变得更加困难,因为通常对处理器总线和信号的接入都是有限制的。在多处理器系统中(如硬盘驱动器、寻呼机、手机中常见的控制器-DSP体系结构)更是如此。

  本文简要回顾了几种调试处理器系统的常见方法,并介绍了ARM公司新开发的调试方法,即通过使用电路内仿真器(In Circuit Emulators)、监控程序(Monitor Programs) 和逻辑分析仪(Logic Analysers)解决存在的问题。

  电路内仿真器(In Circuit Emulators,即 ICE)

  ICE由实时探测、实时追踪和记忆仿真组成,所有这些集成在一个统一的用户界面上。这能为软件工程师提供一个硬件保护层。此外,ICE不需要周围系统全部正常工作后才能调试,因而在软件开发和硬件开发之间提供了一定程度上的平衡,有利于缩短产品上市时间。

 标准ICE存在的问题

  ● ICE的众多接点会影响目标系统的正常时序,从而降低其最快速度;

  ● ICE的存在使得处理器的更换牵涉到非常复杂的接点,更换处理器同时会改变原来的电气特性,这样就意味着有可能产生很多不可预知的问题;

  ● ICE的发布要落后于处理器,通常在一个新的处理器出台后的6-9个月的时间才会有与其配合的ICE;

  ● 一个深度嵌入的CPU需要很多的引脚才能将内部信号传递到ICE;

  ● 考虑到ICE所需要的资源,有些处理器的用户变量可能不被ICE所支持;

  ● ICE的成本可能十分昂贵。

 调试监控程序(Debug Monitors)

  在目标系统中安装调试监控程序是ICE外的另一个选择,它能为用户提供测试和调试软件所需的许多功能,例如设定断点、从目标存储器中上载数据以及下载应用程序等。

  这种方法的优势在于开发的软件可以在同一个处理器上运行,并且能将硬件与最终系统进行整合。而且Debug Monitor价格低廉,能帮助节约系统开发成本。另一方面,目标系统的ROM中必须存有一个监控程序,这是一个很大的问题,因为它必须从最终产品中撤除,否则就会增加额外的开销。

  另外,运行调试程序的主机和目标之间还需要一个通信通道。通常目标系统使用UART来实现。UART的驱动程序应在监控程序之前完成与目标系统结合的移植工作。

  监控程序的代码也必须根据具体的目标系统进行移植,这意味着在系统硬件中,应保证主要的部分在监控程序启动之前能够正常工作。

 逻辑分析仪

  逻辑分析仪的调试功能并不十分完备,因而常常作为以上两种调试方法的有效补充使用。这是由于逻辑分析仪只能提供一个代码执行过程的回顾。用户无法改变变量或跳转至程序的其他位置,所以,在没有重新编译的情况下, “假设分析”测试无法进行。除此之外,许多逻辑分析仪只配置了一个定容量的存储器,因此每次运行的追踪量是受到限制的。

 ARM的嵌入式ICE(EmbeddedICE)解决方案

  ARM在支持这些传统调试工具的基础上,开发了全新的调试方案,希望解决传统工具无力解决的问题。为了简化调试过程,这种新的解决方案并没有限定于某一硬件或软件开发,而是一种面向系统调试的整体性方案。

  EmbeddedICE结构体系包括:

  ● 一个与EmbeddedICE兼容的ARM核(如:ARM7DI),带有边界扫描接口和调试功能增强;

  ● 一个外部EmbeddedICE接口盒,连接开发主机和ARM内核;

  ● ARM SDT2.01主机软件开发和调试工具。

  EmbeddedICE是一个面向ARM的JTAG的调试通道。它为ARM 的Windows工具包和嵌于ASIC中的ARM微处理器提供一个接口。

  EmbeddedICE具有诸多ICE功能,例如实时寻址、断点、单步、对ARM CPU的完全控制、对ASIC系统其余部分的访问,以及对主机显示器外设的访问、键盘输入和磁盘存储。后三者保证了开发人员能够从目标向主机发送调试信息,并显示在主机屏幕上。

  ARM EmbeddedICE解决方案的优势在于:

  ● 无需ICE 接点或串行接口等目标资源或特殊硬件。在目标系统中无需专门用于调试的RAM、ROM和特殊软件(因此,目标系统中的软件不必修改,可直接与ARM EmbeddedICE体系兼容);

  ● 边界扫描引脚可复用,不用增加引脚数量;

  ● 成本低廉,不需要专门的ICE芯片;

  ● 可以在系统最高速度下进行调试;

  ● 完全的主机系统访问,包括屏幕、键盘、目标存储等;

  ● 无需移动处理器 。这解决了许多问题,例如昂贵的接点、性能不稳定和电路电气特性的改变等等;

  ● 调试无需另外的通信通道;

  ● 与任何嵌入式ARM系统兼容;

  ● 支持多处理器的调试。

  一个与EmbeddedICE兼容的ARM7DI宏单元包括一个ARM7内核、少量的内核调试逻辑、一个JTAG测试端口( TAP)控制器和EmbeddedICE宏单元。

  EmbeddedICE宏单元包括断点寄存器,后者能够比较地址、数据和控制总线同寄存器内的设置值。若两者匹配,会产生一个断点信号,该信号将被传送到处理器。举个例子来说,当一个特定地址的指令或一个特定的数据值被加载入指定的位置,宏单元就会产生一个断点。

  如果在一条指令上设置了断点,当指令到达流水线的执行级时,指令的执行将被中断,处理器进入调试状态。然后,处理器和存储系统通过TAP控制器由JTAG进行状态检测。

  一旦处理器进入调试状态,它就会停止从数据总线读取指令,并且与存储系统隔离。EmbeddedICE此时就可以通过扫描链1将指令读入流水线、驱动处理器。寄存器和存储内容在调试状态下仍可以进行访问。这个过程是可逆的,用户可以在调试器下把代码下载进存储器,避免了烧写EPROM的不便。

 EmbeddedICE在多处理器debug中的使用

  EmbeddedICE宏单元提供的调试特征使ARM处理器能够在多处理器环境下进行调试。当ARM处理器遇到一个断点时,它的执行就被中断,控制权通过JTAG接口交由调试器。此时,ARM处理器向存储系统发出一个“调试确认”(Debug Acknowledge)信号,告知后者处理器处于调试状态。

  同时,它不再向存储器发出访问请求,保证了其它处理器或者DMA通道继续工作、继续与存储系统通信。在调试过程的最后,ARM处理器会发出一个“存储请求”(memory request)信号,系统控制器将根据此信号对存储系统作出仲裁。

  EmbeddedICE 接口盒

  EmbeddedICE 接口盒在ARM软件工具包的调试器协议和JTAG协议之间执行协议转换。“在这个地址上设立一个watchpoint”之类的要求被转换成JTAG TAP控制器状态转变序列、指令和数据序列。

  协议转换器可以根据不同的目标系统进行配置,例如,对含有不同扫描链布局的ARM7DI,也可以进行配置。

  EmbeddedICE宏单元同时支持通信通道。通信通道在目标系统上提供了一个类UART的串行端口。它与处理器紧密相连,且不需要额外的引脚,因为它复用了JTAG口的引脚。这种方法需要在目标系统上安装软件而不需要UART。

  程序开发过程

  程序是在运行ARM WindowsTools 2.0的PC主机开发的。这个工具包含有编码所需的C语言编译器、汇编程序和

  微软Windows平台下的窗口调试器以及Unix和DOS下的命令行调试器一起提供了调试支持。这些工具能提供完全C源代码或汇编语言级的调试。ARM的调试器既可以在指令精确模拟器(ARMulator)又可以在目标硬件上进行代码调试。软件模拟与真实芯片之间的转换只需在对话框中的轻轻一点即可。软件工具界面继续保持不变,用户可以无阻碍地在各目标之间切换。

  ARMulator经过配置,可以为存储器分段指定不同的速度来仿真目标硬件。设计人员可以通过使用C 的建模工具,来对存储器配置中三个最重要的因素:速度、空间和功耗进行优化。

  ARMsd是一个符号调试器,用户可以用它设置断点(指令读取阶段)和观察点(数据加载和存储阶段)、检测和修改处理器及存储器的状态。无论调试对象是芯片还是ARMulator,这个过程都能独立完成目标程序中的semihosting也能够被支持。这意味着包含ANSI C 库函数的程序可以直接移植到目标,无法被目标支持的请求将被主机中途截取。例如:C 库函数发出将状态信息显示在屏幕的请求被中途截取,这些信息将显示在主机的屏幕上。

 结语

  调试工具多种多样,它们各自具有不同的功能和价格。这些工具对于系统设计者来说,仍是一笔宝贵的资源,但是,随着系统的日渐复杂化和集成化,人们需要与之相适应的新的开发环境。

  在系统设计中,处理器内核常常是嵌入在AS中的,传统的调试方法已不再适用。嵌入式调试体系(例如:ARM调试体系)成为了把握当今复杂系统市场的关键。

  要保证产品在最短的时间内完成开发,一个完整的测试和调试环境是必需的,其中包括初始产品测试、系统设计仿真、最终产品测试等一系列调试工具。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【7.24 深圳】2025国际AI+IoT生态发展大会/2025全球 MCU及嵌入式技术论坛


  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 3AT89C51单片机引脚说明及引脚图

    AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU...

    昨天
  • 51单片机对LCD1602液晶的驱动设计

    51单片机——LCD1602 1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释放总线) (2)、读数据 RS=H,R/W=H,E=H。 (3)、写指令 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 (4)、写数据 RS=H,R/W=L,D0~D...

    昨天
  • 单片机串口如何接收不定长数据的?

    我们在使用其他STM32的单片机的时候,会发现有些困难,会发现常用的方法并不能用,在还没有接收完数据的时候,就解决不了。于是,只能用通用的方法来解决了。 这个通用的方法,其实原理和使用IDLE的原理一样:...

    昨天
  • ARM处理器的选型原则

    鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构,几十个芯片生产厂家,以及千变万化的内部功能配置组合,...

    前天
  • 有哪些低功耗设计方法?单片机系统低功耗设计要点介绍

    功耗,已经是一个老生常谈的话题了。对于功耗,大家多多少少有所了解。目前,很多产品的宣传里便带有低功耗噱头。为增进大家对功耗的认识,本文将基于两点介绍功耗:1.低功耗主要设计方法,2.单片机系统低功耗设计...

    前天
  • 8位32位MCU如何选择?如何选择合适的MCU?

    MCU,对于普通人而言,是一个高大上的存在。但是,在工业中,MCU确实常见产品。为增进大家对MCU的认识,本文将基于两点介绍MCU:1.8位MCU和32位MCU如何选择?2.如何选择合适的MCU。如果你对MCU具有兴趣,不妨继续往...

    07-09
  • ARM开发:一 ARM微处理器概述

    1.1ARM-Advanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术...

    07-08
  • 分析C51单片机的一些误区和注意事项

    简介:常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。 1) C...

    07-08
  • 51单片机几个延时程序

    简介:51单片机几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. 一. 500ms延时子程序(晶振12MHz,一个机器周期1us.) 程...

    07-08
  • 总结单片机软件抗干扰的几种办法

    简介:在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中...

    07-08
  • 基于C51单片机实现汽车座椅自动控制系统的软硬件设计

    引言 随着人们生活水平的提高,对汽车座椅的舒适性要求也越来越高,要求对汽车座椅地调节能够更加简单、方便、快捷。目前,汽车座椅位置的调节多采用基于手动调节方式的机械和电动控制两种方式。汽车座椅位置的调节...

    07-02
  • MCS51单片机程序设计时堆栈的计算方法解析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己...

    07-02
下载排行榜
更多
评测报告
更多
广告