チュートリアル: 高度なアプリケーションを構築する
高レベルのアプリケーションは、Azure Sphere OS 上で実行され、Azure Sphere アプリケーション ライブラリを使用し、インターネットやクラウドベースのサービスと通信できます。 高度なアプリケーションに関する基本的な情報については、「 Azure Sphere アプリケーションの概要 」を参照してください。
このチュートリアルでは、次の方法について説明します。
- 開発とデバッグのためにデバイスを準備する
- 高度なアプリケーションをビルド、実行、デバッグする
前提 条件
- Windows または Linux 用の Visual Studio Code をインストールします。
- Windows または Linux 用の CMake と Ninja をインストールします。
- Windows または Linux 用の SDK をインストールします。
- カタログを選択し、デバイスを要求します。
- ネットワークを構成し、デバイス OS を更新します。
開発とデバッグのためにデバイスを準備する
Azure Sphere デバイスでサンプル アプリケーションを構築したり、新しいアプリケーションを開発したりする前に、開発とサイドローディングを有効にする必要があります。 既定では、Azure Sphere デバイスは "ロック" されます。つまり、開発中のアプリケーションをコンピューターから読み込むのは許可せず、アプリケーションのデバッグも許可しません。 サイドローディング用にデバイスを準備すると、この制限は解除されます。
az sphere device enable-development コマンドは、デバッグ用のアプリケーションを受け入れるようにデバイスを構成し、デバッグ サーバーをデバイスに読み込み、クラウド アプリケーションの更新を許可しないデバイス グループにデバイスを割り当てます。 アプリケーションの開発とデバッグ中は、クラウド アプリケーションの更新によって開発中のアプリケーションが上書きされないように、デバイスをこのグループに残す必要があります。
Azure Sphere デバイスがコンピューターに接続されており、コンピューターがインターネットに接続されていることを確認します。
PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。
次のコマンドを入力します。
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 Code を使用して高度なアプリケーションをビルドして実行する
このチュートリアルでは、Visual Studio Code 用 Azure Sphere Extension の一部である Azure Sphere Blink テンプレートを使用します。 Blink テンプレートは LED を点滅させ、Azure Sphere デバイスとツールがインストールされ、正しく設定されていることを確認できます。
Visual Studio Code を起動します。 [コマンドパレットの表示>] を選択し、「Azure Sphere: Generate New Project」と入力します。
[テンプレート] メニューから [ 点滅 ] を選択します。
Visual Studio Code では、エクスプローラー ウィンドウが表示されます。 Blink アプリケーションを配置するフォルダーに移動します。 Visual Studio Code は、選択した場所に Blink フォルダーを作成し、Blink アプリケーションのビルド ファイルを生成します。 CMake からのメッセージが表示されます。
CMakeLists.txt ファイルを開き、TARGET_DIRECTORY設定を変更して、使用しているハードウェアの定義を含むフォルダーを指定します。 既定では、TARGET_DIRECTORYは HardwareDefinitions/mt3620_rbdを指定します。これは、Seeed Azure Sphere MT3620 開発キットと一致します。
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 を指定します。
F5 キーを押してプロジェクトをビルドしてデバッグします。 プロジェクトが以前にビルドされていない場合、またはファイルが変更され、再構築が必要な場合、Visual Studio Code はデバッグを開始する前にプロジェクトをビルドします。
Visual Studio Code がアプリケーションをビルドし、イメージ パッケージを作成し、ボードにデプロイしてデバッグ モードで起動するまで数秒待ちます。 途中で [ 出力 ] ウィンドウに状態の更新が表示されます。
まず、CMake は、アプリケーションをビルドする必要があるかどうかを判断します。 その場合は、フォーカスが出力ウィンドウに移動し、CMake/Build からの出力が表示されます。
次に、イメージ パッケージをデバイスにデプロイすると、出力ウィンドウに出力が表示されます。 最後に、デバッグ コンソールはフォーカスを受け取り、gdb 出力を表示します。
ヒント
デプロイを作成するときに必要なイメージ パッケージの場所を書き留めます。 [出力] ウィンドウに "パス>に<書き込まれたビルド ファイル" などのメッセージが表示されます。ここで<、path> は Blink アプリケーションのビルド フォルダーへの完全なパスであり、通常は "out\ARM-Debug" または "out/ARM-Debug" で終わるパスです。
しばらくすると、LED の点滅が表示されます。
メイン.c のどこかにブレークポイントを設定し、アプリケーションをステップ実行して、Azure Sphere の Visual Studio Code デバッグ機能を調べることができます。
Visual Studio を使用して高度なアプリケーションをビルドして実行する
このチュートリアルでは、Visual Studio 用 Azure Sphere 拡張機能の一部である Azure Sphere Blink テンプレートを使用します。 Blink テンプレートは LED を点滅させ、Azure Sphere デバイスとツールがインストールされ、正しく設定されていることを確認できます。
Visual Studio を初めて使用する場合は、 クイック スタート または ガイド付きツアー を検討して、ナビゲーションと使用について学習してください。
Visual Studio を開き、[ 新しいプロジェクトの作成] を選択します。 [Search] ボックスに「azure sphere」と入力して、Azure Sphere テンプレートの一覧を取得します。 一覧から [ Azure Sphere Blink ] を選択します。
プロジェクトの名前と場所を入力し、[ 作成] を選択します。
CMakeLists.txt ファイルを開き、TARGET_DIRECTORY設定を変更して、使用しているハードウェアの定義を含むフォルダーを指定します。 既定では、TARGET_DIRECTORYは HardwareDefinitions/mt3620_rbdを指定します。これは、Seeed Azure Sphere MT3620 開発キットと一致します。
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 を指定します。
Visual Studio で、[出力の表示>] を選択して [出力] ウィンドウを表示します。
デバイスが USB で PC に接続されていることを確認します。 [ スタートアップ項目の設定 ] メニューで 、F5 キーを 押すか、 Azure Sphere App (HLCore) * を選択します。 ここで、Azure Sphere App は現在の高度なアプリケーションの名前です。
プロジェクトのビルドを求めるメッセージが表示されたら、[ はい] を選択します。 Visual Studio は、アプリケーションをコンパイルし、イメージ パッケージを作成し、ボードに サイドロード して、デバッグ モードで起動します。 サイドローディング とは、クラウド経由で配信されるのではなく、有線接続を介してアプリケーションが PC から直接配信されることを意味します。
ヒント
デプロイの作成時に必要なイメージ パッケージの場所を書き留めます。 出力の表示>>出力元: ビルドの出力に "出力ファイルが次の場所にあります: <パス>は、Blink アプリケーションのビルド フォルダーへの完全なパスであり<>、通常は "out/ARM-Debug" で終わる" というメッセージが出力に表示されます。
既定では、[ 出力 ] ウィンドウにデバイス出力からの出力 が表示されます。 デバッガーからメッセージを表示するには、[出力の表示元] ドロップダウン メニューから [デバッグ] を選択します。 また、プログラムの逆アセンブリ、レジスタ、またはメモリを [デバッグ>] Windows メニューから調べることもできます。
プログラムを実行すると、LED 点滅が表示されます。
サンプル アプリケーションをダウンロードする
HelloWorld アプリケーションは次のようにダウンロードできます。
- ブラウザーを Microsoft Samples Browser にポイントします。
- [Search] ボックスに「Azure Sphere」と入力します。
- 検索結果から [Azure Sphere - Hello World] を選択します。
- [ ZIP のダウンロード] を選択します。
- ダウンロードしたファイルを開き、ローカル ディレクトリに展開します。
サンプルをビルドする
HelloWorld_HighLevelApp サンプル アプリケーションのビルド ファイルと .imagepackage ファイルを作成するには、次の手順に従います。
必要に応じて、サンプルを更新してハードウェアをターゲットにします。 既定では、サンプルは、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")
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) は読みやすくするために使用できますが、必須ではありません。
次の例は、Hello Worldの高レベル アプリの 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 コマンドに変更を加えてからトラブルシューティングを行う場合は、ビルド全体を削除してやり直してください。
サンプルを実行する
デバイスでアプリケーションが既に実行されている場合は、アプリケーションを削除します。
az sphere device sideload delete
前に作成したビルド ファイルと .imagepackage ファイルを含むディレクトリに移動します。
az sphere device sideload deploy コマンドを実行し、イメージ パッケージを指定して、イメージ パッケージをデバイスに読み込みます。 例えば:
az sphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
このコマンドは、イメージ パッケージを読み込み、アプリケーションを起動します。 LED の点滅が表示されます。
ヒント
イメージ パッケージのパスに注意してください。 イメージ パッケージは、 デプロイ クイックスタートの後半で使用します。
サンプルをデバッグする
前に作成したビルド ファイルと .imagepackage ファイルを含むディレクトリに移動します。
コンポーネント ID がまだない場合は、次の値を取得します。
az sphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
アプリケーションが実行されている場合は、アプリケーションを停止し、オプションを
--debug-mode
使用して再起動します。az sphere device app stop --component-id <ComponentId>
az sphere device app start --debug-mode --component-id <ComponentId>
次の情報が表示されます。
... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...
ターミナル クライアントを使用して、プロセスから出力ストリームを読み取る Telnet または未加工の TCP 接続を確立します。 IP アドレスとして 192.168.35.2、ポートとして 2342 を指定します。
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
メモ
Azure Sphere SDK には複数の sysroot が付属しているため、「アプリケーション ランタイム バージョン、sysroots、Beta API」で説明されているように、アプリケーションが異なる API セットをターゲットにすることができます。 sysroots は、 Sysroots の Azure Sphere SDK インストール フォルダーにインストールされます。
リモート デバッグ ターゲットを、ポート 2345 の IP アドレス 192.168.35.2 に設定します。
target remote 192.168.35.2:2345
選択した他の gdb コマンドを実行します。 たとえば、次のコマンドは、エントリ時にブレークポイントを メイン() に設定し、ブレークポイントの後にそれぞれ実行を続行します。
break main
c
gdb を使用したデバッグの詳細については、「GDB: GNU プロジェクト デバッガー」またはこのテーマに関する他の多数のソースの 1 つを参照してください。
次の手順
Azure Sphere デバイスで実行する高度なアプリケーションを構築しました。 今すぐ変更することもできます。 ハードウェア定義では、 ハードウェア定義 JSON ファイルを編集し、関連するヘッダー ファイルを再作成する方法について説明します。
次に、クラウドから高度なアプリケーションをデプロイする方法について説明します。
「」も参照してください
Azure Sphere ギャラリーには、インスピレーションを得た、メンテナンスされていない再利用可能な Azure Sphere スクリプト、ユーティリティ、および関数のコレクションがあります。