跟着体系级芯片(SoC)的杂乱度不断提高,软、硬件开发交融所带来的应战现已不行小觑。这些功用强大的体系现在由杂乱的软件、固件、嵌入式处理器、GPU、存储操控器和其它高速外设混合而成。更高的功用集成度与更快的内部时钟速度以及杂乱的高速I/O相结合,意味着供给正常运转、并经过全面验证的体系比曾经变得更难。
传统上,软件验证和调试及硬件验证和调试一直是两个不同的国际。一般状况下,软件团队和硬件团队各自为营,前者专心于编程模型内部的软件履行,后者则在硬件开发结构内进行调试,其间时钟周期精度、并行运转及调试数据回溯原始规划的联系是要害。理论上,经过全面调试后,软件和硬件应无差错地协同运转。但在实践环境中,无差错协同运转的状况不多,正因如此,常常会导致要害本钱上升及产品开发周期延误。
为在合理的本钱和时刻范围内完成更高的集成度,业界有必要转向新的办法:规划的洞悉。换句话说,假如咱们想能够高效地继续验证和调试这些体系,工程师们有必要提早规划成能够供给全面的体系视图。其间的要害是能够了解包括硬件范畴和软件范畴的各种行为之间的暂时联系。本文介绍了运用嵌入式仪器调试SoC的一种办法,说明晰经过整合硬件调试视图和软件调试视图,能够更快、更高效地调试整个体系。
构建测验台
图1所示的SoC 由一块32位RISC指令集处理器及一条AMBA APB外设总线组成,处理器衔接到AMBA AHB体系总线上。SoC还包括一个DDR2存储操控器、一个千兆位以太网网络适配器、一个Compact Flash操控器、VGA操控器及多个低速外设接口。SoC运转Debian GNU Linux操作体系第4版,这一操作体系运转v2.6.21内核。处理器中心作业频率为60MHz,DDR存储操控器作业频率为100MHz,其它I/O 外设在33MHz~12MHz之间的根本频率上运转。整个SoC在Virtex-5开发板卡上完成。
图1. SoC基线测验台
总体上看,这一体系是一台全功用计算机,能够供给根据终端的用户接入,能够衔接互联网,运转应用程序,安装文件体系等等。SoC的这些特色产生了杂乱的调试场景,给硬件调试设备和软件调试设备的功用带来了压力。在大多数状况下,要害操作都一同包括硬件和软件。
调试基础设备
处理器中心开发人员一般会供给调试基础设备,要么是某个中心的一套固定特性,要么是一群中心的可装备插件。不管是哪种方法,调试基础设备都变成了被制作的中心的一部分。然后调试软件运用这个基础设备,为软件开发人员供给调试特性。
与大多数现代处理器相似,如英特尔处理器、AMD处理器、IBM处理器、Oracle处理器和ARM处理器,这儿杰出显现的处理器中心支撑一套根本调试功用。在本例中,能够经过JTAG拜访的“后门”,答应软件调试程序(如GDB)读取和写入体系中的存储器,检测处理器的运转状况。经过这些机制及拜访原始软件源代码,GDB和其它软件调试程序能够供给软件断点、单步操作、变量值查看、仓库盯梢、初始条件装备、替换存储器值及康复功用。
在大多数状况下,硬件调试设备并不是与构成SoC的硬件IP中心一同供给的。相反,硬件调试设备一般叠加到现有的SoC规划上。形成这种差异的原因有许多。首要,与软件调试不同,硬件要求的底层功用具有多样化特色,一般只要在SoC拼装时才干得到全面了解。此外,每种新的SoC一般要求不同的调试基础设备。终究,作为新式范畴,硬件调试的标准化程度不高,生态体系建造不行。因而,硬件调试设备一般被留给各个规划人员,这些规划人员会创立针对不同功用范畴的特定调试特性。在大型组织中,一般会开发具有内部支撑的东西和结构。可是,跟着SoC的杂乱程度不断提高,创立高效硬件调试设备的杂乱程度也在不断提高,内部开发作业难以为继。
作为代替计划,测验和丈量厂商能够供给完好的规划东西、IP库和作业流程,创立硬件调试设备。图2所示的设置称为Tektronix Clarus Post-Silicon Validation Suite,这一验证套件由多种能够重复装备的嵌入式仪器组成,这些仪器能够衔接起来,散布在整个SoC中,创立满意特定功用要求的调试基础设备。 Implementer东西能够在RTL级(Vreilog、System Verilog和VHDL)把硬件规划中任何层级的任何信号仪器化。Analyzer经过JTAG或以太网衔接,装备和操控嵌入式仪器。终究,Investigator把嵌入式仪器搜集的数据向回映射到原始RTL(在仿真环境中),完成更杂乱的调试。
图2: Clarus Post-Silicon Vlidtion Suite套件的结构。
嵌入式仪器被应用到SOC中,供给调试基础设备,如图3所示。其间一个重要方面是能够在调试过程中重新装备仪器,针对SoC不同范畴中的各种信号和场景。根本仪器称为捕获站,其独立办理观测数据的挑选、紧缩、处理和存储。多台捕获站一般一同运用,为某个SoC创立特定规划基础设备。在刺进过程中,捕获站装备一系列关怀的潜在信号、最高一同观测数量以及最大RAM容量。捕获站一般被分配给特定时钟域,一同捕获观测数据。Analyzer从每个捕获站中搜集数据,倒置紧缩算法,把每个站中捕获的数据对准,在所有捕获站中生成时刻相关的视图。
图3: 硬件调试基础设备。
本例中运用的SoC有四个捕获站:一个坐落处理器时钟域,标为1号捕获站(60MHz),针对362个信号;一个坐落RX以太网域,标为2号捕获站 (25MHz),针对17个信号;一个坐落TX以太网域,标为3号捕获站(25MHz),针对17个信号;终究一个坐落闪存时钟域,标为4号捕获站 (33MHz),针对178个信号。每个捕获站都并行运转,能够挑选性地观测恣意信号组合。Analyzer东西的终究输出是一个表明实践硅片器材中时钟周期精确信号业务的波形,如图4所示。
图4: SoC波形实例。
虽然软件调试设备和硬件调试设备在方针平台上观测只限于软件问题或硬件问题时作用很好,但在了解触及软件和硬件交互的行为时,则面临着显着应战。表1列出了咱们的测验台开发过程中遇到的部分问题,以及咱们在业界看到的代表性问题。
首要应战在于,虽然运用软件调试设备或硬件调试设备能够“看到”非预期行为的影响,但一般很难确认观测到的不正确行为到底是因仍是果。这个问题常常变成软件中非估计的行为是硬件行为不正确的成果,仍是其它方法。要害在于确认多个事情之间的暂时联系,这要求软件调试视图和硬件调试视图之间有一个公共参照物。
事情办理
重建软件调试视图和硬件调试视图之间暂时联系的才能,触及两种调试设备中调试状况和事情处理的整合,或归纳硬件办理,如图5所示。
图5: 归纳事情办理。
在本例中,Clarus Suite供给的散布式异步仪器使得每个捕获站能够视作自治设备。为支撑仪器之间的“穿插触发”,有一条同享事情总线及一个集中式事情处理器。集中式事情处理器在图5中标为接入操控(Access Control),把调试事情和状况传送给Analyzer软件,Analyzer软件办理着整个调试基础设备。这能够对多个功用单元和时钟域一同进行高效硬件调试。为创立归纳事情办理,这些信息传播到软件调试设备中,并从软件基础设备中搜集数据。经过选用归纳事情办理,基础设备能够检测软件断点事情,调试处理器的状况。相同,软件调试设备能够检测硬件触发,调试硬件调试设备的状况。
归纳事情办理的两大优势是软件调试建议的事情能够操控硬件触发,硬件调试建议的事情能够操控软件调试。更具体地说,软件断点能够映射到特定硬件行为,硬件触发能够在某个点中止软件。图6和图7分甭说明晰这两种场景的实例。
图6:由软件建议的事情。
图7:由硬件建议的事情。
为演示归纳调试体系中软件建议的断点功用,咱们修改了Linux内核,在磁盘扇区0x00041d90上产生读取时打印音讯“BLOCK”。然后,把方针对准调试设备中来自“sysace”Compact Flash操控器的轨道。咱们运用GDB,在xsysace.c文件第714行上设置了一个硬件断点(printk产生的行)。然后装备测验设备,运用归纳事情办理监测软件调试设备。终究,“find/”指令强制内核读取整个磁盘。如图6所示,软件断点在期望的行上暂停了内核履行,别的还触发了硬件调试设备。成果,能够在软件断点时刻上看到具体的硬件行为。
咱们运用硬件适配器,演示归纳调试体系中硬件建议的触发功用。咱们设置成在Linux内核铲除以太网适配器中的“RX Packet Ready Interrupt Bit”时产生硬件触发。咱们把归纳事情办理界面装备成把硬件事情映射到软件调试设备。到体系中路由器IP地址的ping从SoC到路由器应对方位建议一个发送包。在应对产生时,这个包抵达以太网物理层,由以太网适配器处理。然后处理器被中止,Linux内核服务中止。在中止服务结束时,中止被铲除。这导致硬件触发和软件被暂停,如图7所示。得到的视图显现了从物理层直到操作体系的整个杂乱体系中硬件和软件的同步行为或时刻相关行为。
小结:经过在软件调试设备和硬件调试设备之间创立归纳事情办理界面,能够环绕软件调试事情和硬件调试事情完成单事情同步。这种同步能够有意义地表明一同来自这两种基础设备的调试数据。这样一个完好的体系视图为调查包括软件和硬件的各种SoC功用之间的暂时联系打开了一扇窗户,能够更快、更高效地调试日益杂乱的 SoC规划。