パートナー アプリケーションを構築してデプロイする
このセクションでは、Azure Sphere パートナー アプリケーションをビルド、パッケージ化、デプロイする方法について説明します。
これらの手順では、 例として IntercoreComms サンプル アプリケーションを使用します。
前提 条件
- Azure Sphere デバイスをコンピューターに接続する
- Azure Sphere をインストールする
- Visual Studio Code または CLI を使用している場合は、GNU Arm Embedded ツールチェーンをインストールします。
- 専用 UART からの出力を表示するようにハードウェアを設定します (まだ表示していない場合)
開発とデバッグを有効にする
Azure Sphere デバイスでサンプル アプリケーションを構築したり、新しいアプリケーションを開発したりする前に、開発とデバッグを有効にする必要があります。 既定では、Azure Sphere デバイスは "ロック" されます。つまり、開発中のアプリケーションを PC から読み込むのは許可せず、アプリケーションのデバッグも許可しません。 デバッグ用にデバイスを準備すると、この制限が解除され、デバッグに必要なソフトウェアが読み込まれて、デバイス機能 のロックが解除されます。
リアルタイム コアでデバッグするには、 az sphere device enable-development コマンドを使用します。 このコマンドは、デバッグのために PC からアプリケーションを受け入れるようにデバイスを構成し、クラウド アプリケーションの更新を許可しない開発デバイス グループにデバイスを割り当てます。 アプリケーションの開発とデバッグ中は、クラウド アプリケーションの更新によって開発中のアプリケーションが上書きされないように、デバイスをこのグループに残す必要があります。
Windows では、デバッグ サーバーとコアの --enable-rt-core-debugging
種類ごとに必要なドライバーをデバイスに読み込むパラメーターを追加する必要があります。
まだログインしていない場合は、Azure Sphere にログインします。
az login
PowerShell または Windows コマンド プロンプトを使用して、管理者特権でコマンド ライン インターフェイスを開きます。 パラメーターには
--enable-rt-core-debugging
、デバッガー用の USB ドライバーがインストールされるため、管理者特権が必要です。次のコマンドを入力します。
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
管理者特権が不要になったため、コマンドの完了後にウィンドウを閉じます。 ベスト プラクティスとして、タスクを実行できる最小限の特権を常に使用する必要があります。
az sphere device enable-development コマンドが失敗した場合は、「Azure Sphere の問題のトラブルシューティング」を参照してください。
開発とデバッグを有効にする
Azure Sphere デバイスでサンプル アプリケーションを構築したり、新しいアプリケーションを開発したりする前に、開発とデバッグを有効にする必要があります。 既定では、Azure Sphere デバイスは "ロック" されます。つまり、開発中のアプリケーションを PC から読み込むのは許可せず、アプリケーションのデバッグも許可しません。 デバイスをデバッグ用に準備すると、この制限が解除され、「デバイスの機能と通信」で説明されているように、デバッグに必要なソフトウェア が読み込まれます。
リアルタイム コアでデバッグするには、 az sphere device enable-development コマンドを使用します。 このコマンドは、デバッグのために PC からアプリケーションを受け入れるようにデバイスを構成し、クラウド アプリケーションの更新を許可しない開発デバイス グループにデバイスを割り当てます。 アプリケーションの開発とデバッグ中は、クラウド アプリケーションの更新によって開発中のアプリケーションが上書きされないように、デバイスをこのグループに残す必要があります。
Windows では、デバッグ サーバーとコアの --enable-rt-core-debugging
種類ごとに必要なドライバーをデバイスに読み込むパラメーターを追加する必要があります。
まだログインしていない場合は、Azure にログインします。
az login
PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、管理者特権でコマンド ライン インターフェイスを開きます。 パラメーターには
--enable-rt-core-debugging
、デバッガー用の USB ドライバーがインストールされるため、管理者特権が必要です。次のコマンドを入力します。
az sphere device enable-development --enable-rt-core-debugging
管理者特権が不要になったため、コマンドの完了後にウィンドウを閉じます。 ベスト プラクティスとして、タスクを実行できる最小限の特権を常に使用する必要があります。
az sphere device enable-development コマンドが次のエラー メッセージで失敗した場合は、「Azure Sphere の問題のトラブルシューティング」を参照してください。
error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.
Visual Studio を使用してパートナー アプリを構築する
デバイスが USB で PC に接続されていることを確認します。 [スタートアップ項目の設定] メニューで、[Azure Sphere App (すべてのコア)] を選択します。ここで、Azure Sphere App は最上位のプロジェクトの名前であるか、F5 キーを押します。
プロジェクトのビルドを求めるメッセージが表示されたら、[ はい] を選択します。 Visual Studio は、パートナー アプリケーションをコンパイルし、イメージ パッケージを作成し、ボードに サイドロード して、デバッグ モードで起動します。 サイドローディング とは、アプリケーションがクラウド経由で配信されるのではなく、有線接続を介して PC から直接配信されることを意味します。
[出力>の表示>] [出力の表示元: ビルド出力] のパスに注意してください。これは、PC 上の出力イメージ パッケージの場所を示します。 デプロイを作成する準備ができたら、イメージ パッケージへのパスを把握する必要があります。
既定では、[ 出力 ] ウィンドウにデバイス出力からの出力 が表示されます。 デバッガーからメッセージを表示するには、[出力の表示元] ドロップダウン メニューから [デバッグ] を選択します。 また、プログラムの逆アセンブリ、レジスタ、またはメモリを [デバッグ>] Windows メニューから調べることもできます。
Visual Studio Code を使用してパートナー アプリを構築する
パートナー アプリケーションを含むフォルダーを開きます。 Visual Studio Code は、ワークスペース ファイルを検出し、ワークスペースを開くかどうかを確認します。 [ワークスペースを開く] を選択して、リアルタイム アプリケーションと高レベル アプリケーションの両方を一度に開きます。
2 つの CMakeLists.txt ファイルのいずれかを右クリックし、[ Build All Projects]\(すべてのプロジェクトのビルド\) を選択します。
Visual Studio Code アクティビティ バーの [実行] アイコンをクリックします。
画面の左側のウィンドウの上部に表示されるプルダウン メニューで、[ Azure Sphere Apps (gdb)(ワークスペース) の起動] を選択します。
F5 キーを押してプロジェクトをビルドしてデバッグします。 プロジェクトが以前にビルドされていない場合、またはファイルが変更され、再構築が必要な場合、Visual Studio Code はデバッグを開始する前にプロジェクトをビルドします。
Visual Studio Code がアプリケーションをビルドし、イメージ パッケージを作成し、ボードにデプロイし、デバッグ モードで起動するまで数秒待ちます。 途中で [ 出力 ] ウィンドウに状態の更新が表示されます。
まず、CMake は、アプリケーションをビルドする必要があるかどうかを判断します。 その場合は、フォーカスが出力ウィンドウに移動し、CMake/Build からの出力が表示されます。
次に、イメージ パッケージをデバイスにデプロイすると、出力ウィンドウに出力が表示されます。 最後に、デバッグ コンソールはフォーカスを受け取り、gdb 出力を表示します。
アプリケーションをコンパイルしてビルドする
CLI を使用してアプリケーションをビルドするには、コンピューターで適切なコンパイル ツール、ヘッダー、ライブラリ (総称 して sysroot と呼ばれる) を見つける必要があります。 Azure Sphere SDK には複数の sysroot が付属しているため、「アプリケーション ランタイム バージョン、sysroots、Beta API」で説明されているように、アプリケーションが異なる API セットをターゲットにすることができます。 sysroots は、 Sysroots の Azure Sphere SDK インストール フォルダーにインストールされます。
CLI を使用してビルドする場合は、まずリアルタイム対応アプリケーションをビルドしてデプロイしてから、高レベルのアプリケーションをビルドしてデプロイします。
リアルタイム対応アプリケーションを構築してデプロイする
リアルタイム対応アプリケーションを含むフォルダーに移動します。
app_manifest.json ファイルを開き、上位レベルのアプリのコンポーネント ID が AllowedApplicationConnections 機能に表示されていることを確認します。
PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。 プロジェクトビルドディレクトリに移動します。
プロジェクト ビルド ディレクトリから、コマンド プロンプトで、次のパラメーターを指定して CMake を実行します。
cmake --preset <preset-name> <source-path>
--preset <preset-name>
CMakePresets.jsonで定義されているビルド構成プリセット名。
--build <cmake-path>
CMake キャッシュを含むバイナリ ディレクトリ。 たとえば、Azure Sphere サンプルで CMake を実行する場合、ビルド コマンドは になります
cmake --build out/ARM-Debug
。<source-path>
サンプル アプリケーションのソース ファイルを含むディレクトリのパス。 この例では、Azure Sphere サンプル リポジトリが AzSphere というディレクトリにダウンロードされました。
CMake パラメーターはスペースで区切られます。 行継続文字 (^ for Windows コマンド ライン、\ for Linux コマンド ライン、または ' for PowerShell) は読みやすくするために使用できますが、必須ではありません。
次の例は、IntercoreComms RTApp の CMake コマンドを示しています。
Windows コマンド プロンプト
cmake ^ --preset "ARM-Debug" ^ "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
Windows PowerShell
cmake ` --preset "ARM-Debug" ` "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
プロジェクト ビルド ディレクトリから、コマンド プロンプトで Ninja を実行してアプリケーションをビルドし、イメージ パッケージ ファイルを作成します。
ninja -C out/ARM-Debug
Ninja は、結果のアプリケーションファイルと .imagepackage ファイルを指定されたディレクトリに配置します。
次のコマンドを使用して、CMake を介して Ninja を呼び出すこともできます。
cmake --build out/<binary-dir>
CMake キャッシュを含むバイナリ ディレクトリに設定
<binary-dir>
します。 たとえば、Azure Sphere サンプルで CMake を実行する場合、ビルド コマンドは になりますcmake --build out/ARM-Debug
。特に CMake コマンドに変更を加えてからトラブルシューティングを行う場合は、ビルド全体を削除してやり直してください。
デバイスに既にデプロイされているアプリケーションを削除します。
az sphere device sideload delete
プロジェクト ビルド ディレクトリから、コマンド プロンプトで、Ninja によって作成されたイメージ パッケージを読み込みます。
az sphere device sideload deploy --image-package <path-to-imagepackage>
アプリケーションが読み込まれた直後に、アプリケーションの実行が開始されます。
イメージのコンポーネント ID を取得します。
az sphere image-package show --image-package <path-to-imagepackage>
コマンドは、イメージ パッケージのすべてのメタデータを返します。 アプリケーションのコンポーネント ID は、[アプリケーション イメージの種類] の [ID] セクションに表示されます。 例えば:
... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...
高度なアプリケーションをビルドしてデプロイする
高度なアプリケーションを含むフォルダーに移動します。
app_manifest.json ファイルを開き、RTApp のコンポーネント ID が AllowedApplicationConnections 機能に表示されていることを確認します。
PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。 プロジェクトビルドディレクトリに移動します。
プロジェクト ビルド ディレクトリから、コマンド プロンプトで、次のパラメーターを指定して CMake を実行します。
cmake --preset <preset-name> <source-path>
--preset <preset-name>
CMakePresets.jsonで定義されているビルド構成プリセット名。
--build <cmake-path>
CMake キャッシュを含むバイナリ ディレクトリ。 たとえば、Azure Sphere サンプルで CMake を実行する場合、ビルド コマンドは になります
cmake --build out/ARM-Debug
。<source-path>
サンプル アプリケーションのソース ファイルを含むディレクトリのパス。 この例では、Azure Sphere サンプル リポジトリが AzSphere というディレクトリにダウンロードされました。
CMake パラメーターはスペースで区切られます。 行継続文字 (^ for Windows コマンド ライン、\ for Linux コマンド ライン、または ' for PowerShell) は読みやすくするために使用できますが、必須ではありません。
次の例は、IntercoreComms の高レベル アプリケーションの CMake コマンドを示しています。
プロジェクト ビルド ディレクトリから、コマンド プロンプトで Ninja を実行してアプリケーションをビルドし、イメージ パッケージ ファイルを作成します。
ninja -C out/ARM-Debug
Ninja は、結果のアプリケーションファイルと .imagepackage ファイルを指定されたディレクトリに配置します。
次のコマンドを使用して、CMake を介して Ninja を呼び出すこともできます。
cmake --build out/<binary-dir>
CMake キャッシュを含むバイナリ ディレクトリに設定
<binary-dir>
します。 たとえば、Azure Sphere サンプルで CMake を実行する場合、ビルド コマンドは になりますcmake --build out/ARM-Debug
。特に CMake コマンドに変更を加えてからトラブルシューティングを行う場合は、ビルド全体を削除してやり直してください。
プロジェクト ビルド ディレクトリから、コマンド プロンプトで、Ninja によって作成されたイメージ パッケージを読み込みます。
az sphere device sideload deploy --image-package <package-name>
アプリケーションが読み込まれた直後に、アプリケーションの実行が開始されます。
イメージのコンポーネント ID を取得します。
az sphere image-package show --image-package <path-to-imagepackage>
コマンドは、イメージ パッケージのすべてのメタデータを返します。 アプリケーションのコンポーネント ID は、[アプリケーション イメージの種類] の [ID] セクションに表示されます。 例えば:
"ComponentId": "<component-ID>", ... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...