AR# 52030

Zynq-7000 SoC、Boot Sys - リセット原因を判断するメカニズムに slcr.REBOOT_STATUS レジスタが使用されない

説明

デバイスで slcr.REBOOT_STATUS がサポートされない場合は、ソフトウェアで機能が削除されている slcr.RESET_REASON レジスタを使用して、最新のデバイス リセットの原因 (POR、SRST、デバッグ、その他のソフトウェア システム リセット) を判断する必要があります。

ソリューション

最新のリセットの理由を判断するソフトウェア アルゴリズムはすべてのリビジョンで類似していますが、ソフトウェアが使用するレジスタは異なります。

プロダクション デバイスでは、slcr.REBOOT_STATUS が使用されます。

プロダクション デバイスと GES デバイスの説明は下にあります。

影響: 低い
回避策:ソフトウェアで slcr.RESET_REASON レジスタを使用できます。「回避策の詳細」を参照してください。
対象となる構成: システムの再ブートの理由を知る必要のあるシステム
対象となるデバイス リビジョン:(Xilinx Answer 47916) - 「Zynq-7000 AP 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 テクニカル リファレンス マニュアル』には記載されなくなりました。これらのレジスタについては、エンジニアリング サンプル (Z-7020 GES および Z-7045 GES デバイス) 用にこのアンサーに記載しています。

すべてのシリコン バージョン:

RST_REASON は、ソフトウェア (ユーザーおよび BootROM) で読み出し専用です。このレジスタには、7 つのリセット ソースに対応する 7 ビットがあります。ハードウェアがセットを検出すると、そのハードウェアによって 1 つのビットがセットされます。各リセットの原因はレジスタに保持されたままになるので、複数のビットがセットされている可能性があります。RST_REASON_CLR [0] レジスタ ビットに 1 を書き込むと、レジスタをクリアできます。
注記: これらのビットは、POR 以外のすべてのリセットで保持されます。POR リセットが発生すると、POR ビットのみが 1 にセットされます。

シリコン 1.0 および 2.0:
ユーザー コードで最新のリセットの原因を判断するには、リセットの原因が読み出された後、次にリセットが発生したときに 1 つのビットのみがセットされているようにするため、ユーザー コードで 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 で使用されているものと異なります。1.0/2.0 のエラー コードについては、(Xilinx Answer 55082) で説明しています。プロダクション シリコンのエラー コードは、『Zynq-7000 SoC テクニカル リファレンス マニュアル』に記載されています。

シリコン 1.0 および 2.0:
ビット [31:16] : BootROM またはハードウェアでは割り当てまたは書き込まれません。

シリコン 3.0:
ビット [31:24] : BootROM またはハードウェアでは割り当てまたは書き込まれません。
ビット [23] : 予約済み
ビット [22:16]: ユーザー コードで最新のリセットの原因を判断するには、リセットの原因が読み出された後、次にリセットが発生したときに 1 つのビットのみがセットされているようにするため、ユーザー コードで RST_REASON レジスタをクリアする必要があります。

 

レジスタビットGES Z-7020 および GES Z-7045 デバイスプロダクション デバイス

  

slcr.REBOOT_STATUS

0xF800_0258

31:24

 

汎用 32 ビット R/W フィールドで、
POR 以外のリセットでは保持されます。

BootROM またはハードウェアでは割り当てまたは書き込まれません。

汎用 8 ビット R/W フィールドで、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
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス