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

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

来源:网络收集 时间:2026-09-12
导读: 这样的话,地址部分总是被认为是匹配的,实际上起作用的就是数据和WP Data Value寄存器的值是否匹配。另外一个寄存器,WP Control Value/Mask是用来控制该组的WP寄存器的,同时提供些附加的比较条件(信息)。下面

这样的话,地址部分总是被认为是匹配的,实际上起作用的就是数据和WP Data Value寄存器的值是否匹配。另外一个寄存器,WP Control Value/Mask是用来控制该组的WP寄存器的,同时提供些附加的比较条件(信息)。下面逐一介绍。

(5)WP Control Value/Mask Register

WP Control Value寄存器的长度为9位,WP Control Mask寄存器的长度为8位,因为WP Control Value寄存器的最高位是用来控制启用/禁止WP功能的,该位不可以被屏蔽。WP Control Mask寄存器的作用和前面的两种MASK寄存器的作用类似,这里不多说了。下面具体看看WP Control Value寄存器,其格式如下:

ENABLE: 如果该位置0的话,意味着断点触发条件永远不成立,也就是把全部断点都给disable掉了;

RANGE: 暂时不会用,呵呵; CHAIN: 暂时不会用,呵呵;

EXTERN: 外部到EmbeddedICE-RT的输入,通过该输入,可以使得断点的触发依赖于一定的外部条件;

nTRANS: 用来判断是在用户态下还是非用户态下,用户态下:nTRANS = 0,否则nTRANS = 1;

nOPC: 检测当前的周期是取指令还是进行数据访问;

MAS[1:0]: 和ARM7TDMI的MAS[1:0]信号进行比较,以探测当前总线的宽度是8位、16位还是32位;

nRW: nRW = 0, 当前的是读周期,nRW = 1,当前的是写周期。

在WP Control Value寄存器中用的比较多的是nPOC,用来区分当前的是一个取指令周期,还是普通的数据访问周期。断点和观察点是不一样的。断点用来标识某个地址上的一条指令,如果要将一个WATCH POINT寄存器组用作断点设置,首先需要置WP Control Value寄存器的nPOC位为0,用来表示:只有在当前的周期是进行取指令的前提下,才触发断点。观察点用来观察某个地址上的数据变化的,如果要将一个WATCH POINT寄存器组用作观察点使用,首先需要置WP Control Value寄存器的nPOC位为1,用来表示:只有在当前的周期是进行普通的数据访问的前提下,才触发观察点。

(6)WP Address Value/Mask Register和硬件断点

断点是用来标识某个地址上的指令的,所以要将一个WATCH POINT用作断点设置,首先需要将WP Control Value寄存器的nPOC位置0,用来表示:只有在当前的周期是进行取指令的条件下,才触发断点。要在一个地址设置一个断点,可以通过WP Address Value/Mask这两个寄存器来实现。假设,要在地址0x0040设置一个断点,可以将WP Address Value寄存器的值设置为0x0040,同时将WP Address Mask寄存器的值设置为0x0。另外,将WP Data

Mask设置为0xFFFFFFFF,这样可以屏蔽掉WP Data value寄存器的影响,在进行比较的时候,只考虑地址是否匹配。这样,每次ARM7TDMI从地址0x0040取指令的话,不管该指令是什么,断点就会被触发,ARM7TDMI会暂停当前的运行,自动进入调试状态,要清除该断点的话,只要改变WP Address Value寄存器的值,或者设置WP Control Value寄存器,禁止该功能。如果你想在所有地址的低16位的值为0x0040的地方设置断点,可以配合使用WP Address Mask寄存器,将它的值设置为0xFFFF,0000,这样的话,每次比较的时候,高16为的地址就会被屏蔽掉。其实这种使用方式应该是比较少的,比较多的情况是,屏蔽掉最低2位或者最低1位的地址。在ARM状态下,因为ARM指令的长度是32位的,所有指令地址的最低2位必须为0,所以,如果在ARM状态下,一般将WP Address Mask的低2位置1,在进行地址比较的时候,屏蔽掉地址低最低2位,确保断点是被设置在正确的地址上;如果类似,如果是在THUMB状态下,一般需要将WP Address Mask的最低1位置1。上面描述的是第一种设置断点的方式,这种方式是通过地址比较来实现断点的。这也是我们常说的硬件断点,这类断点可以被设置在任何地址(包括FLASH和SDRAM)。因为ARM7TDMI提供了两组WP Address Value/Mask寄存器,所以,可以支持两个硬件断点。下面让我们来看看断点的另外一种实现方式。

(7)WP Data Value/Mask Register和软件断点

在调试过程当中,通过WP Data Value/Mask寄存器也可以实现断点设置。利用WP Data Value/Mask如何实现断点设置呢? 和硬件断点的设置一样,首先需要将WP Control Value寄存器的nPOC位置0,用来表示:只有在当前的周期是进行取指令的条件下,才触发断点。 然后,将WP Address Mask寄存器的值设置为:0xFFFFFFFF, 这样可以屏蔽掉WP Address value寄存器的影响,在进行比较的时候,只考虑数据是否匹配。接下来,将WP Data Value寄存器的值设置为一个固定的值,例如:0xDEDEDEDE,将WP Data Mask寄存器的值设置为0x00000000。在需要设置断点的地方,将其内容替换为0xDEDEDEDE。这样,一但程序运行到该位置,尝试从该位置取指令或者数据的时候,因为取得的数据值和WP Data Value寄存器的值相同,ARM7TDMI会暂停当前的运行,自动进入调试状态。要清除该位置上的断点,我们只需要将该位置原来的指令恢复就可以了。这样,退出调试状态后,程序可以继续正常的运行。通过WP Data Value/Mask寄存器,我们可以在任何需要设置断点的地方,将其内容替换为一个固定的序列,就可以达到设置断点的目的。这种断点就是我们通常所说的软件断点。软件断点的设置方式使得ARM7TDMI可以支持任意数量的软件断点。但也决定了软件断点的局限性:软件断点不能设置在ROM/FLASH里面。因为软件断点的实现需要替换要设置断点的位置的内容,这点在ROM/FLASH做不到。(虽然从某种意义上来说,FLASH也是可读写的,但是需要特殊的指令)。

(8)WP Address Value/Mask Register和观察点

WP Data Value/Mask Register也可以用来设置观察点,用以观察某个地址的数据变化。每当系统访问(读写)完在被观察的地址的数据的时候,ARM7TDMI就会进入调试状态,这样,我们就可以马上检查该地址上的数据。要设置一个观察点,将WP Address Value寄存器的值设置为需要观察的数据的地址,将WP Address Mask寄存器的值设置为0x00000000,将WP Data Mask寄存器的值设置为0xFFFFFFFF。同时不要忘记设置WP Control Value寄存器:nPOC = 1(数据访问,而非取指令);还可以设置nRW,表示是对读操作进行观察,还是对写操作进行观察;另外,也可以通过MAS[1:0]设置合适的数据宽度(8位、16位、32位)。如果希望WP Control Value寄存器的某些位不起作用,可以恰当的设置WP Control Mask寄存器。例如,如果希望对读操作和写操作都进行观察,那么就可以设置WP Control

Mask寄存器的第0位为1。

在这一小节里,我们介绍了如何通过扫描链2访问EmbeddedICE-RT的内部寄存器以及EmbeddedICE-RT的内部寄存器的作用。同时我们还介绍了通过EmbeddedICE-RT内部寄存器使ARM7TDMI进入调试状态的3种方式:控制DBGRQ信号、断点、观察点。要使得ARM7TDMI推出调试状态,可以使用RESTART JTAG指令。

4.4.3 通过扫描链1访问ARM7TDMI的通用寄存器和系统存储空间

在这个小节里,我们将讨论如何通过边界扫描链1来访问处于调试状态的ARM7TDMI. 这个小节的所有讨论都基于这样的一个默认条件:ARM7TDMI已经进入到调试状态(DBGRQ、断点、观察点)。除非明确指出,否则都默认为ARM7TDMI处于调试状态。

边界扫描链1分布在ARM7TDMI的32数据总线周围,另外包括BREAKPT信号,总长度为33位。其扫描寄存器单元的分布如下表所示:

通过边界扫描链1的前 …… 此处隐藏:5100字,全部文档内容请下载后查看。喜欢就下载吧 ……

ARM嵌入式实验开发环境熟悉实验 - 图文(6).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)