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 />

数据总线<br />

控制信号<br />

外部产生的断点和观察点的时序都相同 数据必须在 CLK 的上升沿有效 当数据是断点所在的指令时<br />

DBGBREAK 信号必须在 CLK 上升沿保持高电平<br />

DBGBREAK 会把数据看作是观察点所在的数据<br />

相似地 当数据被装载或储存时 在 CLK 上升沿声明<br />

当产生断点或观察点时 在 <strong>ARM7TDMI</strong>-S 内核进入调试状态之前可能有一个延迟 当内核进入调试<br />

状态时 DBGACK 信号声明 外部产生的断点时序如图 5-3 所示<br />

CLK<br />

ADDR[31:0]<br />

DATA[31:0]<br />

DBGBREAK<br />

DBGACK<br />

TRANS[1:0] 存储器周期 内部周期<br />

图 5-3 进入调试状态<br />

5.3.1 在断点处进入调试状态<br />

在断点处进入调试状态<br />

在断点处进入调试状态<br />

<strong>ARM7TDMI</strong>-S 处理器在指令进入流水线时<br />

不会进入调试状态<br />

将指令标示为断点 但是在指令到达执行阶段之前 内核<br />

标示断点的指令不会被执行 而是使 <strong>ARM7TDMI</strong>-S 内核进入调试状态 当检查内部状态时 在断点<br />

指令之前观察状态 当检查完成之后 将断点移去 程序从标示断点的指令处开始恢复执行<br />

当一个条件断点指令到达流水线的执行阶段时 如果系统处于暂停模式 断点总是会被提取出来<br />

<strong>ARM7TDMI</strong>-S 内核不管是否满足指令条件都会进入调试状态<br />

当发生下列情况时 标示断点的指令不会使 <strong>ARM7TDMI</strong>-S 内核进入调试状态<br />

在标示断点的指令之前有分支或写 PC 的指令 这种情况下 执行分支时 <strong>ARM7TDMI</strong>-S 处理器<br />

会清洗指令流水线 并因此而取消断点<br />

当发生异常时 会导致 <strong>ARM7TDMI</strong>-S 处理器清洗指令流水线 并取消断点 在正常环境下 从<br />

异常退出时 <strong>ARM7TDMI</strong>-S 内核会跳转到发生异常的前一条指令 这种情况下 流水线被重新填<br />

充 而断点也被重新标记<br />

5.3.2 在观察点处进入调试状态<br />

在观察点处进入调试状态<br />

在观察点处进入调试状态<br />

在访问数据时产生观察点 在暂停模式下 内核的处理被停止 在监控模式下 会执行中止异常 观<br />

察点总是会被取出 但在暂停模式下 内核可能不会立即进入调试状态 因为要等待当前指令执行完毕<br />

如果当前指令是一个多字装载或存储指令<br />

处于观察点时会发生下列动作<br />

当前指令结束<br />

产生所有内核状态的变化<br />

装载数据写入目标寄存器<br />

执行基址读回<br />

LDM 或 STM 需要等待许多个周期才会将观察点取出<br />

注 观察点与数据中止相似 区别在于 当发生数据中止时 即使指令结束 <strong>ARM7TDMI</strong>-S 内核仍然<br />

- 37 -

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

Saved successfully!

Ooh no, something went wrong!