2 基于Eclipse平台的开发工具
2001年11月IBM将新一代开发工具项目Eclipse开源,并建立了Eclipse社区。Eclipse是替代IBM VisualAge for Java的下一代IDE开发环境,但其目标不仅是成为专门开发Java程序的IDE环境,而是用户可以根据Eclipse的体系结构,通过开发插件,扩展到任何语言的开发,甚至成为图片绘制的工具。
Eclipse最有魅力的地方就是其插件体系结构。E—clipse平台类似PC机的主板,插件类似于PC机的扩展卡。由于Eclipse这种开发的积木式体系结构,使其发展得非常迅猛。很多行业软件提供商,例如IBM、Intel、Sybase、Borland、BEA、WindRiver等公司都成为了Eclipse会员;Eclipse下载量已经超过3 000万人次,遍布120个国家;50个著名IT企业已经提供了超过600个各种插件,有了C、Ja—va、COBOL、Perl、Python、XML等语言开发插件,还有建模、数据库、GUI等开发插件,甚至图形编辑的插件;在J2EE开发方面,Eclipse更是以90%的速度增长。
嵌入式系统开发往往需要多种工具配合,如果采用Eclipse平台,各种工具都以插件的方式出现,则开发人员非常容易定制自己的开发工具集。从编辑、建模、编译、仿真、调试、测试工具到操作系统定制、版本管理、项目管理工具都可以无缝集成,构建成一个界面风格完全统一的开发工具集合。
目前,嵌入式工具提供商已经开始提供大量的嵌入式开发Eclipse插件。例如,ARM公司的RVDS 3.2模块就有很大部分是Eclipse插件;MIPS公司的开发环境Sourecery G++基于GNU工具链和Eclipse IDE;WindRiver公司的WindRiver Workbench 2.O则完全基于E—clipse平台,该IDE同时支持VxWorks、Linux和其他专用操作系统;很多芯片厂商例如ADl、TI、Xilinx等公司都开始提供各种针对自已芯片的Eclipse插件工具;著名的CPLD/FPGA开发工具商Altera推出的Nios II IDE也是基于Eclipse平台的;而Nokia也推出了称为Nokia Widget的Eclipse插件,用于开发Nokia手机上的应用程序。另外,国内嵌入式工具公司Embest也推出了完全基于Eclipse的ADl处理器开发工具BDT。总之,在整个嵌入式系统开发的领域中,从硬件FPGA的设计工具到软件的编译工具、应用层开发工具已经都有了相应的Eclipse插件,而且这一趋势正在迅猛扩展。预计,在未来的2~3年内中国的嵌入式开发工程师也将开始普遍使用基于Eclipse平台的开发工具,定制适合自身的开发工具,进行更加复杂的嵌入式系统开发。
3 CoreSight调试体系结构
2004年ARM公司推出了一种新的调试体系结构CoreSight,以获得更为强大的调试能力。CoreSight体系结构支持多核系统的调试,能对全系统进行高带宽的实时跟踪,包括对系统总线的跟踪与监视。CoreSight体系结构非常灵活,其中各个部件可以根据处理器厂商的需要进行组合。图1是一个典型的CoreSight调试结构,其组成部分很多,主要分为4类。
(1)控制访问部件
用于配置和控制跟踪数据流的产生、获取跟踪数据流,但不产生也不处理跟踪数据流,典型的有:
①DAP(Debug Access Port),可以实时访问AMBA总线上的系统内存、外设寄存器,以及所有调试配置寄存器,而无需挂起系统;
②ECT(Embedded CrOSS Trigger),包含CTI(CrossTrigger Interface)和CTM(Cross Trigger Matrix),为ETM(Embedded Trace Macrocell)提供一个接口,用于将一个处理器的调试事件传递到另一个处理器。
(2)源部件
用于产生向ATB(AMBA Trace Bus)发送的跟踪数据,典型的有:
①HTM(AHB Trace Maerocell),用于获取AHB总线跟踪信息,包括总线的层次、存储结构、时序、数据流和控制流等;
②ETM(Embedded Trace Macrocell),用于获取处理器核的跟踪信息;
③ITM(Instrumentation Trace Macrocell),是一个由软件驱动跟踪源,其输出的跟踪信息可以由软件设置,包括Printf类型的调试信息、操作系统以及应用程序的事件信息等。
(3)连接部件
用于实现跟踪数据的连接、触发和传输,典型的有:
①ATB 1:1 bridge,具有2个ATB接口,用于传递跟踪源发出的控制信号;
②Replicator,可以让来自同一跟踪源的数据同时写到2个不同的汇集点去;
③Trace Funnel,用于将多个跟踪数据流组合起来,在ATB总线上传输。
(4)汇集点
是芯片上跟踪数据的终点,典型的有:
①TPIU(Trace Port Interface Unit),将片内各种跟踪源获取的信息按照TPIU帧的格式进行组装,然后通过Trace Port传送到片外;
②ETB(Embedded Trace Buffer),一个32位的RAM,作为片内跟踪信息缓冲区;
③SWO(Serial wire Output),类似TPIU,但仅输出ITM单元的跟踪信息,只需要一个引脚来实现。
对于带有CoreSight调试体系结构的处理器,工程师可以实现实时调试,当应用程序在处理器上全速运行时,可以透明地观察并记录处理器中的各种事件,包括内存单元读写、中断异常的发生与处理、操作系统任务之间的触发关系与运行过程等等。这一新的调试体系结构将嵌入式系统调试从黑盒变成了白盒,使工程师有能力应付更复杂系统的设计与调试。
使用Trace Port接口进行调试还需要专用的跟踪器(Tracer)。如图2所示,ARM公司的开发工具RVDS中RVT(RealView Tracer)就是这种跟踪器,其价格较为昂贵,因此RVDS更适合SoC的设计和开发。如图3所示,为了提供廉价的实时调试工具,ARM公司在其针对MCU的开发工具RealView MDK中,增加了图l中的SWO接口完成实时跟踪的功能;使用仿真器ULINK 2的JTAG接口中的2根引脚作为SWO接口,可以对Correx—M3处理器实时调试分析,能从ITM单元中实时获取内存单元读写信息、Printf打印信息、操作系统任务信息等。