PLM は、デバイスを要求するサブシステムに対してパーミッションをチェックします。Vivado ツールでサブシステムを作成する際には、1 つのペリフェラルを複数のサブシステムに割り当てることも、1 つのサブシステムに割り当てることもできます。この情報は PMC CDO にエクスポートされ、デバイスの要求に対するアクセスは、CDO のこの情報に基づいて許可されます。デフォルトでは、このパーミッションはすべてのサブシステムで共通のため、1 つのデバイスを複数のサブシステムが要求できます。例外はクロック、リセットおよび電源操作で、これらはリソースを要求するサブシステムが 1 つしか存在しない場合のみ許可されます。
XPm_RequestNode()
を使用して要求したデバイスの初期化がすべて完了したら、XPm_InitFinalize()
API を呼び出す必要があります。そうしないと、PLM はどのデバイスもパワーダウンしません。次に、PM API を使用してデバイスを管理する場合の理想的な呼び出しシーケンスを示します。
- 必要なすべてのデバイスに対して
XPm_RequestNode()
を呼び出す。 - デバイスを初期化する。
-
XPM_InitFinalize()
を呼び出して、必要なすべてのデバイスが要求され、初期化されたことを PLM に通知する。
XPm_InitFinalize()
を呼び出す前に XPm_RequestNode()
を呼び出すことは必須ではありません。XPm_RequestNode()
の前に XPm_InitFinalize()
を呼び出した場合、PLM はそのデバイスをパワーダウンします (初期状態はパワーオン)。XPm_InitFinalize()
の後に XPm_RequestNode()
を呼び出した場合、PLM はそのデバイスをパワーアップします。
一部のデバイス初期化は、CDO によって実行されます。したがって、XPm_RequestNode()
の前に XPm_InitFinalize()
を呼び出した場合、デバイスがまずパワーダウンした後に再びパワーアップするため、初期化が失われる可能性があります。必要なデバイスをすべて要求したら、XPm_InitFinalize()
を呼び出すことを推奨します。そうしないと、もう一度初期化が必要になります。
XPm_ReleaseNode()
を呼び出す際は、デバイスがパワーダウンして初期化コンフィギュレーションが失われることがある点に注意してください。