高度なアプリケーションとの通信
リアルタイム対応アプリケーション (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 はバッファーからの読み取りとバッファーへの書き込みを行うことができます。 通信はリング バッファーを使用して実装されるため、読み取りと書き込みの両方がバッファーの先頭までラップできます。
バッファーに書き込まれたメッセージまたはバッファーから読み取られたメッセージの構造は次のとおりです。
メッセージ ヘッダー | メッセージ コンテンツ | ||||||
---|---|---|---|---|---|---|---|
|
|
メッセージ ヘッダーの最初のフィールド (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 デプロイ ツールによって既定ですべての既存のアプリケーションが削除されます。 相互に通信するアプリケーションを開発するときにこの問題が発生しないようにするには、アプリケーションを パートナーとしてマークする必要があります。 いずれかのアプリケーションをデプロイしても、そのパートナーは削除されません。 詳細については、「 アプリケーションをパートナーとしてマークする 」を参照してください。