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 -