描述
调试时Zynq-7000 SoC系列的复位行为因硅的版本而异。
解
硅行为
1.0硅
- JTAG和调试系统在初始上电时被禁用。它们在BootROM运行完成后启用。
- 在软复位时,JTAG和调试系统保持启用状态。
2.0硅
- JTAG和调试系统在初始上电时被禁用。它们在BootROM运行完成后启用。
- 在软复位时,JTAG被禁用但调试系统保持启用状态。
生产硅
- JTAG和调试系统在初始上电时被禁用。它们在BootROM运行完成后启用。
- 在软复位时,JTAG和调试系统被禁用。
硅行为的后果
1.0
- 如果设置了向量catch或在BootROM执行的存储区域内设置断点(0x0至0x40000),则处理器将在复位后停止在该断点处,因为调试系统已启用。
- 如果处理器在BootROM运行完成之前停止,则内存映射将不会出现,因为它应该在BootROM之后。
- 需要允许处理器继续,直到BootROM完成执行。这是可能的,因为JTAG和调试系统已启用。
2.0
- 如果设置了向量catch或在BootROM执行的存储区域内设置断点(0x0至0x40000),则处理器将在复位后停止在该断点处,因为调试系统已启用。
- 由于JTAG被禁用,因此在命中断点后无法恢复处理器。
生产硅
- 在BootROM执行期间,BootROM执行的内存区域内的向量捕获和断点(0x0至0x40000)被禁用。
- 然后,引导ROM将在退出时重新启用调试系统以及JTAG,这将重新激活在软复位之前设置的任何断点/向量捕获,并将它们应用于用户应用程序或FSBL。
软件行为
为了解决复位行为,Xilinx微处理器调试器(XMD)实现了一种软件解决方案(适用于1.0和2.0芯片),以使复位行为保持一致。
在复位之前,一段代码被加载到Zynq-7000 SoC,它执行以下操作:
- 调试系统和JTAG被禁用。
- 设置断点以捕获BootROM的退出。
- 处理器重置。
无论引导模式设置如何,如果映像是非安全映像,BootROM总是在退出时启用调试系统和JTAG。
这允许BootROM执行(因为调试系统被禁用)并允许处理器在用户代码执行之前停止。
注意: Production Silicon不需要解决方法。
1.0和2.0芯片的软件后果
由于软件需要在器件重置之前执行一段代码,因此有一个主要后果:
- 如果处理器挂起,则重置将无法恢复处理器。
- 这意味着,例如,如果引导模式设置为QSPI但编程的坏图像挂起处理器,则XMD将无法恢复,因为它将无法在用户代码之前停止处理器(编程为QSPI) )执行。
没有回复内容