怎么通过arm仿真器 jtag swd端口的控制实现arm的实时调试

32位ARM嵌入式处理器的调试技术
14:35:11来源: 21ic
随着对高处理能力、实时多任务、网络通信、超低功耗需求的增长,传统8位机已远远满足不了新产品的要求,高端嵌入式处理器已经进入了国内开发人员的视野,并在国内得到了普遍的重视和应用。ARM内核系列处理器是由英国ARM公司开发授权给其他芯片生产商进行生产的系统级芯片。目前在嵌入式32位处理器市场中已经达到70%的份额。笔者在对三星公司的ARM7芯片技术调试的过程中,对这些高端嵌入式系统的调试技术进行了总结。
传统的调试工具及方法存在过分依赖芯片引脚、不能在处理器高速运行下正常工作、占用系统资源且不能实时跟踪和硬件断点、价格过于昂贵等弊端。目前嵌入式高端处理器的使用渐趋普及。这些处理器常常运行在100MHz,并且一些内部控制以及内部存储器的总线信号并不体现在外部引脚上。这种片上系统(System on Chip)、深度嵌入、软件复杂的发展趋势给传统的调试工具带来了极大的挑战,也给嵌入式处理器开发工程师的工作带来了不便,这就需要更先进的调试技术和工具进行配套。本文将详细介绍在ARM处理器中采用的几种片上调试技术(on-chip debugger)。这些片上调试技术通过在芯片的硬件逻辑中加入调试模块,从而能够降低成本,实现传统的在线仿真器和逻辑分析仪器的功能,并在一定的条件下实现实时跟踪和分析,进行软件代码的优化。1 边界扫描技术(JTAG)
边界扫描技术是为了满足当今深度嵌入式系统调试的需要而被IEEE1149.1标准所采纳,全称是标准测试访问接口与边界扫描结构(Standard Test Access Portand Boundary Scan Architecture)。JTAG遵循1149.1标准,是面向用户的测试接口,是ARM处理器调试的基础。本文提到的ARM的E-TRACE调试模式实际上是JTAG的增强版本,其它一些32位嵌入式处理器的调试方式也基本上遵循这个标准。这个用户接口一般由4个引脚组成:测试数据输入(TDI)、测试数据输出(TDO)、测试时钟(TCK)、测试模式选择引脚(TMS),有的还加了一个异步测试复位引脚(TRST)。其体系结构如图1。
所谓边界扫描就是将芯片内部内科所有的引脚通过边界扫描单元(BSC)串接起来,从JTAG的TDI引入,TDO引出。芯片内的边界扫描链由许多的BSC组成,通过这些扫描单元,可以实现许多在线仿真器的功能。根据1149.1的规定,芯片内的片上调试逻辑通常包括一个测试访问接口控制器(TAP)。它是一个16状态的有限状态机以及测试指令寄存器、数据寄存器、旁路寄存器和芯片标识寄存器等。在正常模式下,这些测试单元(BSC)是不可见的。一旦进入调试状态,调试指令和数据从TDI进入,沿着测试链通过测试单元送到芯片的各个引脚和测试寄存器中,通过不同的测试指令来完成不同的测试功能。包括用于测试外部电气连接和外围芯片功能的外部模式以及用于芯片内部功能测试(对芯片生产商)的内部模式,还可以访问和修改CPU寄存器和存储器,设置软件断点,单步执行,下载程序等。其优点如下:
·可以通过边界扫描操作测试整个板的电气连接,特点为表面贴元件提供方便;
·各个引脚信号的采样,并可强制引脚输出用以测试外围芯片;
·可以软件下载、执行、调试和控制,为复杂的实时跟踪调试提供路径;
·可以进行多内核和多处理器的板级和芯片级的调试,通过串接(如图2),为芯片制造商提供芯片生产、测试的途径。
虽然JTAG调试不占用系统资源,能够调试没有外部总线的芯片,代价也非常小;但是由于JTAG是通过串口依次传递数据,速度比较慢,只能进行软件断点级别的调试,自身还不能完成实时跟踪和多种事件触发等复杂调试功能。因此便有了几种功能更为完善的增强版本。
2 ARM芯片的实时调试方案(E-TRACE)
ARM公司的内核芯片采用E-TRACE片上调试模式。它实际上是JTAG的升级版本,通过增强的辅助片上调试硬件来完成实时调试,解决了许多传统调试器难以解决的问题。
图2 对多内核和多处理器的调试
它的实时调试方案通过三种途径解决:
·EmbeddedICE硬逻辑;
·实时监控;
·实时跟踪。
EmbeddedICE逻辑单元存在于ARM7TDMI、ARM9TDMI、ARM9E和ARM10内核中。它枯JTAG口的基础上,增加了硬件断点寄存器、比较器,通过断点寄存器的值可以进行硬件断点的设置,不仅对地址还可以对数据、控制总线的信号进行复杂的触发控制设定,而不是单单在指令级别进行中断(如软中断),从而满足对特定事件的中断响应,极大的增加了灵活性,同时可以在ROM中设置断点和观察点,极大地方便调试。其示意如图3。
关键字:&&&&&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。ARM编辑、编译工具
时间: 11:07:18
&&&& 阅读:139
&&&& 评论:
&&&& 收藏:0
标签:手动编译
编译器问题,肯定是GNU的大名鼎鼎的GCC了,与此相关的什么连接器,汇编器也都包含在内了。
针对arm的GCC,当然就是arm-linux-gcc了,我所用的版本就是友善之臂光盘自带arm-linux-gcc 4.4.3。也有资料说也可以用arm-elf-gcc,这个与arm-linux-gcc带的c库不同,是uclibc,更精简更适合嵌入式。
手动编译需要我们自己写Makefile文件,涉及到编译过程的依赖等细节问题。在我们实际开发中,可以不通过这种方式,但是需要了解这个过程。
& & ADS是ARM公司的集成开发环境软件,ADS包括了四个模块分别是:SIMULATOR;C 编译器;实时调试器;应用函数库。
& &&&&C编译器效率极高;支持C以及C++,使工程师可以很方便的使用C语言进行开发;
& &&&&提供软件模拟仿真功能,使没有Emulators的学习者也能够熟悉ARM的指令系统;
(直接就可以在IDE环境下,通过运行自己编写的汇编或C语言,查看ARM系统中寄存器的情况)
& &&&&配合FFT-ICE使用,ADS1.2提供强大的实时调试跟踪功能,片内运行情况尽在掌握;
& &&&&ADS1.2需要硬件支持才能发挥强大功能,目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE等;
& &&&&简易下载电缆不能支持ADS1.2。
&2、ARM REALVIEW DEVELOPER SUITE
& & RealView Developer Suite工具是ARM公司是推出的新一代ARM集成开发工具,支持所有ARM系列核,并与众多第三方实时操作系统及工具商合作简化开发流程。
开发工具包含以下组件:
& &&&& 完全优化的ISO C/C++编译器;
& &&&& C++ 标准模板库;
& &&&& 强大的宏编译器;
& &&&& 支持代码和数据复杂存储器布局的连接器;
& &&&& 可选 GUI调试器;
& &&&& 基于命令行的符号调试器(armsd);
& &&&& 指令集仿真器;
& &&&& 生成无格式二进制工具、Intel 32位和Motorola 32位ROM映像代码的指令集模拟工具;
& &&&& 库创建工具.
3、IAR EWARM
& & Embedded Workbench for ARM 是IAR Systems公司为ARM微处理器开发的一个集成开发环境(下面简称IAR EWARM)。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。
& & IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.30。EWARM 中包含一个全软件的模拟程序(simulator),用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM的功能和使用方法。
IAR EWARM的主要特点如下:
& &&&* 高度优化的IAR ARM C/C++ Compiler
& &&&* IAR ARM Assembler
& & *&&&一个通用的IAR XLINK Linker
4、KEIL ARM-MDKARM
& & Keil uVision调试器可以帮助用户准确地调试ARM器件的片内外围功能(I2C、CAN、UART、SPI、中断、I/O口、A/D转换器、D/A转换器和PWM模块等功能)。ULINK USB-JTAG转换器将PC机的USB端口与用户的目标硬件相连(通过JTAG或OCD),使用户可在目标硬件上调试代码。通过使用Keil uVision IDE/调试器和ULINK USB-JTAG转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。
主要特点:
& &&&* Project/Target/Group/File的重叠管理模式,并可逐级设置;
& &&&* 支持编辑状态的断点设置,并在仿真状态下有效;
& &&&* 高速ARM指令/外设模拟器;
& &&&* 软件模拟进程中允许建立外部输入信号;
& &&&* 支持C调试描述语言,可建立与实际硬件高度吻合的仿真平台;
& &&&* 支持简单/条件/逻辑表达式/存储区读写/地址范围等断点。
& &&&* 多种流行编译工具选择
& &&&* Keil高效率C编译器;
& &&&* ARM公司的ADS/RealView 编译器;
& &&&* GNU GCC 编译器。
ARM调试工具
目前,主流的调试工具可以分为软件调试工具和硬件调试工具,二者一般是结合使用。
所谓软件调试,是指运行在PC端的程序,需要对ARM开发板进行调试时,需要打开这个上位机程序,然后通过J-Link等硬件进行程序的调试。
H-JTAG是一个免费的ARM调试代理,程序没有任何限制
&& 0) 支持ARM7/ARM9,支持自动检测和手动指定内核
& &&&1) 使用RDI接口,支持SDT,ADS,REALVIEW和IAR
& &&&2) 支持ADS1.2和SDT2.51和RREAL VIEW
& &&&3) 支持个硬件断点或者数量不限的软件断点
& &&&4) 支持ARM/THUMB模式
& &&&5) 支持LITTLEENDIAN & BIGENDIAN
& &&&6) 支持SEMIHOSTING
& &&&7) 支持WIGGLER SDTJTAG和自定义接口
2、FlashMagic
与其说是调试软件,不如说是下载工具,可以直接下载hex、bin文件到开发板上。
3、LPC2000系列ISP工具
& & 可经由Philips官方网站下载。
4、Macraigor Systems Wiggler 调试工具
J-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产。提供对市面上几乎所有ARM内核芯片的支持。目前最新版本的J-Link产品为V8,支持JTAG和SWD模式。并且对主要的IDE环境如KEIL、IAR都有良好的支持。优点很多,因此也是首选的调试工具。
SEGGER的J-link版本众多,超过1百种。正版的通用型J-link价格贵,国内大部分在使用的是克隆版的J-link。克隆版目前价格低於¥70。因为克隆太多,SEGGER公司最新版本的驱动对克隆版本已经不再提供支持,这是一个问题。
&& 1)支持所有ARM7和ARM9
& &&&2)下载速度高达600KB/sec
& &&&3)无需电源供电,可直接通过USB取电
& &&&4)JTAG速度是8MHz
& &&&5)自动辨速
& &&&6)监控所有的JTAG管脚信号,测量电压
& &&&7)20pin标准JTAG连接器
& &&&8)配带USB口和20pin插槽
& &&&9)支持Windows 2000 和Windows XP
& 10)带J-Link TCP/IP server,允许通过TCP/ IP 网络使用J-Link
通用的ARM JTAG工具ULINK。
ULINK是ARM官方的调试工具,KEIL出品。ULINK也可以支持大多数的ARM芯片,对KEIL的支持非常好,是KEIL的默认调试工具。缺点是因为不支持IAR,影响了ULINK的推广。
ULINK官方提供电路图等资料,属於半开放的,可以自做。目前山寨版的价格比J-Link略高。也低於¥100。
3、OpenJTAG
OpenJTAG为开源的JTAG调试工具,功能强大,并且配合其他的开源软件工具可用於在Linux对ARM芯片进行调试,因此在一些社群中使用较多。因为采用FTDI+FPGA双芯片的架构,成本相对较高。要低於¥100,需要自己制作。
4、低成本的并口JTAG
并口JTAG的电路网上很多,目前因为电脑没有了并口的关系,处于淘汰阶段。但从成本上来说是最便宜的。较流行的一种名为wigger,要注意20PIN的接线,其中RTCK的接法。
ARM调试器汇总
通用的ARM调试主要为上述几种,其他的ARM调试工具还有RDI、早期采用并口的ARM调试工具目前因为PC不带并口已经淘汰。从实现的方式来说,使用FTDI的USB驱动芯片以及采用MCU来进行协议转换的是主要的两类。一般来说采用FTDI芯片的ARM调试工具在一般被用来支持某家公司芯片,而不能支持其他公司的ARM芯片,因此往往是不通用的。
H-JTAG和J-Link的区别
你调试arm,总要遵循arm的调试接口协议,jtag就是其中的一种吧。当仿真时,iar,keil,ads等等都有一个公共的调试接口,RDI就是其中的一咱,那么我们如何完成RDI--&arm调试协议(JTAG)的转换呢?如是乎就有两种做法:
在电脑上写一个服务程序,把keil,ads,iar中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(注意,这个转换只是电气物理层上的转换,就像RS232那样的作用)发送你的的目标板。 h-jtag就是这样的。 h-jtag的硬件就仅是一个物理电平的转换接口,所以很简单。而电脑中装的h-jtag软件就是前面说到的服务程序,负责协议转换的。
2.另一种做法,就是做一个板,用此板直接接收来自keil,ads,iar等软件的调试命令,由此板做rdi-&jtag协议的转换。然后与目标板通信,这就是jlink的工作原理。
由上可以看出 h-jtag由于是软件作协议转换的,所以速度较慢,但是硬件简单。而第二种方法的jlink一般带一个强劲的CPU,作硬件协议转换,把以硬件复杂,但速度快。
JTAG,J-Link及OpenJTAG的比较
&&& JTAG(Joint Test Action Group) 是IEEE1149.1 (Standard Access Port and Boundary-Scan Architecture)标准.它最初用来以边界扫描的方式测试印刷电路板,当然它现在仍然这一方面广泛使用。
&&& JTag的用途:
&&& 1. 边界扫描测试
&&& 2. 往Flash烧写程序和数据: 可以烧写Nor Falsh 和 Nand Falsh
&&& 3. 调试ARM裸机程序,不能调试嵌入式Linux程序
&&& JTag的接口:
&&& JTag接口并没有统一的标准。ARM处理器通常使用2*10针(部分使用2*7针)的JTag接口。
&&& JTag连接Host的一端通常为并口。一般笔记本及台式机都很少有并口接口,而且市面上买到的USB转并口并不能用于JTag,USB转并口主要是给老式打印机使用的。这就使得我们很难使用JTag以及笔记本进行烧写。另外的一个缺点是并口JTag的速率非常低。
&&& JTag的替代品:
&&& Serial Wire Debug(SWD)。
&&& JLink是Segger的产品,/jlink.html。它是USB接口转到JTag接口的适配器(adaptor),并不是真正意义上的仿真器。它采用标准的14针或者20针的Jtag接口与开发板相连。它支持多种CPU内核(ARM7, ARM9,Cortex etc.)。对ARM而言,它可能是最受欢迎的适配器。
&&& JLink的功能:
&&& 1. 往Flash烧写程序:不支持烧写NAND Flash
&&& 2. 支持Windows, Linux以及Mac: 但是Linux及Mac仅支持JLink Commander, Command Line GdbServer, 以及shared library。
&&& 3. 支持多种调试协议: 如GDB, RDI 等
&&& 4. USB转串口功能
&&& JLink的接口:
&&& USB接口,JLink的价格也比较低(当然是山寨的)。
3.OpenJTAG
&&& OpenJTag是一个开源项目(包含软件和硬件),采用GNU GPL license: 。
&&& OpenJTag的功能:
&&& 1. 往Flash烧写程序: 支持NOR Flash 和 NAND Flash
&&& 2. 支持Windows以及Linux
&&& 3. 能够用在支持GDB调试协议的工具上: 如IAR, Eclipse, 但不能用在支持RDI调试协议的工具上: 如ADS
&&& 4. USB转串口功能
&&& OpenJtag的接口:
USB接口,但是他的价格要比JLink高一些。
代码存放位置
启动代码一般下载到NorFlash之中,其余的应用程序一般下载到NandFlash、SDRAM(内存)上,当然在实际运行的时候,NandFlash中的代码需要搬移到SDRAM上运行。
支持烧写到NorFlash之中的软件有:OpenJTAG、J-Link、JTAG
支持烧写到NandFalsh之中的软件有:OpenJTAG、JTAG
支持烧写到SDRAM之中的软件有:标签:
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 arm jtag接口 的文章

 

随机推荐