リアルタイム対応アプリケーションをビルドする
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
Visual Studio、Visual Studio Code、またはコマンド ライン (CLI) を使用して、高度なアプリケーションとほとんど同じ方法で、リアルタイム対応アプリケーション (RTApp) を開発してデバッグできます。
前提条件
- Azure Sphere デバイスをコンピューターに接続する
- Azure Sphere のインストール
- GNU Arm Embedded ツールチェーンをインストールする
- 専用 UART からの出力を表示するようにハードウェアを設定 まだ行っていない場合
開発とデバッグを有効にする
Azure Sphere デバイスでサンプル アプリケーションをビルドしたり、Azure Sphere デバイス用の新しいアプリケーションを開発したりするには、その前に、開発とデバッグを有効にする必要があります。 既定では、Azure Sphere デバイスは "ロックされています"。つまり、開発中のアプリケーションを PC から読み込むことはできず、アプリケーションのデバッグは許可されません。 デバッグ用にデバイスを準備すると、この制限がなくなり、デバッグに必要なソフトウェアが読み込まれ、「デバイス機能と通信」で説明されているように、デバイスの機能がロック解除されます。
リアルタイム コアでデバッグするには、 azsphere device enable-development コマンドを使用します。 このコマンドは、デバッグのために PC からのアプリケーションを受け入れるようにデバイスを構成し、クラウド アプリケーションの更新を許可しない開発デバイス グループにデバイスを割り当てます。 アプリケーションの開発およびデバッグ中は、クラウド アプリケーション更新によって開発中のアプリケーションが上書きされないように、デバイスをこのグループに残しておく必要があります。
Windows では、デバッグ サーバーとコアの種類ごとに必要なドライバーをデバイスに読み込む --enable-rt-core-debugging
パラメーターを追加する必要があります。
まだログインしていない場合は、Azure Sphere にログインします。
azsphere login
管理者特権で PowerShell または Windows コマンド プロンプトを使用して、コマンド ライン インターフェイスを開きます。
--enable-rt-core-debugging
パラメーターには、デバッガー用の USB ドライバーがインストールされるため、管理者特権が必要です。次のコマンドを入力します。
azsphere device enable-development --enable-rt-core-debugging
管理者特権はもう必要ないので、コマンドが完了したらウィンドウを閉じます。 ベスト プラクティスとして、常に、タスクを実行できる最も低い特権を使用する必要があります。
azsphere device enable-development コマンドが失敗した場合は、 Azure Sphere の問題のトラブルシューティングを参照してください。
開発とデバッグを有効にする
Azure Sphere デバイスでサンプル アプリケーションをビルドしたり、Azure Sphere デバイス用の新しいアプリケーションを開発したりするには、その前に、開発とデバッグを有効にする必要があります。 既定では、Azure Sphere デバイスは "ロックされています"。つまり、開発中のアプリケーションを PC から読み込むことはできず、アプリケーションのデバッグは許可されません。 デバッグ用にデバイスを準備すると、この制限がなくなり、デバッグに必要なソフトウェアが読み込まれ、「デバイス機能と通信」で説明されているように、デバイスの機能がロック解除されます。
リアルタイム コアでデバッグするには、 azsphere device enable-development コマンドを使用します。 このコマンドは、デバッグのために PC からのアプリケーションを受け入れるようにデバイスを構成し、クラウド アプリケーションの更新を許可しない開発デバイス グループにデバイスを割り当てます。 アプリケーションの開発およびデバッグ中は、クラウド アプリケーション更新によって開発中のアプリケーションが上書きされないように、デバイスをこのグループに残しておく必要があります。
Windows では、デバッグ サーバーとコアの種類ごとに必要なドライバーをデバイスに読み込む --enable-rt-core-debugging
パラメーターを追加する必要があります。
まだログインしていない場合は、Azure Sphere にログインします。
azsphere login
管理者特権で PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。
--enable-rt-core-debugging
パラメーターには、デバッガー用の USB ドライバーがインストールされるため、管理者特権が必要です。次のコマンドを入力します。
azsphere device enable-development --enable-rt-core-debugging
管理者特権はもう必要ないので、コマンドが完了したらウィンドウを閉じます。 ベスト プラクティスとして、常に、タスクを実行できる最も低い特権を使用する必要があります。
azsphere 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 'azsphere device show-deployment-status'.
Visual Studio Code を使用して RTApp をビルドする
RTApp をビルドするには:
Visual Studio Code で、Azure Sphere サンプル リポジトリの複製内の HelloWorld_RTApp_MT3620_BareMetal フォルダーを開きます。 キットを選択するように求めるメッセージが表示されたら、[キットを使用しない] を選択します。
F5 キーを押してデバッガーを開始します。 プロジェクトがまだビルドされていない場合、またはファイルが変更され、リビルドが必要な場合は、デバッグを開始する前に、Visual Studio Code によってプロジェクトがビルドされます。
接続されているターミナル エミュレーターに、アプリケーションからの出力が表示されます。 プログラムでは、1 秒間隔で次の単語が送信されます。
Tick
Tock
Note
Visual Studio Code では Intellisense が提供されますが、CMakeLists.txt を変更しても自動的に更新されることはありません。 Intellisense を更新するには、 CMake: Delete Cache and Reconfigure コマンドを実行する必要があります。 左側のバーにある CMake 拡張機能ビューで、CMake ターゲット ビューを見つけることができます。
Visual Studio を使用して RTApp をビルドする
RTApp をビルドするには:
Visual Studio で File>CMake を選択し、サンプルが含まれているフォルダーに移動します。
CMake の生成が自動的に始まらない場合は、CMakeLists.txt ファイルを選択します。
Visual Studio では、 View>Output>Show output from: CMake 出力に
CMake generation started.
メッセージが表示されます。CMake generation finished.
CMake メニュー (存在する場合) で、 Build All を選択します。 メニューが表示されない場合は、ソリューション エクスプローラーを開き、CMakeLists.txt ファイルを右クリックし、Build を選択します。 Azure Sphere アプリケーションの出力場所が Output ウィンドウに表示されます。
F5 キーを押してアプリケーションをデプロイします。
接続されているターミナル エミュレーターに、アプリケーションからの出力が表示されます。 プログラムでは、1 秒間隔で次の単語が送信されます。
Tick
Tock
Note
Visual Studio では、CMake キャッシュからデータを収集することにより、Azure Sphere RTApp 用の IntelliSense が提供されます。 RTApp の CMakeLists.txt ファイルまたは CMakeSettings.json ファイルが変更されるたびに、Visual Studio でキャッシュが更新されます。
既定では、Visual Studio ではフォルダー ビューが使われます。 CMake プロジェクトの論理ビューの方がよい場合は、CMake ターゲット ビューに変更できます。 ソリューション エクスプローラーで、フォルダー切り替えアイコンを選択します。
ドロップダウン メニューから、 CMake ターゲット ビューを選択します。
OpenOCD で接続が行われる前にこのアプリケーションが実行を始めることがあります。 結果として、コードの最初の方に設定されているブレークポイントを逃すことがあります。 これを回避する簡単な方法は、OpenOCD で接続が行われるまでアプリの開始を遅らせることです。
アプリケーション エントリ ポイント RTCoreMain の先頭に次のコードを挿入します。 これにより、変数
f
が true に設定されるまでアプリケーションがwhile
ループに入り、そこに残ります。volatile bool f = false; while (!f) { // empty. }
F5 キーを押してデバッグでアプリを起動し、実行に中断します。
Locals デバッグ ウィンドウで、
f
の値を 0 から 1 に変更します。通常どおりコードをステップ実行します。
CLI を使用して RTApp をビルドする
次の手順は、CMake を使用していることを前提としています。 CMake を使用せずにコマンド ラインでビルドする場合は、Azure Sphere SDK と一緒にインストールされる AzureSphereToolchainBase.cmake と AzureSphereRTCoreToolchain.cmake ファイルを参照して、適切なコンパイラとリンカーのオプションを決定できます。
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 パラメーターはスペースで区切られます。 行継続文字 (Windows コマンド ラインの場合は ^、Linux コマンド ラインの場合は \、PowerShell の場合は ' ) は読みやすくするために使用できますが、必須ではありません。
次の例は、HelloWorld RTApp の CMake コマンドを示しています。
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
されます。デバイスに既にデプロイされているアプリケーションをすべて削除します。
azsphere device sideload delete
Ninja によって作成されたイメージ パッケージをデプロイします。
azsphere device sideload deploy --image-package <package-name>
イメージのコンポーネント ID を取得します。
azsphere image-package show --image-package <path-to-imagepackage>
このコマンドは、イメージ パッケージのすべてのメタデータを返します。 アプリケーションのコンポーネント ID は、イメージの種類 Application の Identity セクションに表示されます。 次に例を示します。
Image package metadata: Section: Identity Image Type: Application Component ID: <component id> Image ID: <image id>
アプリが実行されているコアを決定します。
既定では、RTApp はデバイス上で使用可能な最初のリアルタイム コアに配置されます。現在特定のコアを指定することはできません。 アプリケーションがどのコアで実行されているかを確認するには、azsphere device app コマンドを使ってアプリケーションを停止してから再起動します。 コマンドでアプリケーションのコンポーネント ID を指定します。 次に例を示します。
azsphere device app stop --component-id <component id> <component id>: App state: stopped
azsphere device app start --component-id <component id> <component id> App state: running Core : Real-time 0
接続されているターミナル エミュレーターに、アプリケーションからの出力が表示されます。 プログラムでは、1 秒間隔で次の単語が送信されます。
Tick
Tock
RTApp からのログ出力
MT3620 上の各リアルタイム コアには、ログ出力用の専用 UART があります。 リアルタイム コアは ISU UD にもアクセスできます。 MT3620 RDB は TX ピンのみを公開します。これは、アプリケーションからのログ出力を表示するために使用できます。 他のハードウェアでは、異なる方法で公開されている場合、またはまったく公開されていない場合があります。 ログ出力を表示するには、クイックスタートの説明に従って、この出力を表示するようにハードウェアを設定します。 専用の UART は Uart
アプリケーション マニフェスト要件を必要としません。ただし、RTApp の出力のログ記録以外の目的には使用しないでください。
パートナー アプリを使用した開発
アプリケーションを Azure Sphere デバイスに読み込むと、Azure Sphere のデプロイ ツールでは、既定で既存のアプリケーションがすべて削除されます。 相互に通信するアプリケーションを開発するときにこの問題が発生しないようにするには、アプリケーションを パートナーとしてマークする必要があります。 いずれかのアプリケーションをデプロイしても、そのパートナーは削除されません。 詳細については、「アプリケーションをパートナーとしてマークする」をご覧ください。
トラブルシューティング
問題が発生した場合は、「リアルタイム対応アプリケーションのトラブルシューティング」をご覧ください。
その他のリソース
MT3620 チップ上の M4 リアルタイム コアをターゲットとする RTApps 用の追加のドライバーとサンプルは、Azure Sphere パートナーの GitHub で入手できます。