AMD はオープンソース プロジェクトの OpenAMP に参加しています。OpenAMP は、APU と RPU の通信をサポートします。この通信パスは、Versal デバイス全体を使用するために必要な基本機能を提供します。たとえば、OpenAMP を使用することで APU は必要に応じて RPU ソフトウェアをロードまたはアンロードしたり、RPU をリセットできます。
OpenAMP フレームワークは、AMP システム用ソフトウェア アプリケーションの開発に必要なソフトウェア コンポーネントを提供します。このフレームワークの主な機能は、次のとおりです。
- リモート コンピューティング リソースおよび関連するソフトウェア コンテキストの管理に使用される、ライフ サイクル管理機能とプロセッサ間通信機能。
- RTOS およびベアメタル ソフトウェア環境で利用可能なスタンドアロン ライブラリ。
- Linux remoteproc および RPMsg アップストリーム コンポーネントとの互換性。
OpenAMP フレームワークは、次の構成をサポートします。
- Linux マスター/汎用 (ベアメタル) リモート
- 汎用 (ベアメタル) マスター/Linux リモート
- 汎用 (ベアメタル) マスター/汎用 (ベアメタル) リモート
プロキシ インフラストラクチャおよび付属のデモでは、ベアメタル ベースのリモート コンテキストからの printf、scanf、open、close、read、および write 呼び出しをマスター上のプロキシで処理する方法を示しています。
強化されたシステム管理や高レベルの通信 API など、より高度な機能が必要な場合は、OpenAMP コミュニティ プロジェクトでAMD SoC などをターゲットとした有用なコンテンツが見つかることがあります。
OpenAMP フレームワークには次のようなメカニズムが用意されています。
- ファームウェアのロードとアンロード
- 標準 API を使用したアプリケーション間通信
次の図に、Versal デバイス上の OpenAMP アーキテクチャの例を示します。
この例では、APU 上で動作する Linux アプリケーションが RPMsg プロトコルを利用して RPU と通信します。Linux アプリケーションは、Remoteproc フレームワークにより RPU に対してアプリケーションをロードおよびアンロードできます。これにより、開発者は必要に応じて各種の専用アルゴリズムを RPU の各プロセッシング エンジンにロードし、非常に確定的な性能を得ることができます。このアーキテクチャは SMP モードと AMP モードを組み合わせて使用していることに注意してください。
詳細は、こちらのページで説明している デバイスで OpenAMP システムを使用するガイダンスを参照してください。