Azure Sphere アプリケーションの概要

Azure Sphereデバイスは、次の 2 種類のアプリケーションを実行できます。

  • 高度なアプリケーション Azure Sphere OS でコンテナー化された実行
  • リアルタイム対応アプリケーション (RTApps) はベア メタル上で実行されるか、リアルタイム コア上でリアルタイム オペレーティング システム (RTOS) を使用して実行されます

すべてのAzure Sphereデバイスには高度なアプリケーションが必要です。RTApps は省略可能です。

高度なアプリケーション

すべてのAzure Sphereデバイスには、Azure Sphere OS 上で実行され、アプリケーション ライブラリを使用できる高度なアプリケーションがあります。 高度なアプリケーションでは、次のことができます。

  • 汎用入出力 (GPIO) ピン、ユニバーサル非同期レシーバー/トランスミッタ (UART)、その他のインターフェイスなど、Azure Sphere の周辺機器を構成して操作する

  • RTApps との通信

  • インターネットおよびクラウドベースのサービスと通信する

  • 証明書ベースの認証による他のデバイスおよびサービスとのブローカーの信頼関係

What is Azure Sphere? で説明されているように、高レベルのアプリケーションは Normal World のユーザー モードでコンテナー内で実行されます。 アプリケーション コンテナーは、POSIX 環境のサブセットと、Azure Sphere OS に固有のアプリケーション ライブラリ (Applibs) のセットをサポートします。 高度なアプリケーションで使用できるライブラリと関数は、プラットフォームがセキュリティで保護され、簡単に更新できるように制限されています。 アプリケーションは、Microsoftが提供するライブラリとランタイム サービスにのみアクセスできます。他の制約の中でも、直接ファイル I/O やシェル アクセスは使用できません。 開発環境では、基本 API セットについて説明し、デバイス固有の機能をサポートするAzure Sphere アプリケーション ライブラリについて説明します。

高度なアプリケーションは継続的に実行されることが予想され、停止または失敗した場合は自動的に再起動されます。

高度なアプリケーションを作成 すると、機能に関する詳細情報が提供されます。

リアルタイム対応アプリケーション

Azure Sphere デバイスには、高度なアプリケーションに加えて、1 つ以上のリアルタイム対応アプリケーションが含まれる場合もあります。 RTApp は次のことができます。

  • Azure Sphere MCU に統合された周辺機器 (GPIO ピンや UART など) を構成して操作する
  • 高度なアプリケーションとの通信

RTApps は、ベア メタルまたはリアルタイム オペレーティング システム (RTOS) で実行できます。 GitHubの Azure Sphere サンプル リポジトリには、ベアメタル HelloWorld サンプルと、高レベルと RTApp の間の inter-core 通信を示すサンプルが含まれています。 GitHubの Azure Samples リポジトリには、Azure RTOS でAzure Sphereを使用する方法を示すサンプルが含まれています。

MT3620 チップ上の M4 リアルタイム コアをターゲットとする RTApps 用の追加のドライバーとサンプルは、Azure Sphere パートナーの MediaTek および Codethink からGitHubで入手できます。

各 RTApp は、特定の I/O コアで分離されて実行され、高度なアプリケーションとのみ通信できます。インターネット、Azure Sphere applibs、またはAzure Sphere OS のその他の機能を使用することはできません。

リアルタイム対応アプリケーションを作成 すると、RTApps の機能と開発プロセスに関する詳細情報が提供されます。

すべてのアプリケーションに共通の機能

高度なアプリと RTApps の間には大きな違いがありますが、すべてのAzure Sphereアプリケーションには共通点がいくつかあります。 Visual StudioまたはVisual Studio Codeを使用するか、CLI を使用して CMake と Ninja を呼び出すことで、両方の種類のアプリケーションを開発、ビルド、デバッグできます。

さらに、次のセキュリティ機能は、高レベルと RTApp の両方に適用されます。

アプリケーション機能

実行場所に関係なく、すべてのAzure Sphere アプリケーションは、承認されていない使用や予期しない使用を防ぐために、必要な外部サービスとインターフェイス (I/O やネットワークの要件など) を指定する必要があります。

アプリケーション機能 は、アプリケーションに必要なリソースです。 アプリケーション機能には、アプリケーションが使用する周辺機器、高度なアプリケーションが接続するインターネット ホスト、ネットワーク構成を変更するアクセス許可などがあります。 すべてのアプリケーションには、これらのリソースを識別する アプリケーション マニフェスト が必要です。

デバイスの機能

デバイス機能により、デバイス固有のアクティビティが有効になります。 デバイス機能は、Azure Sphere Security Service によって付与されます。 既定では、Azure Sphere チップにはデバイス機能がありません。 デバイス機能には、 appDevelopment デバイス機能と fieldServicing デバイス機能の 2 種類があります。

appDevelopment デバイス機能は、デバイスが信頼する署名の種類を変更します。 既定では、Azure Sphere デバイスは運用環境で署名されたイメージ パッケージを信頼しますが、SDK で署名されたイメージ パッケージは信頼しません。 その結果、SDK で署名されたイメージ パッケージを、この機能を持たないAzure Sphere デバイスにサイドロードすることはできません。 ただし、appDevelopment 機能が存在する場合、デバイスは SDK で署名されたイメージ パッケージを信頼します。 さらに、デバイスからアプリケーションを起動、停止、デバッグ、または削除できます。 要約すると、次の作業を行うには、アプリケーション開発機能がデバイス上に存在している必要があります。

  • Visual Studioまたは azsphere image-package コマンドによってビルドされたイメージ パッケージをサイドロードします。
  • イメージ パッケージの署名方法に関係なく、Azure Sphere デバイスからイメージ パッケージを開始、停止、デバッグ、または削除します。

az sphere device enable-development コマンドは、appDevelopment 機能を作成して適用し、デバイスがクラウド アプリケーションの更新プログラムを受信できないようにします。

fieldServicing 機能を使用すると、DeviceComplete 製造状態のデバイスでデバイス間通信を行うことができます。 この機能を使用すると、実稼働署名付きイメージをサイドロードできますが、削除することはできません。 アプリケーションの起動と停止はできますが、デバッグすることはできません。 Wi-Fi の構成などの日常的なメンテナンス タスクを実行することもできます。 これは、 サービス セッション中の短期的な使用を目的としており、デバイスへのアクセスが操作ごとに許可される限られた期間です。

署名と展開の要件

Azure Sphere デバイスに展開されているすべてのイメージ パッケージに署名する必要があります。 Azure Sphere SDK と az sphere image-package コマンドは、SDK 署名キーを使用してテスト用のイメージ パッケージに署名します。 Azure Sphereデバイスは、appDevelopment デバイス機能も存在する場合にのみ、このキーを信頼します。

Azure Sphere Security Service の運用環境では、クラウドにアップロードするときにイメージ パッケージに署名します。 実稼働署名付きイメージ パッケージは、サイドロードまたはクラウドから読み込むことができます。

不正なソフトウェアのインストールを防ぐために、アプリケーションは次の 2 つの方法でAzure Sphere デバイスに読み込むことができます。

  • サイドローディング。ソフトウェア開発とテスト、およびデバイスのフィールド サービスの両方に使用できます。 ソフトウェア開発とテスト用のサイドローディングには、appDevelopment デバイス機能が必要です。 現場保守用のサイドローディングには、fieldServicing デバイス機能と製品署名されたイメージ パッケージが必要です。 Visual StudioとVisual Studio Codeの両方で、開発およびデバッグ中にアプリケーションをサイドロードします。Azure CLIを使用して手動でサイドロードすることもできます。

  • Cloud update。Azure Sphere Security Service でのみ実行できます。 Azure CLIを使用して、クラウド デプロイを作成および管理します。

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

連携するアプリケーションは 、パートナー アプリケーション と見なされ、個別にサイドロードできます。 パートナーが存在するアプリケーションをサイドロードする場合、パートナー アプリケーションは既に展開されている場合、Azure Sphere デバイス上に残ります。 各アプリケーションは、プロジェクト構成でパートナーの一覧を宣言します。

CMake プロジェクト構成にパートナーを追加するには、launch.vs.json または .vscode/launch.json ファイルの configurations セクションの partnerComponents フィールドにパートナー アプリのコンポーネント ID を指定します。

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

相互に通信する高度なアプリと RTApp は、パートナーとして識別する必要があります。 Azure Sphereは、上位レベルのアプリのペアまたは RTApps のペア間の通信をサポートしていません。