ARM 与RealView
ARM RealView工具的嵌入式调试
随着嵌入式应用的深入和发展,特别是在数字通信领域和网络领域中的应用,对处理器的性能提出了更高的要求。为适应这种情况,现在已经出现非常多的多内核结构处理器,例如两个或多个ARM,或者再加入DSP。同时,各种用户对不同应用的需求,使得软件的复杂度极大提高。为了提高应用软件的运行效率和性能,操作系统的使用已经成为必然。再者,为了适应不同的用户需求,ARM芯片加入了很多客户需求的复杂外设。
为了满足客户对复杂ARM SoC调试的挑战,实现快速、高效的软件开发,ARM公司开发了RealView系列ARM开发工具,可以实现:
◆ SoC的技术开发调试
◆ 基于SoC的产品开发调试
◆ 应用和软件的开发调试
ARM RealView系列开发工具主要包括:
◆ 编译器、调试器:RVDS(RealView Developer Suite)
◆ JTAG仿真器:RVI(RealView ICE);Multi-ICE
◆ 硬件跟踪器:RVT(RealView Trace);Multi-Trace
指令集模拟器
指令集模拟器RealView ARMulator ISS是RVDS软件中的一部分,ARMulator ISS可以提供对ARM/Thumb指令集的精确仿真,支持包括从ARM7到ARM11的内核处理器,可以使开发人员能够在硬件完成之前就开始软件的开发和验证调试。
ARMulator ISS包含了一系列模拟基于ARM核的软件模型,最基本的模型是ARM处理器内核模型和存储器模型,另外也可以定义其他的模型,例如外设、协处理器等。
ARMulator ISS不仅可以进行程序的逻辑和功能验证,同时可以进行性能分析,例如ARMulator可以通过执行应用程序来计算 程序的运行周期,可以产生 Sequential周期、Non-sequential周期、Coprocessor周期等信息,通过这些数据来分析程序内存的使用效率(图1)。
对于ARMulator,我们同时也可以定义处理器的类型、处理器内核的时钟频率以及与处理器连接的内存信息,例如地址、宽度、速度等,来得到程序的运行时间统计等。
JTAG仿真器调试方案
现在所有的ARM芯片都支持JTAG调试。JTAG是IEEE的一个标准,即IEEE1149.1。通过这个标准,可以对具有JTAG接口芯片的硬件电路进行边界扫描和故障检测。JTAG仿真器是通过ARM芯片的JTAG口进行设备调试的。JTAG仿真器连接比较方便,不占用片上的资源,仿真非常接近于目标硬件系统。使用主机调试器配合JTAG仿真器进行开发是目前使用最多的一种ARM调试方式。
ARM内核有个EmbeddedICE逻辑模块,用于采集CPU的总线信号,对于EmbeddedICE和CPU执行单元的通信则是通过扫描链进行的,而这些扫描链则是受测试访问端口TAP(Test Access Port)控制器控制的,并通过ARM芯片的JTAG接口引出,然后通过JTAG仿真器(RVI或Multi-ICE),便可以和主机平台上的调试器(RVD)进行通讯,从而实现对ARM硬件平台的调试。
对于有的ARM应用程序,当用户使用JTAG仿真器对程序 进行单步调试时可能一切都是好的,但当全速运行时则会出现问题。对于这种问题,则可以通过ARM的硬件跟踪器(RVT或Multi-Trace)来查找问题。
硬件跟踪器是通过ARM芯片内部的嵌入式跟踪宏单元ETM(Embedded Trace Macrocell)来实现对程序跟踪的,可以对执行代码进行无干扰的高速实时跟踪,捕获出所有的程序执行过程,帮助工程师迅速地定位疑难故障,从而缩短开发周期,降低开发成本,请参看图2。
RealView调试器 —— RVD
RVD是ARM系统调试方案的核心部分,该调试器可以为不同用户提供最为合适的调试功效。RealView调试器包括:高度集成的项目管理和编译控制工具的IDE;功能强大的调试器,使开发者可以快速方便地实现对软件的调试。RVD调试器不仅包含基本的调试功能,例如汇编语言和C/C++的原代码调试;单步、全速运行;断点、观察点和跟踪点设置;寄存器、内存和堆栈察看等;还可以实现很多高级的功能,例如多内核调试支持(Multi-Core Debug);操作系统明了化(OS Awareness);DSP明了化(DSP Awareness);扩展的目标可见性(Extended Visibility)。下面就分别对这几种功能做一个简单说明:
◆ 多内核调试支持
随着客户应用需求的增加,很多应用已经不能由单个ARM内核来实现。针对这种需求,ARM对RVD的功能进行了扩展,可以支持多个内核,例如:多个ARM内核;ARM内核+DSP内核;多个ARM内核+多个DSP内核。调试工具通过JTAG扫描链来自动检测硬件系统的内核,用户可以根据需要来显示多个连接的内核,同时可以为每个内核开一个窗口,因此可以使用多个窗口显示多个连接的内核。用户可以通过配置来对各个被调试的内核进行异步控制,例如单独控制每个内核;也可以通过配置来对各个被调试的内核进行同步控制,例如同时启动、停止和步进等。
◆ 操作系统明了化
可以使用户在更高的抽象层次上调试整个系统,而不用专注于每一条代码,这样可以隐藏不必要的细节信息,从而关注于整个应用的开发,提高调试的效率,缩短开发的时间。现在RVD可以支持大部分操作系统的OS Awareness,通过OS Awareness可对系统的资源进行观察,例如进程(Thread)、信号量(Semaphores)、邮箱(Mailboxes)、队列(Queues)等,如图3。RVD对OS Awareness的支持主要有两种:停止系统调试HSD(Halted System Debug) 和运行系统调试RSD(Running System Debug)。HSD调试时需要暂停整个系统,这是可以观察和分析整个系统的一些资源情况。RSD可以在系统运行的情况下对用户指定的线程进行调试,例如设置断点、中断、改变线程优先级等。RSD调试非常适合于一些无法停止运行的系统,例如硬盘等。
◆ DSP明了化
可以使用户在不需要DSP调试工具的情况下对系统的DSP进行调试,与ARM的调试有统一的调试环境,使用户更加方便地熟悉调试环境和节省开发成本。该调试增加了DSP 开发的透明度,使用户可以方便地实现DSP软件的开发。
◆ 扩展的目标可见性
通过这个功能,用户不仅仅可以看到ARM和DSP的内核寄存器等,而且可以定义一些自己关心的内存映射寄存器和外围设备寄存器等,并可定义有意义的显示格式,例如寄存器名字、位定义和设置值等,在调试过程中还可以方便地改变该数值用户可以方便地通过配置BCD(Board/Chip Definition)文件来印证对扩展目标的可见性。
RealView JTAG仿真器
ARM的RealView JTAG仿真器是高性能的开发工具,通过该仿真器并配合RealView调试器,便可以实现对ARM硬件平台的仿真调试。
RVI(RealView ICE)支持本地连接和网络连接,可以通过USB1.1/2.0和主机相连,也可以通过Ethernet 10/100baseT和主机相连。代码通过JTAG下载速度可以达600KB/s,并且新的差分信号线可以满足高达50MHz的JTAG时钟频率和更长的连接距离。RVI仿真器支持所有ARM7系列、ARM9系列、ARM9E系列、ARM10系列和ARM11系列芯片的调试仿真。同时,用户可以通过在线固件(Firmware)升级,来支持以后出的ARM新内核。RVI是一个可调整的、模块化的结构,用户可以根据需要在其上面叠加硬件跟踪器RVT(RealView Trace)来实现对ARM内核的跟踪和分析,如图4。
RealView系列为先进调试解决方案
嵌入式系统变得越来越复杂,从单内核系统到越来越多的多内核系统,从单任务软件到使用操作系统的多任务软件,系统的调试也变得越来越困难。如何选择恰当的调试开发工具,对整个产品的开发起着至关重要的作用。ARM完整的RealView系列开发调试工具对各种系统提供了整体的解决方案。ARM的RealView调试器(RVD)结合JTAG仿真器RealView ICE与硬件跟踪器RealView Trace,提供了高效、快速的调试、跟踪解决方案,成为基于ARM嵌入式系统中最为先进的调试方案。