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

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

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

デフォルトでは、セミホスティングサポートはデバッガで無効になっています。ただし、 __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)を制御します。

非機密扱いPDF file icon PDF 版ARM DUI0446ZJ
Copyright © 2010–2016 ARM.All rights reserved.