当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]应对高级嵌入式处理器系统调试挑战

  FPGA最大的优点在于其灵活性,可激发设计人员创造出无数不同的设计。然而,设计调试通常最后才加以考虑——如果还加以考虑的话,因此调试器通常要适应系统的要求。

  好消息是一家在嵌入式领域耕耘近30年的公司推出了一款调试器,它对于解决所有您能想象得到的问题,甚至包括那些您都不愿意去听到的问题具有丰富的经验。在本文中,我们将通过一些例子说明Lauterbach公司的TRACE32调试器所具有的功能,这些功能将节省您的时间,甚至保全您的项目。

        面向灵活平台的灵活调试

  谈到灵活设计,我们想到了客户推出的一套十分有趣的系统。该系统在VirtexTM-5 LX50T器件上集成两个Xilinx®MicroBlazeTM处理器核和一个内部block RAM存储器块。这种设计的特殊之处在于每个MicroBlaze处理器只有一个与block RAM模块相连的I-side接口以实现指令提取。Block RAM的另一个存储端口被连接到PCI Express接口上,以便在运行时远程改变应用代码和启动处理器。在此面临的挑战在于如何在调试器无法读写的存储器区域进行调试,因为在存储器区域MicroBlaze处理器本身无法进行加载/存储操作。
  我们利用TRACE32的内部“虚拟存储器”来解决这个问题,这个调试器内部的仿真存储器具有无限的地址空间(64位),可以按照需要分配存储容量。我们将目标程序加载到这个虚拟存储器中,并且通过配置调试器的内部地址转换机制将无法读取的目标存储器映射到虚拟存储器上。这使得甚至可在汇编级上进行程序诊断。

  但是这里面临着另外一个挑战:为了实现程序的按步执行,特别是高级语言行以及条件分支,人们通常使用软件断点。由于无法通过MicroBlaze处理器访问Block RAM,显然无法做到这一点。我们的解决方案是提供“map.break”指令,强制调试器在给定的地址范围内使用硬件断点。映射指令还可使您指定存储器的数据宽度,更改大小头特性,或者完全禁止调试器访问某些具有关键外设寄存器的地址范围。

        小而有用的功能

  Lauterbach在JTAG调试器和仿真器方面的经验充分体现在TRACE32调试器的功能以及其他诸多微小和意想不到的细节中。考虑到Lauterbach完全利用自身工具开发所有软件,这一点并不奇怪。而日常出现的问题通常会激发人们设计出最有用的功能。

  您是否曾经需要在调试阶段关掉烦人的计时器中断处理器,或者在无需重启的情况下改变条件分支?是否曾经需要修补循环以观察处理器核是否正确执行外部存储器给出的指令?内置的汇编器正可实现这些功能。

  另一个调试中常见的情况是:是否经常在某个程序行走得太远而不得不重新开始?寄存器恢复功能可以取消最后的操作。

  TRACE32通过不间断地每秒10次的存储器重读来显示存储器的内容,甚至在处理器停止的时候也不停止重读。为什么它要这么做呢?可能在一秒钟内,您的系统中不间断运行的MicroBlaze处理器就造成了数据破坏,所以您希望能够监测这一点。也可能在某些时候不稳定的存储器造成了屏幕闪烁。又或者是您的JTAG接口在20MHz时并不那么稳定。这些都是您期望知道的。另一方面,TRACE32确保它只会在需要的时候访问存储器。

  谈及外设,我们还应该提到外设寄存器文件。这些文件指定了存储器映射的寄存器的位置、宽度,甚至按位编码,并且将它们分组成寄存器树。这样,可以很容易地访问外设寄存器以进行检查及修改:您点击一下即可关掉DMA控制器,而无需仔细阅读目标手册以找到正确位。调试器给出了标准外设的规格说明,但是您可以使用简单的文本编辑器修改这些文件以满足您的要求。对于Xilinx工具链,插件选项可以生成这些文件,并将其作为Xilinx构建过程的一部分。 [!--empirenews.page--]

         灵活IDE

  TRACE32提供了功能强大的图形用户界面(GUI),并且其命令行的使用非常高效:屏幕下方就有调试器命令行,并且几乎所有的GUI功能都可以通过命令行—从而通过脚本实现。这使得可实现所有常规任务的自动化,包括目标配置,窗口布局,以及将它们分配在多个虚拟屏幕中。最好的是,不像许多IDE一样,这些窗口没有docking特性,但也可以任意放置以及更改这些窗口的尺寸,甚至重叠。同时还可与不同的IDE联用,例如您可以从您的Eclipse环境中直接调用TRACE32。

图1 连接到Xilinx ML507电路板的Lauterbach TRACE32调试和跟踪电缆



 
        连接多核目标

  另一个有趣的功能是Lauterbach调试多核目标的直观方式。比如为每个核提供GUI,并且使它们共用一根调试电缆。这对于包含了PowerPC和MicroBlaze内核的异构系统或采用TRACE32所支持的50-plus处理器架构的其他系统而言同样有效(图1)。

  TRACE32与Xilinx平台电缆所使用的同一JTAG连接器连接,并且适用于任何由Xilinx嵌入式开发套件(EDK)创建的设计。对于PowerPC而言,也支持使用专用的调试连接器。

  对于多核系统,内核的同步启动和关断是一个问题。要想在硬件中支持这一点,例如在多MicroBlaze处理器配置中,调试器应利用硬件功能实现周期精确同步,否则同步是在软件中完成。集成脚本语言了解多核情况,从而允许通过一个主脚本完成所有GUI控制,包括将调试器连接到相应的内核并进行复位,以及下载并启动应用程序。

        实时程序流和数据跟踪

  实时跟踪的主要功能是记录程序流,即处理器所执行的每一条指令以及数据的处理。对于MicroBlaze处理器,这是通过Xilinx Platform Studio中的XilinxMicroBlaze跟踪内核(XMTC)来实现的。XMTC集成了一个跟踪编码器,其中包含一个连接到MicroBlaze处理器跟踪端口(包含近200个未编码信号)的输入接口。


图2 显示跟踪、代码覆盖和函数调用图等窗口的Lauterbach TRACE32 IDE[!--empirenews.page--]
 

图3A 面向XilinxSpartan-3E FPGA电路板的Lauterbach Mictor MicroBlaze跟踪适配器

 

图3B 面向XilinxMLx电路板的Lauterbach Mictor MicroBlaze跟踪适配器



  它还包含一个提供21信号编码跟踪的输出接口。

  跟踪硬件提供了多达512MB的外部高速跟踪存储器,可用于替换稀有的片上存储资源存储跟踪信息。跟踪功能也可支持PowerPC架构。此外,还具有更多的高级功能,包括静态函数和任务运行时间分析、变量访问、代码覆盖率分析等(图2,图3A和3B)。

        操作系统支持

  在MicroBlaze处理器上,TRACE32为μClinux和Linux提供了一个所谓的内核敏感模块。对于PowerPC而言,可支持更多的操作系统,包括QNX,VxWorks以及Nucleus PLUS。这些扩展功能使得调试器可以知道目标中的内核相关数据结构。这使得可以利用进程指定断点和程序控制实现进程级调试。其他功能包括支持完整的MMU,诸如加载的内核模块或者挂载的文件系统等Linux系统资源的实时、非侵入式显示,任务运行时间的统计评估和图形显示,以及函数运行时间的任务相关评估。

        总结

  Lauterbach TRACE32为所有Xilinx器件系列上的PowerPC和MicroBlaze处理器提供了完整的调试解决方案。未来Xilinx相关增强功能将进一步增强调试电缆,使得XilinxChipScopeTM分析仪可以使用调试电缆与调试器共同实现目标访问,并且通过调试器下载FPGA配置位流。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭