教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

ARM嵌入式实验开发环境熟悉实验 - 图文(5)

来源:网络收集 时间:2026-09-12
导读: -31位、BREAKPT信号。扫描链1比扫描链0的长度短了很多,通过扫描链1可以更快的插入指令或者是数据到ARM7TDMI的内部。 (3)Scan Chain 2 扫描链2长度为38位,该扫描链是专门用来访问EmbeddedICE-RT内部的寄存器。

-31位、BREAKPT信号。扫描链1比扫描链0的长度短了很多,通过扫描链1可以更快的插入指令或者是数据到ARM7TDMI的内部。

(3)Scan Chain 2

扫描链2长度为38位,该扫描链是专门用来访问EmbeddedICE-RT内部的寄存器。通过访问EmbeddedICE-RT的内部寄存器,可以让ARM7TDMI进入调试状态、设置断点、设置观察点。

(4)Scan Chain 3

通过扫描链3,ARM7TDMI可以访问外部的边界扫描链。该扫描链用的很少,在此就不介绍了,想了解的网友可以参考ARM7TDMI手册。

在实际的调试过程中,扫描链1和扫描链2用的最多。基本上所有的调试动作都是通过这两条扫描链来完成的。

ARM7TDMI还提供了3个附加的信号:DBGRQ、DBGACK和BREAKPT. 这3个信号都被EmbeddedICE-RT控制,可以用来使得处理器从正常的运行状态进入调试状态或从调试状态返回到正常的运行状态。

(1)DBGREQ

调试请求,通过把DBGREQ置“1”,可以迫使ARM7TDMI进入调试状态。 (2)DBGACK

调试确认,通过DBGACK,可以判断当前ARM7TDMI是否在调试状态。 (3)BREAKPT

断点信号,这个信号是输入到ARM7TDMI处理器内核的。如果BREAKPT被置“1”,当前的内存访问被设置为断点。如果当前的内存访问是取指令的话,当该指令被执行的时候,

ARM7TDMI处理器自动进入调试状态;如果当前的内存访问是存取数据的话,在存储完成以后,ARM7TDMI处理器自动进入调试状态。 4.4 ARM7TDMI 调试原理

在这个小节里,我将详细介绍ARM7TIMI的调试原理,并对一些比较感兴趣的问题进行讨论。例如,如何设置断点?如何让ARM7TDMI进入调试状态? 在调试状态下,如何访问ARM7TDMI的内部寄存器?如何访问内存单元?

在继续之前,看看ARM7TDMI的正常运行状态和调试状态的区别。在正常运行状态下,ARM7TDMI由MCLK(Memory Clock)驱动,正常运行。在调试状态下,ARM7TDMI的正常运行被打断,并且和系统的其它部分隔离开来。在调试状态下,我们可以通过插入特定的ARM/THUMB的指令来读写ARM7TDMI的内部寄存器和修改内存的内容。在调试状态下,ARM7TDMI由内部的调试时钟DCLK(Debug Clock)驱动。DCLK比MCLK慢很多,所以在调试状态下,插入的ARM/THUMB指令的运行速度会比较慢(现对而言)。在完成需要的操作后,可以用RESTART JTAG指令让ARM7TDMI返回到正常运行状态,恢复原来的运行。 4.4.1 ARM7TDMI的指令寄存器及常用JTAG指令

ARM7TDMI的指令寄存器长度是4位,通过TAP和JTAG接口,可以把指令装载到指令寄存器当中去。在CAPTURE-IR状态下,固定值B0001总是被装载到指令寄存器当中去。在SHIFT-IR状态中,可以把ARM7TDMI支持的新指令从TDI串行输入,同时固定值B0001会从TDO串行输出。通过这个输出的固定值,可以判断当前的操作是否正确。在UPDATE-IR状态,新输入的指令被装载到指令寄存器当中去。最后回到RUN-TEST/IDLE状态后,新指令立即生效。

下面先来看看在ARM7TDMI调试当中经常用到的几条JTAG指令。

(1)IDCODE

该指令的二进制代码是1110。IDCODE指令将Device Identification Code寄存器连接到TDI和TDO之间。Device Identification Code寄存器的长度是32位,通过TAP就可以将ARM7TDMI的ID给读出来。ARM7TDMI的ID是0x1F0F0F0F. 在CAPTURE-DR状态下,器件的ID被捕获到ID寄存器里面。在SHIFT-DR状态下,先前捕获的ID通过TDO位移出来,总共需要32个TCK时钟周期。在UPDATE-DR状态下,ID寄存器不受任何影响。

(2)SCAN_N

该指令的二进制代码是0010。ARM7TDMI提供了4条扫描链,通过SCAN_N指令可以选择需要访问的扫描链。一般来说,需要访问Embedded ICE-RT的寄存器时,选择扫描链2;需要插入指令到ARM7TDMI内核去执行的时候,选择扫描链1。选择扫描链的过程如下:先把SCAN_N指令装载到指令寄存器当中去,该指令会将长度为4位的扫描链选择寄存器连接到TDI和TDO之间;然后进入到CAPTURE-DR状态,在这个状态下,固定值B1000将被捕获到扫描链选择寄存器当中去;在SHIFT-DR状态下,将需要选择的扫描链的号码通过TDI输入到扫描链选择寄存器当中去;在UPDATE-DR状态下,被选择的扫描链将被连接到TDI和TDO之间。在TAP被复位以后,默认状态下选择的是扫描链3。在使用SCAN_N选定了一条扫描链后,当前选定的扫描链会一直保持不变,直到在下一次调用SCAN_N选择另外的扫描链。

(3)BYPASS

该指令的二进制代码是1111。BYPASS指令将1-BIT 长的BYPASS寄存器连接到TDI和TDO之间。

(4)INTEST

该指令的二进制代码是1100。INTEST指令将通过SCAN_N选定的扫描链置于内部测试模式。

(5)RESTART

该指令的二进制代码是0100。RESTART指令用来使ARM7TDMI处理器从调试状态退回到正常的运行状态。

4.4.2 EmbeddedICE-RT Logic

在这个小节里,主要介绍通过扫描链2来访问EmbeddedICE-RT内部的寄存器。EmbeddedICE-RT内部包括了丰富的寄存器,通过这些寄存器,可以控制ARM7TDMI进入或者退出调试状态;可以设置断点和观察点。

先来看看EmbeddedICE-RT包括那些寄存器,下面这个表里罗列了EmbeddedICE-RT中包含的所有寄存器。不同的寄存器有不同的长度,而且被分配了一个长度为5的地址。其中Debug Control Register用来控制EmbeddedICE-RT;通过Debug Status Register可以查询当前系统的状态;Abort Status Register用来确定异常的产生原因:断点、观察点还是真的异常;Debug Comms Control Register和Debug Comms Data Register是用来控制和操作Debug Communication Channel的;后面的所有寄存器都是关于WATCH POINT的,设置断点和观察点就是通过设置这些寄存器来实现的。后面我将逐一的进行介绍。

表2. Mapping of EmbeddedICE-RT Registers

要访问EmbeddedICE-RT内部的寄存器,必须通过扫描链2来实现。扫描链的长度是38位,其中0-4位用来标识要访问的寄存器的5位宽的地址;5-36位为数据位;第37位用来标识对当前寄存器进行读操作还是写操作。如果是对当前寄存器进行写操作,5-36的数据位用来标识需要写入到寄存器的数据;如果对当前寄存器进行读操作,5-36的数据位用来存储从寄存器中读出的数据。假设我们现在想访问Debug Control Register,对其进行写操作,首先需要选择扫描链2,将其连接到TDI和TDO之间,然后通过扫描链2对Debug Control Register进行访问。其过程如下所述。通过TAP将SCAN_N指令写入到指令寄存器当中去, TAP状态转换如下:RUN-TEST/IDLE ", SELECT-DR-SCAN ", SELECT-IR-SCAN ", CAPTURE-IR ", SHIFT-IR ", EXIT1-IR ", UPDATE-IR ", RUN-TEST/IDLE,在SHIFT-IR状态下,将SCAN_N通过TDI写到指令寄存器中去;接下来,访问被SCAN_N指令连接到TDI和TDO直接的扫描链选择寄存器,通过将2写入到扫描链选择寄存器当中去,以将扫描链2连接到TDI和TDO之间,TAP状态转换过程如下:RUN-TEST/IDLE ", SELECT-DR-SCAN ", CAPTURE-DR ", SHIFT-DR ", EXIT1-DR ", UPDATE-DR ", RUN-TEST/IDLE,在SHIFT-DR状态下,将数值2通过TDI写到扫描链选择寄存器当中去。在通过扫描链2访问任何EmbeddedICE-RT内部寄存器之前,我们还需要用INTEST 指令将当前通过SCAN_N指令选择的扫描链置内部测试状态。写入INTEST指令的过程和写入SCAN_N指令的过程类似。在此就不多说了。好 …… 此处隐藏:5001字,全部文档内容请下载后查看。喜欢就下载吧 ……

ARM嵌入式实验开发环境熟悉实验 - 图文(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/445567.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)