Skip to main content

IAR Embedded Workbench for Arm 9.70.x

セミホスティングのメカニズム

このセクションの内容:

C-SPYエミュレートI/Oは、Arm Limitedで提供されるセミホスティングインターフェースと互換性がありますアプリケーションがセミホスティングコールを呼び出すと、実行がデバッガのブレークポイントで停止します。続いて、デバッガが呼び出しを処理し、ホストコンピュータ上で必要なすべてのアクションを行って実行を再開します。

使用可能なセミホスティングのメカニズムには、以下の3つがあります。

  • Cortex-Mの場合、インタフェースはBKPT命令を使用してセミホスティングの呼び出しを実行します。

  • 他のArmコアの場合、32ビットモードでのセミホスティングの呼出しには、SVC命令が使用されます。

  • 64ビットモードの場合HLT命令がセミホスティングの呼出しに使用されます。

  • セミホスティングの代替となるIAR固有の機能である、SVCを使用するIARブレークポイントを使用します。

SVC経由でセミホスティングをサポートするには、デバッガがSupervisor Callベクタ上にセミホスティングのブレークポイントを設定して、SVCの呼び出しを検出する必要があります。アプリケーションでセミホスティング以外の目的にSVC呼び出しを使用する場合、このブレークポイントの処理によって、こうした呼び出しの度に重大なパフォーマンスへの影響が発生します。IARブレークポイントは、これを回避するひとつの方法です。セミホスティングの実行にSVC命令ではなく特殊な関数呼び出しを使用することにより、その特殊な関数上にセミホスティングのブレークポイントを設定できます。つまり、セミホスティングがSupervisor Callベクタの他の用法に干渉しなくなります。

注記

IARブレークポイントは、セミホスティング標準のIAR固有の拡張です。IAR以外のベンダからのツールチェーンによってビルドしたライブラリにアプリケーションをリンクして、IARブレークポイントを使用する場合、これらのライブラリのコードからのセミホスティング呼び出しは機能しません。