AR# 52030

Zynq-7000 SoC、引导系统 — 重置原因机制不使用 slcr.REBOOT_STATUS 寄存器

描述

一个器件不支持针对重置原因的 slcr.REBOOT_STATUS 时,软件必须使用去特性 slcr.RESET_REASON 寄存器来确定最后一个设备重置(POR、SRST、调试和其它软件系统重置)的原因。

解决方案

用于确定所有芯片修定版中最后一次重置的原因的软件算法是相似的,但软件使用的寄存器是不同的。

生产器件使用 slcr.REBOOT_STATUS。

生产和 GES 器件的说明如下所述。

}影响:轻微
解决方法: 软件可使用 slcr.RESET_REASON 寄存器。查看解决方法详情。
受影响的配置: 想要知道系统重启原因的系统。
受影响的器件修订版本:请参考(Xilinx 答复 47916) - Zynq-7000 SoC 芯片修订版差异。

 

操作详情

处理器重置源确定:

用户可确定最近重置源。执行该任务的寄存器读取和清除在工程样本(Z-7020 GES 和 Z-7045 GES 设备)和所有生产器件之间已经发生变化。:
GES 器件:用户软件必须有助于保持 slcr.RST_REASON 寄存器的状态。
生产:用户软件必须有助于保持 slcr.REBOOT_STATUS [22:16] 寄存器比特位的状态。

系统检测并记录器件从 7 个潜在来源重置的原因(记录在 RST_REASON 或 REBOOT_STATUS 寄存器中):

系统看门狗重置 [SWDT_RST 内部信号]
处理器 0 重置 [AWDT0_RST 内部信号]
处理器 1 重置 [AWDT1_RST 内部信号]
系统软件重置(slcr.PSS_RST_CTRL [SOFT_RST] 位)
调试系统重置 [DBG_RST]
系统重置 [PS_SRST_B 引脚]
上电复位 [PS_POR_B 引脚]

RST_REASON 和 RST_REASON_CLR 寄存器:

只适用于工程样本(不适用于生产器件)。生产器件使用 REBOOT_STATUS 寄存器。RST_REASON 和 RST_REASON_CLR 寄存器不再出现在 Zynq-7000 SoC 技术参考手册 (TRM) 中。这些寄存器记录在这里,在本 Xilinx 答复记录中,适用于工程样本(Z-7020 GES 和 Z-7045 GES 器件)。

所有芯片修订版:

RST_REASON 为软件(用户和 BootROM)只读。寄存器包含 7 个对应于 7 个潜在重置源的比特位。硬件检测到重置时,该硬件就会设置一个比特位。寄存器会累积每个重置的原因,这样就可设置多个比特位。寄存器可通过将一个 1 写入 RST_REASON_CLR [0] 寄存器比特位来清除。
注:这些比特位通过所有非 POR 重置存留。出现 POR 重置时,只有 POR 位被设置为 1。

芯片 1.0 和 2.0:
为了让用户代码确定最近重置的原因,用户代码将在读取重置原因后清除 RST_REASON 寄存器,以便下一次重置出现时,只设置一个比特位。

芯片 3.0:
这些寄存器针对用户进行了去特性,而修改 BootROM 代码,可管理这些寄存器。  用户代码不需要(也不应该访问)RST_REASON 和 RST_REASON_CLR 寄存器。

REBOOT_STATUS 寄存器:

所有芯片修订版:
该寄存器包含 32 个读/写位,这些读/写位通过所有非 POR 重置存留。寄存器比特位可由硬件、BootROM 或用户代码写入,主要取决于系统状态和芯片修订版。
比特位 [15:0]:引导过程失败时,BootROM 会在 [15:0] 位中写入一个错误代码。

:芯片 3.x 的错误代码与在芯片 1.0/2.0 中使用的不同。(Xilinx 答复 55082)中介绍了 1.0/2.0 的错误代码。TRM 中介绍了生产芯片的错误代码。

芯片 1.0 和 2.0:
比特位 [31:16]:不是由 BootROM 或硬件分配或写入

芯片 3.0:
比特位 [31:24]:不是由 BootROM 或硬件分配或写入
比特位 [23]:保留。
比特位 [22:16]:为了让用户代码确定最近重置的原因,用户代码将在读取重置原因后清除这些比特位,以便下一次重置出现时,只设置一个比特位。

 

注册比特位GES Z-7020 和 GES Z-7045 器件量产器件

  

slcr.REBOOT_STATUS

0xF800_0258

31:24

 

通用 32 位读写域
通过除 POR 重置外的所有重置存留。

不是由 BootROM 或硬件分配或写入

通用 8 位读写域通过除 POR 重置外的所有重置存留。
不是由 BootROM 或硬件分配或写入

23保留
22上电复位 (POR)、PS_POR_B 信号
21系统重置 (SRST_B)、SRST_B 信号
20调试重置 [DBG_RST]
19SLC 软重置 (SLC_RST)
18CPU 1 看门狗重置 (AWDT1_RST)
17CPU 0 看门狗重置 (AWDT0_RST)
16系统看门狗重置 (SWDT_RST)
15:0BootROM 错误代码

 

slcr.RST_REASON

0xF800_0250

31:7保留

去特性寄存器

6上电复位 (POR)、PS_POR_B 信号
5调试重置 [DBG_RST]
4系统重置 (SRST_B)、SRST_B 信号
3CPU 1 看门狗重置 (AWDT1_RST)
2CPU 0 看门狗重置 (AWDT0_RST)
1系统看门狗重置 (SWDT_RST)
0BootROM 错误代码

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
47916 Zynq-7000 SoC 器件:芯片修订差异 N/A N/A
AR# 52030
日期 06/13/2018
状态 Active
Type 设计咨询
器件