高度なアプリケーションとの通信

リアルタイム対応アプリケーション (RTApps) は、メモリの共有領域にマップされたリング バッファーを介して、高レベルのアプリケーションと通信します。

IntercoreComms サンプルは、RTApps が高レベルのアプリケーションと通信する方法を示しています。 独自の 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 はバッファーからの読み取りとバッファーへの書き込みを行うことができます。 通信はリング バッファーを使用して実装されるため、読み取りと書き込みの両方がバッファーの先頭までラップできます。

バッファーに書き込まれたメッセージまたはバッファーから読み取られたメッセージの構造は次のとおりです。

メッセージ ヘッダー メッセージ コンテンツ
コンポーネント ID 予約
16 バイト 4 バイト
データ
0 - 1 KB
  • メッセージ ヘッダーの最初のフィールド (16 バイト) には、高レベル アプリのコンポーネント ID が含まれています。

    RTApp が高レベル アプリとの通信を開始している場合は、コンポーネント ID の最初の 3 つのセグメントの各バイトの順序がリトル エンディアン (最下位バイト最初) であることを確認します。 残りの 2 つのセグメントのバイトの順序は、ビッグ エンディアンである必要があります。

    RTApp が高レベル アプリからのメッセージに応答している場合は、ソース メッセージのコンポーネント ID を応答メッセージのヘッダーにコピーするだけで済みます。

  • メッセージ ヘッダーの 2 番目のフィールド (4 バイト) は現在予約されており、0 を含める必要があります。

  • メッセージ ヘッダーは常に 16 バイト境界に配置されます。

  • 現在、メッセージ コンテンツのサイズは最大 1 KB です。

バッファーへの読み取りまたは書き込み操作のたびに、RTApp は共有メールボックスを使用して、メッセージを受信または送信したことを高レベルのアプリに通知します。

アプリケーション マニフェストの設定

RTApp と高レベル アプリの両方のアプリケーション マニフェストには、通信するアプリケーションのコンポーネント ID を一覧表示する必要があります。 この設定を構成するには、アプリケーション マニフェストに AllowedApplicationConnections 機能を追加し、各コンポーネント ID を機能に追加します。 Azure Sphere アプリケーション マニフェスト の詳細。 他のアプリケーションと通信するように RTApp を構成するアプリケーション マニフェストからの抜粋を次に示します。

"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

パートナー アプリケーション

Azure Sphere デバイスにアプリケーションを読み込むと、Azure Sphere デプロイ ツールによって既定ですべての既存のアプリケーションが削除されます。 相互に通信するアプリケーションを開発するときにこの問題が発生しないようにするには、アプリケーションを パートナーとしてマークする必要があります。 いずれかのアプリケーションをデプロイしても、そのパートナーは削除されません。 詳細については、「 アプリケーションをパートナーとしてマークする 」を参照してください。