Azure Sphere アプリケーションの概要
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
Azure Sphere デバイスでは、次の 2 種類のアプリケーションを実行できます。
- 高度なアプリケーションは、Azure Sphere OS でコンテナー化され、実行されます
- リアルタイム対応アプリケーション (RTApps) は、ベア メタル上で、あるいはリアルタイム コアのリアルタイム オペレーティング システム (RTOS) によって実行されます
高度なアプリケーションはあらゆる Azure Sphere デバイスで必須です。一方、RTApps は任意です。
高度なアプリケーション
すべての Azure Sphere デバイスには、Azure Sphere OS 上で実行され、アプリケーション ライブラリを使用できる高度なアプリケーションがあります。 高レベル アプリケーションでは、次のことが可能です。
汎用入出力 (GPIO) ピン、ユニバーサル非同期送受信機 (UART)、その他のインターフェイスなど、Azure Sphere の周辺機器を構成して対話します
RTApp と通信します
インターネットやクラウドベースのサービスと通信します
証明書ベースの認証を使用して他のデバイスやサービスとの信頼関係を仲介します
高度なアプリケーションは、コンテナー内において、Normal World ユーザー モードで実行されます。詳細は、「What is Azure Sphere?」(Azure Sphere とは) にあります。 アプリケーション コンテナーでは、POSIX 環境のサブセットと、Azure Sphere OS に固有のアプリケーション ライブラリ (Applibs) のセットに対応しています。 高度なアプリケーションに利用できるライブラリと関数は、プラットフォームの安全を確保するように制限されており、簡単に更新できます。 アプリケーションでは、Microsoft から提供されるライブラリとランタイム サービスにのみアクセスできます。直接のファイル I/O やシェル アクセスのどちらも利用できないなどの制約があります。 開発環境 では、基本 API セットについて説明し、デバイス固有の機能をサポートする Azure Sphere アプリケーション ライブラリについて説明します。
高度なアプリケーションは継続的に実行され、停止またはエラーが発生した場合は自動的に再起動されることが想定されています。
高度なアプリケーションを作成する 機能の詳細について説明します。
リアルタイム対応アプリケーション
Azure Sphere デバイスには、その高度なアプリケーションに加え、1 つまたは複数のリアルタイム対応アプリケーションも与えることができます。 RTApp でできること:
- GPIO ピンや UART など、Azure Sphere MCU に統合されている周辺機器を構成し、やりとりする
- 高度なアプリケーションと通信する
RTApps は、ベアメタル上で、あるいはリアルタイム オペレーティング システム (RTOS) によって実行できます。 GitHub の Azure Sphere サンプル リポジトリには、ベア メタル HelloWorld サンプルのほか、高度なアプリと RTApp 間のコア間通信を示すサンプルが含まれています。 GitHub の Azure サンプル リポジトリには、Azure RTOS で Azure Sphere を使用する方法を示すサンプルが含まれています。
MT3620 チップ上の M4 リアルタイム コアを対象とする RTApp 用の追加ドライバーとサンプルは、Azure Sphere パートナーである MediaTek および Codethink から GitHub 上に提供されています。
各 RTApp は特定の I/O コアで隔離された状態で実行され、高度なアプリケーションとのみ通信できます。インターネット、Azure Sphere applibs、Azure Sphere OS のその他の機能は使用できません。
リアルタイム対応アプリケーションを作成 RTApps の機能と開発プロセスの詳細を提供します。
すべてのアプリケーションに共通の機能
高度なアプリと RTApps という大きな違いにもかかわらず、すべての Azure Sphere アプリケーションで共通していることがいくつかあります。 CLI を使用して CMake と Ninja を呼び出すか、Visual Studio または Visual Studio Code を使用して、両方の種類のアプリケーションを開発、ビルド、デバッグできます。
また、次のセキュリティ機能が高度と RTApps の両方に適用されます。
アプリケーション機能
実行される場所に関係なく、すべての Azure Sphere アプリケーションでは、未承認の使用や予期しない使用を防ぐために、必要な外部サービスおよびインターフェイス (I/O やネットワークの要件など) を指定する必要があります。
"アプリケーション機能" はアプリケーションに必要なリソースです。 アプリケーション機能には、アプリケーションに使用される周辺機器、高度なアプリケーションの接続先となるインターネット ホスト、ネットワーク構成を変更するアクセス許可などが含まれます。 すべてのアプリケーションには、これらのリソースを識別する アプリケーション マニフェスト が必要です。
デバイスの機能
デバイス機能によりデバイス固有のアクティビティが可能になります。 デバイス機能は、Azure Sphere Security Service によって付与されます。 既定では、Azure Sphere チップにはデバイス機能はありません。 デバイス機能には、 appDevelopment デバイス機能と fieldServicing デバイス機能の 2 種類があります。
appDevelopment デバイス機能により、デバイスが信頼する署名の種類が変更されます。 既定では、Azure Sphere デバイスは、運用環境で署名されたイメージ パッケージは信頼しますが、SDK で署名されたイメージ パッケージは信頼しません。 その結果、この機能を持たない Azure Sphere デバイスには、SDK で署名されたイメージ パッケージをサイドローディングできません。 一方、appDevelopment 機能が存在する場合は、デバイスは SDK で署名されたイメージ パッケージを信頼します。 さらに、デバイスからアプリケーションを開始、停止、デバッグ、削除できます。 まとめると、次のことを行うには、デバイスにアプリケーション開発機能が存在する必要があります。
- Visual Studio または azsphere image-package コマンドによってビルドされたイメージ パッケージをサイドローディングする。
- イメージ パッケージの署名方法に関係なく、Azure Sphere デバイスからイメージ パッケージを開始、停止、デバッグ、または削除する。
azsphere device enable-development コマンドを使用すると、appDevelopment 機能が作成されて適用され、デバイスはクラウド アプリケーション更新プログラムを受信しなくなります。
fieldServicing 機能を使用すると、DeviceComplete 製造状態のデバイスでデバイス間通信を行うことができます。 この機能を使用すると、実稼働署名付きイメージをサイドロードできますが、削除することはできません。 アプリケーションの起動と停止はできますが、デバッグすることはできません。 Wi-Fi の構成などの日常的なメンテナンス タスクを実行することもできます。 これは、 予約セッション中の短期使用を目的としていますデバイスへのアクセスが操作ごとに許可される限られた期間です。
署名およびデプロイ要件
Azure Sphere デバイスに展開されるすべてのイメージ パッケージに署名する必要があります。 Azure Sphere SDK と azsphere image-package コマンドでは、SDK 署名キーを使用してテスト用にイメージ パッケージに署名します。 Azure Sphere デバイスでは、appDevelopment デバイス機能も存在する場合にのみ、このキーが信頼されます。
クラウドにアップロードされたイメージ パッケージは、Azure Sphere Security Service によって運用環境で署名されます。 運用環境で署名されたイメージ パッケージは、クラウドからサイドローディングまたは読み込みが可能です。
悪意のあるソフトウェアのインストールを防ぐため、アプリケーションは Azure Sphere デバイスに次の 2 つの方法でのみ読み込むことができます。
サイドローディング。ソフトウェア開発とテスト、およびデバイスのフィールド サービスの両方に使用できます。 ソフトウェア開発とテスト用のサイドローディングには、appDevelopment デバイス機能が必要です。 フィールド サービスのサイドローディングには、fieldServicing デバイス機能と実稼働署名付きイメージ パッケージが必要です。 開発とデバッグ中に Visual Studio と Visual Studio Code の両方でアプリケーションをサイドロードします。 Azure Sphere CLI を使用して手動でサイドロードすることもできます。
クラウド更新。Azure Sphere Security Service によってのみ実行できます。 Azure Sphere CLI を使用して、クラウド デプロイを作成および管理します。
パートナー アプリケーション
連動するアプリケーションはパートナー アプリケーションと見なし、個別にサイドローディングできます。 パートナーを持つアプリケーションをサイドローディングするとき、パートナー アプリケーションが既にデプロイされている場合、Azure Sphere デバイスに残ります。 各アプリケーションでは、そのプロジェクト構成内にパートナーの一覧が宣言されます。
CMake プロジェクト構成にパートナーを追加するには、launch.vs.json または .vscode/launch.json ファイルの configurations セクションの partnerComponents フィールドに、パートナー アプリのコンポーネント ID を指定します。
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
相互に通信する高度なアプリと RTApp は、パートナーとして識別する必要があります。 Azure Sphere では、高度なアプリのペアまたは RTApps のペア間の通信はサポートされていません。