高度なアプリケーションとの通信
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
リアルタイム対応アプリケーション (RTApp) では、メモリの共有領域にマップされるリング バッファーを介して、高度なアプリケーションとの通信が行われます。
IntercoreComms サンプルでは、RTApp と高度なアプリケーションの通信方法が示されています。 独自の RTApp 通信コードを開発するときは、IntercoreComms_RTApp_MT3620_BareMetal サンプルを使って始めます。 高度なアプリケーションに必要なコードについて詳しくは、「リアルタイム対応アプリケーションとの通信」をご覧ください。
重要
レジスタ アドレスやその他のハードウェア固有の詳細については、 Azure.Sphere@avnet.com電子メールで「MT3620 M4 プログラマ ガイド」を要求してください。
操作
RTApp から見ると、高度なアプリケーションとの通信には、次の基本的な操作が含まれます。
- MT3620 上の高度なコアと共有するメールボックスからのセットアップ情報の読み取り
- 共有メモリのデータの読み書き
バッファーのサイズとポインターを初期化する
RTApp では、リアルタイム コアと高度なコアによって共有されるメールボックス内の 3 つのメッセージによって、リング バッファーに関する情報が受信されます。 各メッセージには、コマンドとデータが含まれています。 最初の 2 つのメッセージでは、アプリケーションで通信に使用する読み取りおよび書き込みバッファーのベース アドレスが提供されます。3 つ目のメッセージは、バッファーのセットアップ情報の送信が終了したことを示します。
コマンドの値 | データ |
---|---|
0xba5e0001 | RTApp の送信 (書き込み) バッファーの記述子 |
0xba5e0002 | RTApp の受信 (読み取り) バッファーの記述子 |
0xba5e0003 | セットアップの終了 |
RTApp では、バッファー記述子内のデータに基づいて、読み取りバッファーと書き込みバッファーのサイズが計算され、各バッファーの初期位置へのポインターが設定されます。
メールボックスの使用方法に関する他の詳細については、IntercoreComms_RTApp_MT3620_BareMetal サンプルをご覧ください。
バッファーからの読み取りとバッファーへの書き込み
初期化後、RTApp でバッファーからの読み取りとバッファーへの書き込みを行うことができるようになります。 通信はリング バッファーで実装されているため、読み取りと書き込みのどちらも、バッファーの先頭に戻ることができます。
バッファーに書き込まれた、あるいはバッファーから読み取られたメッセージの構造は次のようになります。
メッセージ ヘッダー | メッセージの内容 | ||||||
---|---|---|---|---|---|---|---|
|
|
メッセージ ヘッダーの最初のフィールド (16 バイト) には、上位アプリのコンポーネント ID が含まれています。
RTApp で上位アプリとの通信が開始している場合、コンポーネント ID の最初の 3 セグメントのそれぞれでバイトの順序が確実にリトルエンディアンになるようにします (最下位のバイトが最初に来ます)。 残り 2 つのセグメントでは、バイトの順序をビッグエンディアンにする必要があります。
RTApp で最上位アプリからのメッセージに応答している場合、必要な操作は、ソース メッセージのコンポーネント ID を応答メッセージのヘッダーにコピーすることだけです。
メッセージ ヘッダーの 2 つ目のフィールド (4 バイト) は現在予約されており、0 を含める必要があります。
メッセージ ヘッダーは常に 16 バイト境界に合わせられます。
現在のところ、メッセージ コンテンツのサイズは最大 1 KB です。
バッファーに対する各読み取り操作または書き込み操作の後、RTApp では共有メールボックスを使って、メッセージを受信または送信したことを高度なアプリに通知します。
アプリケーション マニフェストの設定
RTApp と高度なアプリ両方のアプリケーション マニフェストでは、それらが通信するアプリケーションのコンポーネント ID がリストされている必要があります。 この設定を構成するには、AllowedApplicationConnections
機能をアプリケーション マニフェストに追加してから、各コンポーネント ID を機能に追加します。 Azure Sphere アプリケーション マニフェスト に詳細が含まれています。 他の 1 つのアプリケーションと通信するように RTApp が構成されているアプリケーション マニフェストからの抜粋を次に示します。
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
パートナー アプリケーション
アプリケーションを Azure Sphere デバイスに読み込むと、Azure Sphere のデプロイ ツールでは、既定で既存のアプリケーションがすべて削除されます。 相互に通信するアプリケーションを開発するときにこの問題が発生しないようにするには、アプリケーションを パートナーとしてマークする必要があります。 いずれかのアプリケーションをデプロイしても、そのパートナーは削除されません。 詳細については、「アプリケーションをパートナーとしてマークする」をご覧ください。