3.16 セミホスティングの使用

セミホスティングは、コマンドラインコンソールとユーザインタフェースからの両方のデバッガでサポートされています。

セミホスティングサポートの有効化

デフォルトでは、セミホスティングサポートはデバッガで無効になっています。ただし、 __auto_semihosting または __semihosting_library_function の ELF シンボルがイメージに存在する場合、DS-5デバッガはセミホスティングを自動的に有効にします。また、 ARM® コンパイラ 5.0 以降を使用してイメージをコンパイルしている場合、セミホスティングを必要とする関数を使用しているイメージに、リンカが __semihosting_library_function を自動的に追加します。
C コードでは、 __auto_semihosting という名前で関数を定義することによって、ELF シンボルを作成できます。この関数がイメージで追加のコードまたはデータを生成しないように、別の関数のエイリアスとしてこれを定義することができます。これにより、デバッグ情報に必須の ELF シンボルが配置されますが、アプリケーションイメージのコードとデータには影響はありません。

例 3-5 main() へのエイリアスを使用して、特別なセミホスティング ELF シンボルを作成します。

#include <stdio.h>
void __auto_semihosting(void) __attribute__((alias("main")));
                                     //mark as alias for main() to declare 
                                     //semihosting ELF symbol in debug information only
int main(void)
{
    printf("Hello world\n");
    return 0;
}

コマンドラインコンソールからのセミホスティングの使用

アプリケーションコードからデバッガを実行するホストワークステーションへ発行される入出力要求は、「セミホスティングメッセージ」と呼ばれます。デフォルトでは、すべてのセミホスティングメッセージ( stdout および stderr )がコンソールに出力されます。このコンソールをインタラクティブにデバッガコマンドと使用する場合は、 stdin オプションを使用して、入力メッセージをアプリケーションに送信する必要があります。
デフォルトでは、すべてのメッセージがコマンドラインコンソールに出力されますが、以下のオプションを使用することでデバッガを起動するときに、それらのメッセージを転送するよう選択できます。
--disable_semihosting
すべてのセミホスティング操作を無効にします。
--disable_semihosting_console
デバッガコンソールに対するすべてのセミホスティング操作を無効にします。
--semihosting_error= filename
セミホスティング操作で stderr を書き込むファイルを指定します。
--semihosting_input= filename
セミホスティング操作で stdin を読み出すファイルを指定します。
--semihosting_output= filename
セミホスティング操作で stdout を書き込むファイルを指定します。

あるいは、コンソールのセミホスティングを無効にし、別の Telnet セッションを使用してアプリケーションと直接やりとりします。起動時に、デバッガはセミホスティングサーバソケットを作成し、Telnet セッション時に使用するポート番号を表示します。
詳細については、「コマンドラインデバッガのオプション」を参照して下さい。

ユーザインタフェースからのセミホスティングの使用

DS-5 デバッグパースペクティブ内のアプリケーションコンソールビューは、アプリケーションコードとデバッガの間のすべてのセミホスティング入出力要求(stdinstdout、および stderr)を制御します。
関連する参考文書
16.5  main() への引数の引き渡しについて
3.15 セミホスティングを使用したホストコンピュータにあるリソースへのアクセス
11.42 [Debug Configurations] - [Arguments]タブ
11.1 [App Console]ビュー
関連情報
DS-5 デバッガコマンド
非機密扱いPDF file icon PDF 版ARM DUI0446WJ
Copyright © 2010-2015 ARM.All rights reserved.