资源预览内容
第1页 / 共82页
第2页 / 共82页
第3页 / 共82页
第4页 / 共82页
第5页 / 共82页
亲,该文档总共82页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
嵌入式系统设计与开发嵌入式系统设计与开发第9章 ARM嵌入式开发工具本章提要9.1ARM下层开发工具9.2ARM开发工具概述9.3ARM的ADS9.4EmbestIDE的介绍9.1ARM下层开发工具由于程序的编译环境和运行环境不同,所以ARM嵌入式开发采用交叉编译方法进行。首先,在通用计算机上对源程序进行编写、编译、汇编、连接形成可以在目标系统上运行的目标文件;接着,通过连接/调试装置将目标文件下载到目标系统上运行;源程序在目标系统上运行的情况连接装置在计算机中反映出来,开发人员通过反映出的情况根据开发工程的需要进行相应的修改并重复上述操作直至到达工程开发预期结果。因此,可以把ARM嵌入式开发工具分为上层装在计算机中的开发工具、中间的连接装置和下层的ARM芯片本身具有的支持嵌入式开发的工具。ARM嵌入式系统实时开发组织结构图9.1.1JTAG接口JTAG接口标准是由测试联合行动组jointtestactiongroup于19861988年推出的基于边界扫描机制的标准化草案。1990年IEEE组织将这些草案标准化,并命名为IEEE1149.1标准,俗称JTAG调试标准。JTAG除了实现通常意义上的调试功能外,还可实现代码下载或单步执行程序等功能。边界扫描机制主要的思想是:通过在内部逻辑之间,即在内部逻辑的边界上增加串行的可读写的边界扫描单元,从而提供芯片级、板级、系统级的标准测试框架。边界扫描机制可以实现以下目标:测试不同单元之间的连接。测试单个单元的功能。应用边界扫描存放器完成其他测试功能,如伪随机测试、特征分析和静态测试等。JTAG接口的6个主要信号:1TestClockInputTCK。TCK为TAP的操作提供了一个独立的、根本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。TCK在IEEE1149.1标准里是强制要求的。2TestModeSelectionInputTMS。TMS信号用来控制TAP状态机的转换,通过TMS信号,可以控制TAP在不同的状态间相互转换。TMS信号在TCK的上升沿有效。TMS在IEEE1149.1标准里是强制要求的。3TestDataInputTDI。TDI是数据输入接口。所有要输入到特定存放器的数据都是通过TDI接口一位一位串行输入的由TCK驱动。TDI在IEEE1149.1标准里是强制要求的。4TestDataOutputTDO。TDO是数据输出的接口。所有要从特定边界扫描链采样的保存在存放器中的数据都是通过TDO接口一位一位串行输出的由TCK驱动;在芯片串行测试时,将数据传送给下一个芯片。TDO在IEEE1149.1标准里是强制要求的。5TestResetInputTRST/nTRST。TRST可以用来对TAPController进行复位初始化即JTAG复位。该信号接口在IEEE1149.1标准里是可选的,因为通过TMS也可以对TAPController进行复位/初始化。为了防止误触发,应在该端加适当上拉电阻。6SystemResetnSRST/SRST。与目标板上的系统复位信号相连。可以直接对目标系统复位,同时可以检测目标系统的复位情况。该信号接口在IEEE1149.1标准里是可选的,并不是强制要求的。20针JTAG接口信号20针JTAG接口连接9.1.2JTAGTAPJTAG测试访问端口JTAGTAP是一个通用端口,是外部JTAG接口连接芯片的通道,由JTAGTAP控制器和扫描链构成。通过TAP可以访问芯片提供的所有数据存放器DR,dataregister和指令存放器IR,instructionregister。对整个TAP的控制是通过TAPController完成的。TAP有5个接口信号:TCK、TMS、TDI、TDO和TRST,提供给JTAG接口。扫描链是由靠近芯片的输入/输出管脚上各增加一个用于实现对芯片输入/输出信号进行观察和控制的移位存放器单元,相互连接构成。即在芯片/内部逻辑的周围形成一个边界扫描链boundary-scanchain。如果需要捕获芯片某个管脚上的输出,首先需要把该管脚上的输出装载到边界扫描链的存放器单元里,然后通过TDO输出,得到相应管脚的输出信号。如果要在芯片的某个管脚上加载一个特定的信号,那么首先通过TDI把期望的信号移位到与相应管脚相连的边界扫描链的存放器单元里,然后把该存放器单元的值加载到相应的芯片管脚。在IEEE1149.1标准里面,存放器分为两大类:数据存放器DR和指令存放器IR。边界扫描链属于数据存放器的一种,用来实现对芯片的输入/输出的观察和控制,而指令存放器用来实现对数据存放器的控制。如在芯片提供的所有边界扫描链中选择一条指定的边界扫描链作为当前的目标扫描链,并作为访问对象就是由相应指令存放器完成的。通过TAP接口,对数据存放器进行访问的一般过程是:1通过指令存放器,选定一个需要访问的数据存放器。2把选定的数据存放器连接到TDI和TDO之间。3由TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器中,同时把选定的数据存放器中的数据通过TDO读出来。JTAGTAP控制器状态转换图指令存放器和数据存放器工作过程:1系统上电后在TMS信号驱动下,TAPController进入Test-LogicReset状态,然后可依次进入Run-Test/IdleSelect-DR-ScanSelect-IR-ScanCapture-IRShift-IRExit1-IRPause-IRExit2-IRUpdate-IR,最后回到Run-Test/Idle状态。在Capture-IR状态中,一个特定的指令加载到指令存放器中,进入到Shift-IR状态。在Shift-IR状态下,通过TCK的驱动,可以将该指令送到指令存放器中。每条指令都将确定一个相应的数据存放器。然后可以沿着Shift-IRExit1-IRPause-IRExit2-IRUpdate-IR路径进行,也可以沿着其他的路径到达Update-IR状态。在Update-IR状态,刚刚输入到指令存放器中的指令将更新指令存放器成为当前指令。最后,进入到Run-Test/Idle状态,指令生效,完成对指令存放器的访问。2对当前数据存放器的访问由指令存放器中的当前指令决定。要访问由指令选定的数据存放器,需要以Run-Test/Idle为起点在TMS信号驱动下,依次进入Select-DR-ScanCapture-DRShift-DRExit1-DRPause-DRExit2-DRUpdate-DR,最后回到Run-Test/Idle状态。在这个过程中,被当前指令选定的数据存放器会被连接在TDI和TDO之间。通过TDI和TDO,就可以将新的数据加载到数据存放器中,同时,也可以捕获数据存放器中的数据。现在常用的ARM7和ARM9的微内核ARM7TDMI与ARM9TDMI都提供了4条扫描链:1ScanChain0测试链2ScanChain1调试链3ScanChain2编程链4ScanChain3外围测试链ARM9TDMI边界扫描链1的另外两个信号DDEN和SYSSPEED的作用是:vDDEN在ARM9TDMI内部测试模式下,是可获取、可测试的。在ARM9TDMI外部测试模式下低电平表示将获取数据总线上输入的数据,高电平表示将要输出扫描链上存储的数据。v在ARM9TDMI进入调试状态时,SYSSPEED将输出。低电平表示微内核现在进入断点调试,高电平表示微内核进入观察点调试状态。9.1.3EmbeddedICE嵌入式在线仿真器系统中内核调试功能,主要由4局部组成:ARM核内的一组调试扩展。EmbeddedICE宏。EmbeddedICE宏接口。基于JTAG接口的在主机和内核之间的调试通信通道。EmbeddedICE存放器地址宽度功能地址 宽度功能000006调试控制寄存器011009观察点0控制值寄存器000015调试状态寄存器011018观察点0控制屏蔽寄存器000101中止状态寄存器1000032观察点1地址值寄存器001006调试通信控制寄存器1000132观察点1地址屏蔽寄存器0010132调试通信数据寄存器1001032观察点1数据值寄存器0100032观察点0地址值寄存器1001132观察点1数据屏蔽寄存器0100132观察点0地址屏蔽寄存器101009观察点1控制值寄存器0101032观察点0数据值寄存器101018观察点1控制屏蔽寄存器0101132观察点0数据屏蔽寄存器n调试控制存放器debugcontrolregister用来控制EmbeddedICE,6位分别对应6种控制信号,从低到高依次是DBGACK、DBGRQ、INTDIS、SBZ/RAZ、MonitorModeEnable和EmbeddedICE。DBGRQ调试请求信号,通过将该信号置1,可以强制ARM7TDMI/ARM9TDMI暂停当前的指令,进入调试状态;INTDIS用来控制中断;SBZ/RAZ任何时候都必须被置0;MonitorModeEnable用来控制是否进入Monitor模式;EmbeddedICE-RTDisable用来控制整个EmbeddedICE-RT,是启用还是禁用,如果禁用的话,ARM7TDMI/ARM9TDMI将一直保持在正常的运行状态。n通过调试状态存放器debugstatusregister可以查询当前系统的状态。调试状态存放器是可读可写的,但一般只进行读操作。5位信号从低位到高位分别是:DBGACK、DBGRQ、IFEN、CGENL和TBIT,其中DBGACK标识当前系统是否处于调试状态,置1表示处于调试状态;DBGRQ标识DBGRQ信号的当前状态;IFEN标识系统的中断状态是启用还是禁用;CGENL标识调试状态下对存储器的访问是否完成;TBIT用来判断是从ARM还是Thumb模式进入调试状态。n中止状态存放器abortstatusregister用来确定异常的产生原因:断点、观察点还是真的异常。n调试通信控制存放器debugcommscontrolregister和调试通信数据存放器debugcommsdataregister是用来控制和操作调试通信通道。其他的存放器都是关于观察点WATCHPOINT的存放器,用于设置断点和观察点。n剩下的12个存放器可以表示成如下形式:n观察点0/1地址值/屏蔽存放器。n观察点0/1数据值/屏蔽存放器。n观察点0/1控制值/屏蔽存放器。9.1.4ETM嵌入式跟踪宏uETM能捕获指令和数据序列,访问并把它们的记录发送给芯片上或芯片外的缓冲器,ARM的ETM既可设置成允许触发器工作也可设置成允许跟踪结果被滤出。使用ETM的过滤功能,可以只捕获特别中断的或特殊文件的代码执行,即相当于提供了对代码的压缩功能。uETM由如下两局部组成:u跟踪端口,用于实时执行的跟踪。代码执行时,CPU发送串行、经过编码、压缩的分支目标地址、管线状态、读写数据给ETM。u触发装置,标准已被开发。该标准允许指定特定应用所需的触发源的准确集合。资源包括地址和数据比较器、计数器和定序器。9.2ARM开发工具概述9.2.1JTAG仿真器JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器连接比较方便,通过现有的JTAG边界扫描口与ARMCPU核通信,属于完全非插入式即不使用片上资源调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、AC和DC参数不匹配与电线长度的限制等均被最小化了。使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。JTAG仿真器通过ARM处理器的JTAG调试接口与目标机通信,通过并口或串口、网口、USB口与宿主机通信。通过JTAG方式可以完成:读出/写入CPU的存放器,访问控制ARM处理器内核。读出/写入内存,访问系统中的存储器和系统端口。访问ASIC系统
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号