19.08.2013 Views

ARM7TDMI-S(Rev 4)技术参考手册 - Read

ARM7TDMI-S(Rev 4)技术参考手册 - Read

ARM7TDMI-S(Rev 4)技术参考手册 - Read

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

广州周立功单片机发展有限公司 Tel (020)38730976 38730916 Fax 38730925 http //www.zlgmcu.com<br />

Dm [31:0 ] Be the value in the data mask register<br />

D [31:0 ] Be the data bus from the <strong>ARM7TDMI</strong>-S processor<br />

Cv [8:0 ] Be the value in the control value register<br />

Cm [7:0 ] Be the value in the control mask register<br />

C [9:0 ] Be the combined control bus from the <strong>ARM7TDMI</strong>-S core, other watchpoint registers, and<br />

the DBGEXT signal.<br />

CHAINOUT 信号<br />

信号<br />

CHAINOUT 信号来自<br />

WHEN (({Av [31:0 ],Cv [4:0 ]}XNOR {A [31:0 ],C [4:0 ]})OR {Am [31:0 ],Cm [4:0 ]}==0xFFFFFFFFF)<br />

CHAINOUT=((({Dv [31:0 ],Cv [6:4 ]}XNOR {D [31:0 ],C [7:5 ]})OR {Dm [31:0 ],Cm [7:5 ]})==0x7FFFFFFFF)<br />

观察点寄存器 1 的 CHAINOUT 输出向观察点 0 提供 CHAIN 输出 该 CHAIN 输入使您可以使用配置<br />

相当复杂的断点和观察点<br />

注<br />

观察点 1 无 CHAIN 输入 而观察点 0 无 CHAIN 输出<br />

例如 调试器请求一个位于地址 YYY 并且在多处理系统中运行处理 XXX 时的断点 如果当前处理<br />

ID 保存在存储器当中 那么可以使用观察点和断点的结合来实现上述功能 观察点地址指向一个已知的包<br />

含当前处理 ID 的存储器位置 观察点数据指向所请求的处理 ID 并且 ENABLE 位清零<br />

观察点的地址比较器输出用于驱动 CHAINOUT 锁存的写使能 锁存的输入是同一个观察点数据比较<br />

器的输出 锁存输出驱动断点比较器的 CHAIN 输入 地址 YYY 保存在断点寄存器当中 当 CHAIN 输入<br />

声明时 断点地址匹配并正确触发断点<br />

5.26.2 DBGRNG 信号<br />

信号<br />

DBGRNG 信号来自<br />

DBGRNG=((({Av [31:0],Cv [4:0]}XNOR{A[31:0],C [4:0 ]}) OR {Am[31:0 ],Cm[4:0 ]})==0xFFFFFFFFF) AND<br />

((({Dv [31:0 ],Cv [7:5 ]}XNOR {D [31:0 ],C [7:5 ]}) OR Dm [31:0 ],Cm [7:5 ]))==0x7FFFFFFFF)<br />

观察点寄存器 1 的 DBGRNG 输出为观察点寄存器 0 提供 RANGE 输入<br />

结合到一起构成范围断点<br />

该 RANGE 输入将两个断点<br />

可选择的范围限制为 2 的幂 例如 如果一个断点发生的地址在存储器的前 256 个字节内 但不在前<br />

32 字节内 那么对观察点寄存器进行如下编程<br />

对于观察点 1<br />

1. 使用地址值 0x00000000 和地址屏蔽值 0x0000001f 编程观察点 1<br />

2. 清零 ENABLE 位<br />

3. 将所有其它观察点 1 寄存器按照正常的断点编程<br />

不会触发断点<br />

前 32 字节内的地址使 RANGE 输出为高 但<br />

对于观察点 0<br />

1. 使用地址值 0x00000000 和地址屏蔽值 0x000000ff 编程观察点 1<br />

2. 置位 ENABLE 位<br />

3. 将 RANGE 位编程为匹配 0<br />

4. 将所有其它观察点 0 寄存器按照正常的断点编程<br />

如果观察点 0 匹配但观察点 1 不匹配 也就是说观察点 0 的 RANGE 输入为 0 断点被触发<br />

- 62 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!