メインページ | モジュール | 名前空間一覧 | クラス階層 | 構成 | ファイル一覧 | 名前空間メンバ | 構成メンバ | ファイルメンバ | 関連ページ

チュートリアル

  このページはTOPPERS C++ APIテンプレートライブラリを導入するための手引きとなるチュートリアルである。

  1. 環境設定
  2. Hello, World!
  3. サンプルプログラム


環境設定

TOPPERSカーネルでの使用
 TOPPERS C++ APIテンプレートライブラリは、通常の使用では、C++のソースファイルからヘッダファイルをインクルードする だけで使用することができる。 そのため、必要な環境設定は c++api ディレクトリにインクルードパスを通すだけでよい。
 toppers::outline_stubクラスを使用する場合は、c++api/src ディレクトリ下のソースをメイクする必要があります。 メイクの方法はサンプルプログラムと同じ( -A オプションは不要)。アプリケーションをリンクする際には、ここで構築されたlibc++api.aをリンクすること。
TOPPERSカーネル以外、または旧バージョンのTOPPERSカーネルでの使用
  最新のTOPPERSカーネル以外を使用する場合には何らかの移植作業が必要になる。 本ライブラリは、そうしたカーネルをサポートしていない。
  1. c++api/src ディレクトリ下のソースをメイクして libc++api.a を構築する。( Makefile の修正が必要です)
  2. c++api/toppers/config.hpp を適切に編集し、カーネルの実装に依存するマクロ定義を行う。
  3. 必要に応じて、各ソースコードの修正を行う。

Hello, World!

    /*  hello.cfg   */
    INCLUDE(\"hello.h\");

    CRE_TSK(HELLO_TASK, { TA_HLNG | TA_ACT, 0, hello_task, 5, 0x1000, NULL });

    /* 以下、カーネル依存の設定 */

    /*  hello.h */
    #ifdef  __cplusplus
    extern "C" {
    #endif

    void hello_task(VP_INT);

    #ifdef  __cplusplus
    }
    #endif

    /*  hello.cpp   */
    #include <toppers/task.hpp>
    #include <toppers/trace.hpp>
    #include "hello.h"
    #include "kernel_id.h"

    class hello_body : public topper::task_body<>
    {
    public:
        explicit hello_body(VP_INT exinf)
            : toppers_task_body<>(exinf)
        {
        }

        void run()
        {
            using namespace topper;
            syslog_tracer<> tr;

            tr << "Hello, World!" << endl;
        }
    }

    void hello_task(VP_INT exinf)
    {
        toppers::task_entry<hello_body>(exinf);
    }


サンプルプログラム

 TOPPERS C++ APIテンプレートライブラリのサンプルプログラムには、 JSP カーネルに付属する sample1 をラッパライブラリを用いて書き直したものがある。 細部を除けば、このサンプルプログラムは JSP の sample1 と全く同じ動作をするため、ユーザが容易に サンプルプログラムを理解できるものと思われる。

  以下にサンプルプログラムの使用方法を記す。 サンプルプログラムは Cygwin 環境でメイクすることを前提としている。

  作業用のディレクトリを ~/work とした場合、カーネルとラッパライブラリをその下に展開する。 すなわち、~/work/jsp (または ~/work/fi4 )および ~/work/c++api というディレクトリ構成にする。 また、メイクのためのディレクトリを ~/work/build とする。

  ここでは、最初の時点でサポートされている SH3 / MS7727CP01 をターゲットとして使用することにする。

	$ cd ~/work/build

	$ ../jsp/configure -C sh3 -S ms7727cp01 -l c++ -d ../c++api/sample -A sample1
	(ここで必要なファイルがコピーされる)

	$ make depend
	(予めコンフィギュレータをメイクしておかないと、ここでエラーが発生する)

	$ make
	

  上記の手順を実行することで、 jsp.exe および jsp.srec が生成される。 以降の手順は JSP のサンプルプログラムの扱いと同様である。