ARM嵌入式实验开发环境熟悉实验 - 图文(5)
-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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]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 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




