欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    ARM trace32 内存调试命令调试方法教程.docx

    • 资源ID:11213941       资源大小:35.45KB        全文页数:29页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARM trace32 内存调试命令调试方法教程.docx

    1、ARM trace32 内存调试命令调试方法教程 ARM trace32 内存调试命令调试方法教程1 IEEE Standard 1149.1 - Test Access Port and Boundary-Scan Architecture 既然是介绍JTAG调试,还是让我们从IEEE的JTAG调试标准开始吧。JTAG是JOINT TEST ACTION GROUP的简称。IEEE 1149.1标准就是由JTAG这个组织最初提出的,最终由IEEE批准并且标准化的。所以,这个IEEE 1149.1这个标准一般也俗称JTAG调试标准。接下来的这一部分,主要简单的介绍了TAP (TEST ACCE

    2、SS PORT) 和BOUNDARY-SCAN ARCHITECTURE的基本构架。虽然不是很全面,但对了解JTAG的基本原理来说,应该是差不离了。如果希望更全面深入的了解JTAG的工作原理,可以参考IEEE 1149.1标准。这篇文章主要介绍ARM JTAG调试的基本原理。基本的内容包括了TAP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECTURE的介绍,在此基础上,结合ARM7TDMI详细介绍了的JTAG调试原理。 这篇文章主要是总结了前段时间的一些心得体会,希望对想了解ARM JTAG调试的网友们有所帮助。我个人对ARM JTAG的理解还不是很透彻

    3、,在文章中,难免会有偏失和不准确的地方,希望精通JTAG调试原理的大侠们不要拍砖,有什么问题提出来,我一定尽力纠正。同时也欢迎对ARM JTAG调试感兴趣的朋友们一起交流学习2-1 边界扫描在JTAG调试当中,边界扫描(Boundary-Scan)是一个很重要的概念。边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片

    4、输入输出信号的观察和控制。对于芯片的输入管脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载倒该管脚中去;对于芯片的输出管脚,也可以通过与之相连的边界扫描寄存器“捕获”(CAPTURE)该管脚上的输出信号。在正常的运行状态下,这些边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响。这样,边界扫描寄存器提供了一个便捷的方式用以观测和控制所需要调试的芯片。另外,芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。一般的芯片都会提供几条独立的边界扫描链,用来实现完整的测试功能。边界扫描链可以串

    5、行的输入和输出,通过相应的时钟信号和控制信号,就可以方便的观察和控制处在调试状态下的芯片。利用边界扫描链可以实现对芯片的输入输出进行观察和控制。下一个问题是:如何来管理和使用这些边界扫描链?对边界扫描链的控制主要是通过TAP(Test Access Port)Controller来完成的。在下一个小节,我们一起来看看TAP是如何工作的。2-2 TAP (TEST ACCESS PORT) 在上一节,我们已经简单介绍了边界扫描链,而且也了解了一般的芯片都会提供几条边界扫描链,用来实现完整的测试功能。下面,我将逐步介绍如何实现扫描链的控制和访问。 TWENTYONE TWENTYONECNHOTM

    6、AIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 1 OPEN-JTAG 在IEEE 1149.1标准里面,寄存器被分为两大类:数据寄存器(DRData Register)和指令寄存器(IRInstruction Register)。边界扫描链属于数据寄存器中很重要的一种。边界扫描链用来实现对芯片的输入输出的观察和控制。而指令寄存器用来实现对数据寄存器的控制,例如:在芯片提供的所有边界扫描链中,选择一条指定的边界扫描链作为当前的目标扫描链,并作为访问对象。下面,让我们从TAP(Test Access Port)开始。TAP是一个通用的端口,通过TAP可以访问芯片提供的

    7、所有数据寄存器(DR)和指令寄存器(IR)。对整个TAP的控制是通过TAP Controller来完成的。TAP总共包括5个信号接口TCK、TMS、TDI、TDO和TRST :其中4个是输入信号接口和另外1个是输出信号接口。一般,我们见到的开发板上都有一个JTAG接口,该JTAG接口的主要信号接口就是这5个。下面,我先分别介绍这个5个接口信号及其作用。􀂃 Test Clock Input (TCK) TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。TCK在IEEE 1149.1标准里是强制要求的。􀂃 Tes

    8、t Mode Selection Input (TMS) TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。TMS信号在TCK的上升沿有效。TMS在IEEE 1149.1标准里是强制要求的。􀂃 Test Data Input (TDI) TDI是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI接口一位一位串行输入的(由TCK驱动)。TDI在IEEE 1149.1标准里是强制要求的。􀂃 Test Data Output (TDO) TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO接口一位

    9、一位串行输出的(由TCK驱动)。TDO在IEEE 1149.1标准里是强制要求的。􀂃 Test Reset Input (TRST) TRST可以用来对TAP Controller进行复位(初始化)。不过这个信号接口在IEEE 1149.1标准里是可选的,并不是强制要求的。因为通过TMS也可以对TAP Controller进行复位(初始化)。事实上,通过TAP接口,对数据寄存器(DR)进行访问的一般过程是: 􀂃 通过指令寄存器(IR),选定一个需要访问的数据寄存器; 􀂃 把选定的数据寄存器连接到TDI和TDO之间; 􀂃 由

    10、TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过TDO读出来。接下来,让我们一起来了解一下TAP的状态机。TAP的状态机如图1所示,总共有16个状态。在图中,每个六边形表示一个状态,六边形中标有该状态的名称和标识代码。图中的箭头表示了TAP Controller内部所有可能的状态转换流程。状态的转换是由TMS控制的,所以在每个箭头上有标有tms = 0 或者 tms = 1。在TCK的驱动下,从当前状态到下一个状态的转换是由TMS信号决定。假设TAP Controller的当前状态为Select-DR-Scan,在TCK的驱动下,如果TMS

    11、0,TAP Controller进入Capture-DR状态;如果TMS = 1,TAP Controller进入Select-IR-Scan状态。 TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 2 OPEN-JTAG 图1. TAP Controller State Transitions 这个状态机看似很复杂,其实理解以后会发现这个状态机其实很直接、很简单。观察图1,我们可以发现,除了Test-Logic Reset和Test-Run/Idle状态外,其他的状态有些类似。例如Select-DR-Scan和Sel

    12、ect-IR-Scan对应,Capture-DR和Capture-IR对应,Shift-DR和Shift-IR对应,等等。在这些对应的状态中,DR表示Data Register,IR表示Instruction Register。记得我们前面说过吗,寄存器分为两大类,数据寄存器和指令寄存器。其实标识有DR的这些状态是用来访问数据寄存器的,而标识有IR的这些状态是用来访问指令寄存器的。在详细描述整个状态机中的每一个状态之前,首先让我们来想一想:要通过边界扫描链来观察和控制芯片的输入和输出,需要做些什么?如果需要捕获芯片某个管脚上的输出,首先需要把该管脚上的输出装载到边界扫描链的寄存器单元里去,然后

    13、通过TDO输出,这样我们就可以从TDO上得到相应管脚上的输出信号。如果要在芯片的某个管脚上加载一个特定的信号,则首先需要通过TDI把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元里去,然后把该寄存器单元的值加载到相应的芯片管脚。下面,让我们一起来看看每个状态具体表示什么意思?完成什么功能? Test-Logic Reset 系统上电后,TAP Controller自动进入该状态。在该状态下,测试部分的逻辑电路全部被 TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 3 OPEN-JTAG 禁用,以保证芯片核心逻

    14、辑电路的正常工作。通过TRST信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。前面我们说过TRST是可选的一个信号接口,这是因为在TMS上连续加5个TCK脉冲宽度的“1”信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。所以,在不提供TRST信号的情况下,也不会产生影响。在该状态下,如果TMS一直保持为“1”,TAP Controller将保持在Test-Logic Reset状态下;如果TMS由“1”变为“0”(在TCK的上升沿触发),将使TAP Controller进入Ru

    15、n-Test/Idle状态。Run-Test/Idle 这个是TAP Controller在不同操作间的一个中间状态。这个状态下的动作取决于当前指令寄存器中的指令。有些指令会在该状态下执行一定的操作,而有些指令在该状态下不需要执行任何操作。在该状态下,如果TMS一直保持为“0”,TAP Controller将一直保持在Run-Test/Idle状态下;如果TMS由“0”变为“1”(在TCK的上升沿触发),将使TAP Controller进入Select-DR-Scan状态。Select-DR-Scan 这是一个临时的中间状态。如果TMS为“0” (在TCK的上升沿触发),TAP Control

    16、ler进入Capture-DR状态,后续的系列动作都将以数据寄存器作为操作对象;如果TMS为“1” (在TCK的上升沿触发),TAP Controller进入Select-IR-Scan状态。Capture-DR 当TAP Controller在这个状态中,在TCK的上升沿,芯片输出管脚上的信号将被“捕获”到与之对应的数据寄存器的各个单元中去。如果TMS为“0”(在TCK的上升沿触发),TAP Controller进入Shift-DR状态;如果TMS为“1” (在TCK的上升沿触发),TAP Controller进入Exit1-DR状态。Shift-DR 在这个状态中,由TCK驱动,每一个时钟

    17、周期,被连接在TDI和TDO之间的数据寄存器将从TDI接收一位数据,同时通过TDO输出一位数据。如果TMS为“0” (在TCK的上升沿触发),TAP Controller保持在Shift-DR状态; 如果TMS为“1” (在TCK的上升沿触发),TAP Controller进入到Exit1-DR状态。假设当前的数据寄存器的长度为4。如果TMS保持为0,那在4个TCK时钟周期后,该数据寄存器中原来的4位数据(一般是在Capture-DR状态中捕获的数据)将从TDO输出来;同时该数据寄存器中的每个寄存器单元中将分别获得从TDI输入的4位新数据。Update-DR 在Update-DR状态下,由TC

    18、K上升沿驱动,数据寄存器当中的数据将被加载到相应的芯片管脚上去,用以驱动芯片。在该状态下,如果TMS为“0”,TAP Controller将回到Run-Test/Idle状态;如果TMS为“1”,TAP Controller将进入Select-DR-Scan状态。Select-IR-Scan 这是一个临时的中间状态。如果TMS为“0” (在TCK的上升沿触发),TAP Controller进入Capture-IR状态,后续的系列动作都将以指令寄存器作为操作对象;如果TMS为“1” (在TCK的上升沿触发),TAP Controller进入Test-Logic Reset状态。Capture-I

    19、R 当TAP Controller在这个状态中,在TCK的上升沿,一个特定的逻辑序列将被装载到指令寄存器中去。如果TMS为“0”(在TCK的上升沿触发),TAP Controller进入Shift-IR状态;如果TMS为“1” (在TCK的上升沿触发),TAP Controller进入Exit1-IR状态。Shift-IR 在这个状态中,由TCK驱动,每一个时钟周期,被连接在TDI和TDO之间的指令寄存 TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 4 OPEN-JTAG 器将从TDI接收一位数据,同时通过TDO输

    20、出一位数据。如果TMS为“0” (在TCK的上升沿触发),TAP Controller保持在Shift-IR状态; 如果TMS为“1” (在TCK的上升沿触发),TAP Controller进入到Exit1-IR状态。假设指令寄存器的长度为4。如果TMS保持为0,那在4个TCK时钟周期后,指令寄存器中原来的4bit长的特定逻辑序列(在Capture-IR状态中捕获的特定逻辑序列)将从TDO输出来,该特定的逻辑序列可以用来判断操作是否正确;同时指令寄存器将获得从TDI输入的一个4bit长的新指令。Update-IR 在这个状态中,在Shift-IR状态下输入的新指令将被用来更新指令寄存器。说了那

    21、么多,下面,让我们先看看指令寄存器和数据寄存器访问的一般过程,以便建立一个直观的概念。1 系统上电,TAP Controller进入Test-Logic Reset状态,然后依次进入:Run-Test/Idle 􀃆 Select-DR-Scan 􀃆 Select-IR-Scan 􀃆 Capture-IR 􀃆 Shift-IR 􀃆 Exit1-IR 􀃆 Update-IR,最后回到Run-Test/Idle状态。在Capture-IR状态中,一个特定的逻辑序列被加载到指令寄存器当中;然后进

    22、入到Shift-IR状态。在Shift-IR状态下,通过TCK的驱动,可以将一条特定的指令送到指令寄存器当中去。每条指令都将确定一条相关的数据寄存器。然后从Shift-IR 􀃆 Exit1-IR 􀃆 Update-IR。在Update-IR状态,刚才输入到指令寄存器中的指令将用来更新指令寄存器。最后,进入到Run-Test/Idle状态,指令生效,完成对指令寄存器的访问。2 当前可以访问的数据寄存器由指令寄存器中的当前指令决定。要访问由刚才的指令选定的数据寄存器,需要以Run-Test/Idle为起点,依次进入Select-DR-Scan 􀃆

    23、; Capture-DR 􀃆 Shift-DR 􀃆 Exit1-DR 􀃆 Update-DR,最后回到Run-Test/Idle状态。在这个过程当中,被当前指令选定的数据寄存器会被连接在TDI和TDO之间。通过TDI和TDO,就可以将新的数据加载到数据寄存器当中去,同时,也可以捕获数据寄存器中的数据。具体过程如下。在Capture-DR状态中,由TCK的驱动,芯片管脚上的输出信号会被“捕获”到相应的边界扫描寄存器单元中去。这样,当前的数据寄存器当中就记录了芯片相应管脚上的输出信号。接下来从Capture-DR进入到Shift-DR状态中去。

    24、在Shift-DR状态中,由TCK驱动,在每一个时钟周期内,一位新的数据可以通过TDI串行输入到数据寄存器当中去,同时,数据寄存器可以通过TDO串行输出一位先前捕获的数据。在经过与数据寄存器长度相同的时钟周期后,就可以完成新信号的输入和捕获数据的输出。接下来通过Exit1-DR状态进入到Update-DR状态。在Update-DR状态中,数据寄存器中的新数据被加载到与数据寄存器的每个寄存器单元相连的芯片管脚上去。最后,回到Run-Test/Idle状态,完成对数据寄存器的访问。上面描述的就是通过TAP对数据寄存器进行访问的一般流程。会不会还是觉得很抽象?让我们来看一个更直观的例子。现在假设,T

    25、AP Controller现在处在Run-Test/Idle状态,指令寄存器当中已经成功的写入了一条新的指令,该指令选定的是一条长度为6的边界扫描链。下面让我们来看看实际如何来访问这条边界扫描链。图2所示的是测试芯片及其被当前指令选定的长度为6的边界扫描链。由图2可以看出,当前选择的边界扫描链由6个边界扫描移位寄存器单元组成,并且被连接在TDI和TDO之间。TCK时钟信号与每个边界扫描移位寄存器单元相连。每个时钟周期可以驱动边界扫描链的数据由TDI到TDO的方向移动一位,这样,新的数据可以通过TDI输入一位,边界扫描链的数据可以通过TDO输出一位。经过6个时钟周期,就可以完全更新边界扫描链里的

    26、数据,而且可以将边界扫描链里捕获的6位数据通过 TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 5 OPEN-JTAG TDO全部移出来。图2. 测试芯片及其当前选定的边界扫描链图3表示了边界扫描链的访问过程。图3.1 表示了芯片和边界扫描链的初始化状态,在测试状态下,芯片的外部输入和输出被隔离开了,芯片的输入和输出可以通过相应的边界扫描链来观察和控制。在图3.1中,扫描链里的每个移位寄存器单元的数据是不确定的,所以在图中用X表示,整个扫描链里的数据序列是XXXXXX。要从TDI输入到测试芯片上的数据序列是:1010

    27、10. 同时要从TDO得到芯片相应管脚上的状态。现在TAP Controller从Run-Test/Idle状态经过Select-DR-Scan状态进入到Capture-DR状态,在Capture-DR状态当中,在一个TCK时钟的驱动下,芯片管脚上的信号状态全部被捕获到相应的边界扫描移位寄存器单元当中去,如图3.2所示。从图3.2中我们可以看出,在进入Capture-DR状态后,经过一个TCK时钟周期,现在扫描链中的数据序列变成了:111000. 在数据捕获完成以后,从Capture-DR状态进入到Shift-DR状态。在Shift-DR状态中,我们将通过6个TCK时钟周期来把新的数据序列(1

    28、01010)通过TDI输入到边界扫描链当中去;同时,将边界扫描链中捕获的数据序列(111000)通过TDO输出来。在进入到Shift-DR状态后,每经过一个TCK时钟驱动,边界扫描链从TDO输出一位数据;同时,从TDI接收一位新的数据。图3.3所示的是在Shift-DR状态下,1个TCK时钟周期后的扫描链的变化。图3.4所示的是在Shift-DR状态下,2个TCK时钟周期后的扫描链的变化。此时,扫描链已经从TDI串行得到了两位新数据,从TDO也串行输出了两位数据。在TCK时钟的驱动下,这个过程一直继续下去。图3.5所示的是在经过6个TCK时钟周期以后扫描链的情况。从图3.5中我们可以看到:边界

    29、扫描链当中已经包含了新的数据序列:101010. 在TDO端,经过6个TCK时钟驱动以后,也接收到了在Capture-DR状态下捕获到的数据序列:111000. 到目前为止,虽然扫描链当中包含了新的数据序列:101010,但测试芯片的管脚上的状态还是保持为:111000. 下一步,需要更新测试芯片相应管脚上的信号状态。要实现更新,TAP Controller从Shift-DR状态,经过Exit1-DR状态,进入到Update-DR状态。在Update-DR状态中,经过一个周期的TCK时钟驱动,边界扫描链中的新数据序列将被加载到测试芯片的相应管脚上去,如图3.6所示。从图3.6可以看出,测试芯片

    30、的状态已经被更新,相应管脚上的状态序列已经从111000变为101010. 最后从Update-DR状态回到Run-Test/Idle状态,完成对选定的边界扫描链的访问。 TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 6 OPEN-JTAG (1)初始化状态(2)CAPTURE-DR (3)SHIFT-DR 1 TCK TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 7 OPEN-JTAG (4)SHIFT-DR 2 TCK (5)SHI

    31、FT-DR 6 TCK (6)UPDATE-DR 图3. 边界扫描链的访问过程 TWENTYONE TWENTYONECNHOTMAIL.COM HTTP:/TWENTYONE.BLOGCHINA.COM 8 OPEN-JTAG 在看完上面这个例子以后,对TAP Controller的状态机应该大概了解了吧?对如何访问边界扫描链应该也有个直观的概念了吧?虽然上面的这个例子只是说明了如何访问边界扫描链,对其它的数据寄存器、指令寄存器的访问过程也是类似的。要实现对指令寄存器的访问,不同的是TAP Controller必须经过不同的状态序列:Run-Test/Idle 􀃆 Sele

    32、ct-DR-Scan 􀃆 Select-IR-Scan 􀃆 Capture-IR 􀃆 Shift-IR 􀃆 Exit1-IR 􀃆 Update-IR 􀃆 Run-Test/Idle. 2-3 指令寄存器、公共指令以及数据寄存器在IEEE 1149.1标准当中,规定了一些指令寄存器、公共指令和相关的一些数据寄存器。对于特定的芯片而言,芯片厂商都一般都会在IEEE 1149.1标准的基础上,扩充一些私有的指令和数据寄存器,以帮助在开发过程中进行进行方便的测试和调试。在这一部分,我将简单介绍I

    33、EEE 1149.1规定的一些常用的指令及其相关的寄存器。与ARM7TDMI相关的私有指令和寄存器将在后面的部分专门介绍。指令寄存器: 指令寄存器允许特定的指令被装载到指令寄存器当中,用来选择需要执行的测试,或者选择需要访问的测试数据寄存器。每个支持JTAG调试的芯片必须包含一个指令寄存器。BYPASS指令和Bypass寄存器: Bypass寄存器是一个一位的移位寄存器,通过BYPASS指令,可以将bypass寄存器连接到TDI和TDO之间。在不需要进行任何测试的时候,将bypass寄存器连接在TDI和TDO之间,在TDI和TDO之间提供一条长度最短的串行路径。这样允许测试数据可以快速的通过当前的芯片送到开发板上别的芯片上去。IDCODE指令和Device Identification 寄存器: Device identification寄存器中可以包括生产厂商的信息,部件号码,和器件的版本信息等。使用IDCODE指令,就


    注意事项

    本文(ARM trace32 内存调试命令调试方法教程.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开