チュートリアル: 高度なアプリケーションを構築する

重要

これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。

高度なアプリケーションは、Azure Sphere OS 上で実行され、Azure Sphere アプリケーション ライブラリを使用し、インターネットやクラウドベースのサービスと通信できます。 高度なアプリケーションの基本情報については、「 Azure Sphere アプリケーションの概要 を参照してください。

このチュートリアルでは、次の作業を行う方法について説明します。

  • 開発とデバッグのためにデバイスを準備する
  • 高度なアプリケーションのビルド、実行、デバッグ

前提条件

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

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

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

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

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

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

    azsphere device enable-development
    

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

    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.
    

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

Visual Studio Code を使用して高度なアプリケーションをビルドして実行する

このチュートリアルでは、Visual Studio Code 用 Azure Sphere 拡張機能の一部である Azure Sphere Blink テンプレートを使用します。 Blink テンプレートは LED を点滅させ、Azure Sphere デバイスとツールが正しくインストールおよび設定されていることを確認できます。

  1. Visual Studio Code を起動します。 View>コマンド パレットを選択し、「Azure Sphere: Generate New Project」と入力します。

    Visual Studio コードのコマンド バー

  2. [テンプレート] メニューから [点滅] を選択します。

    テンプレート名を含むポップアップ メニュー

  3. その後、Visual Studio Code にエクスプローラー ウィンドウが表示されます。 Blink アプリケーションを配置するフォルダーに移動します。 Visual Studio Code によって、選択した場所に Blink フォルダーが作成され、Blink アプリケーションのビルド ファイルが生成されます。 CMake からのメッセージが表示されます。

  4. CMakeLists.txt ファイルを開き、TARGET_DIRECTORY設定を変更して、使用しているハードウェアの定義を含むフォルダーを指定します。 既定では、TARGET_DIRECTORYは、Seeed Azure Sphere MT3620 開発キットと一致する HardwareDefinitions/mt3620_rbd を指定します。

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    テンプレートには、いくつかのハードウェア定義が用意されています。 たとえば、SEEED MT3620 Mini Dev Board を使用している場合は、代わりに HardwareDefinitions/seeed_mt3620_mdb を指定します。

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

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

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

    次に、イメージ パッケージをデバイスにデプロイする Azure Sphere からの出力が出力ウィンドウに表示されます。 最後に、デバッグ コンソールにフォーカスが移り、gdb 出力が表示されます。

    ヒント

    デプロイの作成時に必要になるイメージ パッケージの場所をメモしておきます。 Output ウィンドウに "<path> に書き込まれたビルド ファイル" などのメッセージが表示されます。ここで、<path> は Blink アプリケーションのビルド フォルダーへの完全なパスであり、通常は "out\ARM-Debug" または "out/ARM-Debug" で終わるパスです。

  7. 少し待つと、LED が点滅します。

  8. main.c 内のどこかにブレークポイントを設定して、アプリケーションをステップ実行すると、Azure Sphere 用の Visual Studio Code デバッグ機能を調べることができます。

Visual Studio を使用して高度なアプリケーションをビルドして実行する

このチュートリアルでは、Visual Studio 用 Azure Sphere 拡張機能の一部である Azure Sphere Blink テンプレートを使用します。 Blink テンプレートは LED を点滅させ、Azure Sphere デバイスとツールが正しくインストールおよび設定されていることを確認できます。

  1. Visual Studio にまだ慣れていない場合は、クイック スタートガイド付きのツアーなどの記事で、ナビゲーションと使用方法について確認してください。

  2. Visual Studio を開き、 [新しいプロジェクトの作成] を選択します。 [検索] ボックスに「azure sphere」と入力して、Azure Sphere テンプレートの一覧を取得します。 一覧から [Azure Sphere Blink] を選択します。

  3. プロジェクトの名前と場所を入力し、 Create を選択します。

  4. CMakeLists.txt ファイルを開き、TARGET_DIRECTORY設定を変更して、使用しているハードウェアの定義を含むフォルダーを指定します。 既定では、TARGET_DIRECTORYは、Seeed Azure Sphere MT3620 開発キットと一致する HardwareDefinitions/mt3620_rbd を指定します。

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    テンプレートには、いくつかのハードウェア定義が用意されています。 たとえば、SEEED MT3620 Mini Dev Board を使用している場合は、代わりに HardwareDefinitions/seeed_mt3620_mdb を指定します。

  5. Visual Studio で View>Output を選択して、 Output ペインを表示します。

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

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

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

    ヒント

    デプロイの作成時に必要になるイメージ パッケージの場所をメモしておきます。 View>Output>Show output from: Build の出力に"Output file is at: <path>" などのメッセージが表示されます。ここで、<path> は Blink アプリケーションのビルド フォルダーへの完全なパスであり、通常は "out/ARM-Debug" になります。

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

  9. プログラムを実行すると、LED が点滅します。

サンプル アプリケーションのダウンロード

HelloWorld アプリケーションは次のようにダウンロードできます。

  1. ブラウザーを Microsoft Samples Browser をポイントします。
  2. 検索ボックスに「Azure Sphere」と入力します。
  3. 検索結果から Azure Sphere - Hello World を選択します。
  4. [ZIP ダウンロード] を選択
  5. ダウンロードしたファイルを開き、ローカル ディレクトリに展開します。

サンプルをビルドする

HelloWorld_HighLevelApp サンプル アプリケーションのビルドおよび .imagepackage ファイルを作成するには、次の手順に従います。

  1. 必要に応じて、ハードウェアを対象とするようにサンプルを更新します。 既定では、サンプルは、Seeed Studios の MT3620 開発キットなど、MT3620 リファレンス ボード 設計 (RDB) に従うハードウェアを対象としています。 サンプル アプリケーションの追加のターゲット ハードウェア定義は、Azure Sphere Samples リポジトリの HardwareDefinitions ディレクトリで入手できます。 たとえば、Avnet MT3620 Starter Kit のハードウェア定義ファイルは HardwareDefinitions/avnet_mt3620_sk サブディレクトリにあります。

    • CMakeLists.txtを開き、 azure_target_hardware_definition 関数のTARGET_DIRECTORY パラメーターをハードウェアのサブディレクトリを指すように更新します。 次に例を示します。

      azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
      
  2. PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。 プロジェクトビルドディレクトリに移動します。

  3. プロジェクト ビルド ディレクトリから、コマンド プロンプトで、次のパラメーターを指定して 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 パラメーターはスペースで区切られます。 行継続文字 (Windows コマンド ラインの場合は ^、Linux コマンド ラインの場合は \、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"
    
  4. Ninja を実行してアプリケーションをビルドし、イメージ パッケージ ファイルを作成します。

    ninja -C out/ARM-Debug
    

    Ninja は、結果のアプリケーション ファイルと .imagepackage ファイルを指定されたディレクトリに配置します。

    次のコマンドを使用して、CMake から Ninja を呼び出すこともできます。

    cmake --build out/<binary-dir>
    

    <binary-dir> CMake キャッシュを含むバイナリ ディレクトリに設定します。 たとえば、Azure Sphere サンプルで CMake を実行すると、ビルド コマンドが cmake --build out/ARM-Debugされます。

    特に CMake コマンドを変更した後にトラブルシューティングを行う場合は、ビルド全体を削除してから、やり直してください。

サンプルを実行する

  1. お使いのデバイスが既にアプリケーションを実行している場合、次のアプリケーションを削除します。

    azsphere device sideload delete
    
  2. 以前に作成したビルド ファイルと .imagepackage ファイルが格納されているディレクトリに移動します。

  3. azsphere device sideload deploy コマンドを実行し、イメージ パッケージを指定して、イメージ パッケージをデバイスに読み込みます。 次に例を示します。

    azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    このコマンドは、イメージ パッケージを読み込み、アプリケーションを起動します。 LED が点滅するのが見えるはずです。

    ヒント

    イメージ パッケージのパスに注意してください。 イメージ パッケージは後のデプロイ クイック スタートで使用します。

サンプルをデバッグする

  1. 以前に作成したビルド ファイルと .imagepackage ファイルが格納されているディレクトリに移動します。

  2. コンポーネント ID がまだない場合は、次の情報を取得します。

    azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    

  1. アプリケーションが実行されている場合は、アプリケーションを停止し、 --debug-mode オプションを使用して再起動します。

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    

次のような結果が表示されます。

 <ComponentId>
 App state   : debugging
 GDB port    : 2345
 Output port : 2342
 Core        : High-level
  1. ターミナル クライアントを使用して、プロセスから出力ストリームを読み取る Telnet または未加工の TCP 接続を確立します。 IP アドレスに 192.168.35.2、ポートに 2342 を指定します。

  2. PowerShell または Windows の標準コマンド プロンプト、または Linux 上のコマンド シェルを使用してコマンド ライン インターフェイスを開き、ビルドから .out アプリ バイナリをパラメーターとして渡します。 これで、完全なソース コードのデバッグが有効になります。

    Windows コマンド プロンプト

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Note

    Azure Sphere SDK には複数の sysroots が付属しているため、アプリケーションは、 Application ランタイム バージョン、sysroots、および Beta API で説明されているように、異なる API セットをターゲットにすることができます。 sysroot は、Azure Sphere SDK インストール フォルダーの Sysroots の下にインストールされます。

  3. リモート デバッグ ターゲットをポート 2345 の IP アドレス 192.168.35.2 に設定します。

    target remote 192.168.35.2:2345

  4. 選択した他の gdb コマンドを実行します。 たとえば、次のコマンドは、エントリ時にブレークポイントを main() に設定し、ブレークポイントの後でそれぞれ実行を続行します。

    break main
    
    c
    

    gdbでのデバッグの詳細については、「GDB: GNU プロジェクト デバッガーまたはその他の多数のソースの 1 つ」を参照してください。

次のステップ

Azure Sphere デバイスで実行する高度なアプリケーションを構築しました。 今すぐ変更することもできます。 ハードウェア定義 ハードウェア定義 JSON ファイルを編集し、関連するヘッダー ファイルを生成し直す方法について説明します。

次に、クラウドから高度なアプリケーションをデプロイする方法について説明します。

関連項目

Azure Sphere ギャラリー、インスピレーションを得た、管理されていない、再利用可能な Azure Sphere のスクリプト、ユーティリティ、関数のコレクションをご覧ください。