ドメインとは、それぞれ専用のアドレス空間を持つ独立した実行環境で、デバイスが接続されていることもあります。メモリ管理ユニット (MMU) を持たない最小構成の MicroBlaze™ プロセッサなど、シンプルな CPU にはドメインが 1 つしかありません。APU など、より高度な CPU には複数のドメインがあり、これらは次の図に示すように例外レベル 0 ~ 3 (EL0 ~ 3) に分割されます。また、その一部はセキュア ドメイン セグメント (SEL0 ~ 1) を持つことができます。
次の表に、APU の各種ドメイン上で実行可能なものの例を示します。
ドメイン | 非セキュア | セキュア (TrustZone) |
---|---|---|
EL0 | Linux プロセス/アプリケーション RTOS アプリケーション プロセス モデル |
セキュアまたはトラステッド アプリケーション |
EL1 | Linux カーネル RTOS カーネル |
OP-TEE などのセキュア OS |
EL2 | オプションのハイパーバイザー (Xen)、U-Boot | サポートされない |
EL3 | TF-A |
CPU 型の実行エンジン (APU、RPU、MicroBlaze プロセッサ、AI エンジンなど) では、ある 1 つのドメインで動作するコンパイル済みプログラムをイメージと呼びます。通常は標準の ELF フォーマットを使用しますが、場合によっては PDI などのよりコンパクトなフォーマットに変換することもあります。
イメージという用語は、PL/FPGA で動作する「コード/ロジック」という意味でも使用されます。PL イメージ (ビットストリーム) も広い意味で使われる用語で、コンフィギュレーション情報 (デバイスの開始など) を指すこともあれば、PL ファブリック コンフィギュレーションに変換されるカスタマー コードを指すこともあります。
イメージがドメインにロードされる方法には、いくつかあります。
- ブート中
-
- QSPI、SD、eMMC、または OSPI にある PDI ファイル
- BootROM が PLM をロードし、PLM がイメージの残りの部分をロードします。ハイパーバイザーを使用する場合は、U-Boot によってロードされます。U-Boot は Linux などの OS もロードします。
- JTAG デバッガーまたは Select MAP を使用してイメージをメモリに置くことができます。
- QSPI、SD、eMMC、または OSPI にある PDI ファイル
- 動作中
-
- オペレーティング システムは、ファイル システム (rootfs、リモートファイルシステム、SD カードなど) からイメージをロードできます。
- 別のプロセス (fork/exec)
- 別の CPU (OpenAMP を使用)
- ハイパーバイザーが別の仮想マシン (VM) および関連するソフトウェア セットをロードすることもできます。
- ファイル システムへのアクセスが可能な、高度な RTOS もイメージをロードできます。
- PLM は、リスタート中またはクライアントの要求に応じてイメージを動的にロードできます。
- オペレーティング システムは、ファイル システム (rootfs、リモートファイルシステム、SD カードなど) からイメージをロードできます。
ほとんどの場合、イメージがドメインにロードされたら、イメージ内のデータは変化しますが、コードはライフサイクルの最後まで変化しません。ただしこれには例外があります。代表的なのは、Linux がドライバーをカーネル モジュールとして動的にロードする場合、DFX 領域が PL にロードされる場合、そしてファームウェアが更新される場合です。
1 つのアプリケーションに複数のイメージを接続できます。これらの複数イメージ アプリケーションは、たとえば通常の Linux プロセスがアクセラレータを使用しており、それと同時にそのアクセラレータをロードする必要があるような場合に使用します。