Zynq-7000 SoC  – 有关调试重置的问题-Altera-Intel论坛-FPGA CPLD-ChipDebug

Zynq-7000 SoC – 有关调试重置的问题

描述

调试时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) )执行。
请登录后发表评论

    没有回复内容