高度なアプリケーションを構築する

このセクションでは、Azure Sphere の高度なアプリケーションをビルド、パッケージ化、デプロイする方法について説明します。

次の手順では、 サンプル アプリケーションHelloWorld_HighLevelApp 例として使用します。

前提 条件

開発とデバッグのためにデバイスを準備する

Azure Sphere デバイスでサンプル アプリケーションを構築したり、新しいアプリケーションを開発したりする前に、開発とサイドローディングを有効にする必要があります。 既定では、Azure Sphere デバイスは "ロック" されます。つまり、開発中のアプリケーションをコンピューターから読み込むのは許可せず、アプリケーションのデバッグも許可しません。 サイドローディング用にデバイスを準備すると、この制限は解除されます。

az sphere device enable-development コマンドは、デバッグ用のアプリケーションを受け入れるようにデバイスを構成し、デバッグ サーバーをデバイスに読み込み、クラウド アプリケーションの更新を許可しないデバイス グループにデバイスを割り当てます。 アプリケーションの開発とデバッグ中は、クラウド アプリケーションの更新によって開発中のアプリケーションが上書きされないように、デバイスをこのグループに残す必要があります。

  1. Azure Sphere デバイスがコンピューターに接続されており、コンピューターがインターネットに接続されていることを確認します。

  2. PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。

  3. 次のコマンドを入力します。

    az sphere device enable-development --resource-group <ResourceGroupName> --catalog <CatalogName> --device <DeviceIdValue>
    

    次のような出力が表示されます。

    Getting device capability configuration for application development.
    Downloading device capability configuration for device ID '<device ID>'.
    Successfully downloaded device capability configuration.
    Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'.
    Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'.
    Successfully disabled over-the-air updates.
    Enabling application development capability on attached device.
    Applying device capability configuration to device.
    Successfully applied device capability configuration to device.
    The device is rebooting.
    Installing debugging server to device.
    Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device.
    Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device.
    Application development capability enabled.
    Successfully set up device '<device ID>' for application development, and disabled over-the-air updates.
    Command completed successfully in 00:00:38.3299276.
    

az sphere device enable-development コマンドが失敗した場合は、「Azure Sphere の問題のトラブルシューティング」を参照してください。

デバッグを使用して Visual Studio でアプリケーションをビルドしてデプロイする

  1. デバイスが USB で PC に接続されていることを確認します。 [ スタートアップ項目の設定 ] メニューで、[ Azure Sphere App (HLCore)] を選択します。 ここで、Azure Sphere App は現在の高度なアプリケーションの名前であるか 、F5 キーを押します。

    リモート GDB デバッガー ボタン

  2. プロジェクトのビルドを求めるメッセージが表示されたら、[ はい] を選択します。 Visual Studio は、アプリケーションをコンパイルし、イメージ パッケージを作成し、ボードに サイドロード して、デバッグ モードで起動します。 サイドローディング とは、クラウド経由で配信されるのではなく、有線接続を介してアプリケーションが PC から直接配信されることを意味します。

    イメージ パッケージのイメージ ID は、[出力>の表示>] [出力の表示] [ビルド出力] の出力に注意してください。 イメージ ID は、 後で「チュートリアル: クラウド デプロイを作成する」で使用します

  3. 既定では、[ 出力 ] ウィンドウにデバイス出力からの出力 が表示されます。 デバッガーからメッセージを表示するには、[出力の表示元] ドロップダウン メニューから [デバッグ] を選択します。 また、プログラムの逆アセンブリ、レジスタ、またはメモリを [デバッグ>] Windows メニューから調べることもできます。

デバッグを行わずに Visual Studio でアプリケーションをビルドしてデプロイする

  1. デバイスが USB で PC に接続されていることを確認します。 [ デバッグ ] メニューの [ デバッグなしで開始 ] を選択するか、 Ctrl キーを押しながら F5 キーを押します。

  2. プロジェクトのビルドを求めるメッセージが表示されたら、[ はい] を選択します。 Visual Studio は、アプリケーションをコンパイルし、イメージ パッケージを作成し、ボードに サイドロード して起動します。 サイドローディング とは、クラウド経由で配信されるのではなく、有線接続を介してアプリケーションが PC から直接配信されることを意味します。

  3. 既定では、[ 出力 ] ウィンドウにデバイス出力からの出力 が表示されます

デバッグを使用して Visual Studio Code でアプリケーションをビルドしてデプロイする

  1. F5 キーを押してプロジェクトをビルドしてデバッグします。 プロジェクトが以前にビルドされていない場合、またはファイルが変更され、再構築が必要な場合、Visual Studio Code はデバッグを開始する前にプロジェクトをビルドします。

  2. Visual Studio Code がアプリケーションをビルドし、イメージ パッケージを作成し、ボードにデプロイしてデバッグ モードで起動するまで数秒待ちます。 途中で [ 出力 ] ウィンドウに状態の更新が表示されます。

    まず、CMake は、アプリケーションをビルドする必要があるかどうかを判断します。 その場合は、フォーカスが出力ウィンドウに移動し、CMake/Build からの出力が表示されます。

    次に、イメージ パッケージがデバイスにデプロイされると、[ 出力 ] ウィンドウに結果が表示されます。 最後に、デバッグ コンソールがフォーカスを受け取り、デバッガーの出力を表示します。

デバッグを行わずに Visual Studio Code でアプリケーションをビルドしてデプロイする

  1. デバイスが USB で PC に接続されていることを確認します。 [ 実行 ] メニューの [ デバッグなしで開始 ] を選択するか、 Ctrl キーを押しながら F5 キー を押してプロジェクトをビルドして実行します。 プロジェクトが以前にビルドされていない場合、またはファイルが変更され、再構築が必要な場合は、Visual Studio Code によってプロジェクトがビルドされます。

  2. Visual Studio Code がアプリケーションをビルドし、イメージ パッケージを作成し、ボードにデプロイして起動するまで数秒待ちます。 途中で [ 出力 ] ウィンドウに状態の更新が表示されます。

    まず、CMake は、アプリケーションをビルドする必要があるかどうかを判断します。 その場合は、フォーカスが出力ウィンドウに移動し、CMake/Build からの出力が表示されます。

    次に、イメージ パッケージをデバイスにデプロイすると、出力ウィンドウに azsphere からの出力が表示されます。 アプリは、デバイスにデプロイされた後に自動的に開始されます。

アプリケーションをビルドする

アプリケーションをビルドするには、コンピューター上で適切なコンパイル ツール、ヘッダー、およびライブラリ (総称 して sysroot と呼ばれます) を見つける必要があります。 Azure Sphere SDK には複数の sysroot が付属しているため、「アプリケーション ランタイムバージョン、sysroots、Beta API」で説明されているように、アプリケーションは異なる API セットをターゲットにすることができます。 sysroots は、 Sysroots の Azure Sphere SDK インストール フォルダーにインストールされます。

  1. ビルド プロセス中に生成されるファイルを含むディレクトリを作成または移動します。

  2. アプリケーションが別のアプリケーションに依存している場合は、アプリケーションを app_manifest.md ファイルの パートナーとしてマーク します。

  3. アプリケーションの CMakeLists.txt ファイルを追加または更新して、必要に応じて Azure Sphere CMake 関数 を呼び出します。

  4. プロジェクト ビルド ディレクトリから、コマンド プロンプトで、次のパラメーターを指定して 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) は読みやすくするために使用できますが、必須ではありません。

    次の例では、Hello Worldの高レベル アプリの CMake コマンドを示します。

    Windows コマンド プロンプト

    cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    

    Windows PowerShell

    cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    
  5. 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

アプリケーションをデプロイする

アプリケーションをサイドロードし、デバッグ サーバーが存在することを確認できるように、デバイスに appDevelopment 機能があることを確認します。 必要に応じて、 コマンドを az sphere device enable-development 使用します。

  1. デバイスが既に 1 つ以上のアプリケーションを実行している場合は、それらを削除します。

    az sphere device sideload delete
    

    このコマンドは、デバイス上のすべてのアプリケーションを削除します。 高度なアプリのパートナーである RTApp を既にデプロイしている場合は、 パラメーターを --component-id 使用して、削除するアプリケーションを指定します。 アプリケーション のコンポーネント ID は 、app_manifest.json ファイルにあります。

  2. az sphere device sideload deploy コマンドを実行し、イメージ パッケージを指定して、イメージ パッケージをデバイスに読み込みます。 例えば:

    az sphere device sideload deploy --image-package C:\Users\LocalSamples\HelloWorld\HelloWorld_HighLevelApp\out\ARM-Debug\HelloWorld_HighLevelApp.imagepackage
    

    アプリケーションの実行を開始する必要があります。

と コマンドを使用して、後でアプリケーションをaz sphere device app stop --component-id <component-ID>az sphere device app start --component-id <component ID>停止して再起動できます。