ARM嵌入式实验开发环境熟悉实验 - 图文(6)
这样的话,地址部分总是被认为是匹配的,实际上起作用的就是数据和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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




