本システムで提供される「JTRONプラットフォーム機能」「CORBA関連機能」「GUIミドルウェア機能」は、いわゆるミドルウェア群であり、 これ単独のアプリケーションとして実行できるものではない。これらのミドルウェア群は、開発環境上のライブラリ等として提供され、ユーザの作成したアプリケーションプログラムと一緒にリンクすることにより、ターゲットマシン上で動くロードモジュールとなる。
本章では、まず、これらのミドルウェア群を開発環境上にインストールする方法について説明する。次に、ターゲットマシン上に、本システムの実行環境や本件を利用したアプリケーションプログラムをインストールする方法について説明する。
本システムで提供するミドルウェア群をインストールする前に、まず、ホストマシン(SUN Ultra 1 または相当品)上に、「B-right/V開発環境(BV-GSDK: B-right/V GNU based Software Developer's Kit)」 をインストールしておく必要がある。 BV-GSDKの入手とインストール方法については、以下のURLで示される「超漢字開発者サイト」 に説明があるので、 それにしたがってBV-GSDKをダウンロードし、ホストマシンにインストールする。
超漢字開発者サイト: http://www.personal-media.co.jp/btron/developer/index.html※ 「超漢字」は、B-right/V R2 の製品名称である。
以下のファイルを展開する。この操作により、本システムのミドルウェア群(ライブラリ群)のオブジェクトやヘッダファイルをホストマシンの開発環境に加える。
なお、以下では、開発環境(BV-GSDK)のベースディレクトリを "${BD}" で表示し、アプリケーションを開発するためのソース等を入れるディレクトリを $BD/jcg としている。
また、以下の "${SD}" は、JCGプロジェクトから提供されるアーカイブ(JCGPRG.TGZ)を展開したディレクトリを意味する。CD-ROM媒体で提供される場合は、CD-ROM上のファイルの所在を示すディレクトリを意味し、ホストマシンの環境に依存して変化する。CD-ROMの個別のファイルを直接アクセスできる場合には、"/cdrom/cdrom0" (ホスト依存)などの名称を書く。また、8+3文字のファイル名の制約などにより、CD-ROM上のアーカイブファイル(JCGPRG.TGZ)を展開した場合には、アーカイブファイルの展開を行ったディレクトリを表す。
${BD}/include の下にディレクトリ jcg を作成し、ヘッダファイル *.h(libjcg.h など) をその下にコピーする。
% mkdir ${BD}/include/jcg % cp ${SD}/INCLUDE/*.h ${BD}/include/jcg |
JCG実行環境構築用プログラム libjcg.a を、${BD}/lib/i386e/ の下にコピーする。
% cp ${SD}/ENV/libjcg.a ${BD}/lib/i386e |
アプリケーションを開発するためのディレクトリを用意し、 その下にディレクトリ etc を作成する。makerules をその下にコピーする。makerules 内の BD の設定は、実際の環境に合わせて修正する。
% mkdir ${BD}/jcg % mkdir ${BD}/jcg/etc % cp ${SD}/INCLUDE/makerules ${BD}/jcg/etc |
組込みCORBAの開発成果物をライブラリ化したファイル libecb.a を、${BD}/lib/i386e/ の下にコピーする。
% cp ${SD}/LIB/libecb.a ${BD}/lib/i386e |
CORBAのアプリケーションを開発するためのIOR作成コマンドcre_ior を、${BD}/jcg/etc の下にコピーする。
% cp ${SD}/LIB/cre_ior ${BD}/jcg/etc |
GUIミドルウェアの開発成果物をライブラリ化したファイル libgui.aを、 ${BD}/lib/i386e/ の下にコピーする。
% cp ${SD}/LIB/libgui.a ${BD}/lib/i386e |
上記の操作を行った結果のディレクトリ構成(関連部分のみ)を以下に示す。
開発環境のベースディレクトリ (${BD}) | |----include | |------jcg ※ jcg ディレクトリを作成し、*.h をコピーする | | | |----corba.h | |----ecbasrv.h | |----ecbcfg.h | |----ecbcon.h | |----ecberr.h | |----ecbgiop.h | |----ecbinit.h | |----ecbmem.h | |----ecbmrshl.h | |----ecbobj.h | |----ecborb.h | |----ecbpoa.h | |----ecbseq.h | |----ecbtype.h | |----i_device.h | |----i_jt2ext.h | |----i_malloc.h | |----i_pload.h | |----i_socket.h | |----libgui.h | |----lib | |-----i386e | |----libecb.a ※ *.a をコピーする | |----libjcg.a | |----libgui.a | ... | |----jcg | |----etc | | |----cre_ior ※ cre_ior をコピーする | | |----makerules ※ makerules をコピーする | | | | | |----アプリケーションのソース等 | ... | |
以下、 「GUIミドルウェア機能」を用いたサンプルプログラム「dt」の開発手順を例にとって説明する。(dt については sample/draw/src/Makefile を参照)
ユーザの書いたアプリケーションプログラムが「GUIミドルウェア機能」を利用する場合、アプリケーションのソースプログラム中で「libgui.h」のヘッダファイルをインクルードする必要がある。また、リンクオプションとして「-lgui -ljcg」を指定し、「libgui.a」と「libjcg.a」 をリンクする。サンプルプログラム「dt」の場合、「dt.h」中の以下の行で「libgui.h」のインクルードをおこなっている。
#include <jcg/libgui.h>
また、「Makefile」中の以下の行において、「libgui.a」「libjcg.a」のリンクを指定している。
LOADLIBES += -lgui -ljcg
これらの指定を行った後にmakeを実行すると、「GUIミドルウェア機能」が組み込まれたアプリケーションプログラム「dt」が得られる。
本システムの「CORBA関連機能」を用いたアプリケーションの開発には、スタブ及びスケルトンも含めたプログラムをユーザが作成する必要がある。
スタブは、 クライアント側からサーバ側へ送信するリクエスト(オペレーションの引数)をマーシャリングする処理、 マーシャリングされたリクエストをサーバへ送信する処理、 サーバ側からの応答(オペレーションの戻り値)を受信する処理、 受信した応答をアンマーシャリングする処理を含む。
スケルトンは、受信したリクエストのアンマーシャリング処理、オペレーションの呼び出し、その応答のマーシャリング処理、マーシャリングされた応答をクライアントへ送信する処理送信を含む。
さらに、 動的に(ターゲットマシン稼働中に)登録される新規CORBAオブジェクトは、実行コードのダウンロード機能、ダンロードしたプログラムのリンク機能などが必要であり、プログラムを実装する機器に依存したものとなる。よって、ダウンロード機能及びリンク機能に関してはユーザが独自に開発する必要がある。
また、CORBAの共通サービス(ネーミングサービス等) の既成品を使用またはユーザが開発すれば、よりネットワークに透過な分散オブジェクト環境を構築可能である。
以下、 「CORBA関連機能」 を用いたサンプルプログラム「long」 及び「dync」の開発手順を説明する。
サンプルプログラム「long」は、サーバ側ターゲットマシンに常駐するCORBAオブジェクトに関するサンプルプログラムであり、 クライアント側プログラムとサーバ側プログラムが存在する。クライアント側は、サーバ側からソケットI/Fを用いて送信されるIORを受信することで、 IORを取得している。
サンプルプログラム「dync」は、 サーバ側ターゲットマシンで動的(ターゲットマシン稼働中に)に登録される新規CORBAオブジェクトについてのサンプルプログラムであり、クライアント側プログラムとサーバ側プログラムが存在する。サンプルプログラム「dync」の動的に登録される新規CORBAオブジェクトは、 サーバ側のダウンロードモジュールを作成する際、 動的に登録される新規CORBAオブジェクトを一緒にリンクし、ダウンロードする。 また、IORに関してはクライアント側のダウンロードモジュールと一緒にリンクしている。 このIORは、 IOR作成コマンドcre_iorにより作成される。
ユーザの書いたアプリケーションプログラムが「CORBA関連機能」 を利用する場合、アプリケーションのソースプログラム中で「corba.h」 のヘッダファイルをインクルードする必要がある。また、リンクオプションとして「-lecb -ljcg」を指定し、「libecb.a」と「libjcg.a」をリンクする。サンプルプログラム「long」及び「dync」は、「test.h」中の以下の行で「corba.h」のインクルードをおこなっている。
#include <jcg/corba.h>
また、「Makefile」中の以下の行において、「libecb.a」「libjcg.a」のリンクを指定している。
LOADLIBES += -lecb -ljcg
さらに、「CORBA関連機能」 を用いたアプリケーションプログラムは、初期化関数ECORBA_initにより「CORBA関連機能」を初期化する。その際、初期化データの指定が必要となる。そのデータについてサンプルプログラムでは、 「config. h」 に記述されており、 ターゲット名のみ「makeinfo」の中に指定している。以下は、「makeinfo」中にサーバ側ターゲット名 dell1 及びクライアント側ターゲット名 dell2 を指定している例である。
SRV_HOST = dell1 CLI_HOST = dell2
これらの指定を行った後にmymakeを実行すると、「CORBA関連機能」 が組み込まれたアプリケーションプログラムが得られる。
サンプルプログラム「long」では、以下のダウンロードモジュールが得られる。
クライアント側 longc サーバ側 longs
サンプルプログラム「dync」では、以下のダウンロードモジュールが得られる。
クライアント側 dyncc サーバ側 dyncs
ターゲットマシン上では、超漢字(B-right/V R2)をインストールした後、以下の手順で、本システムの実行を行うための実行環境を準備する。
ENV/JCGENV のファイルを、超漢字 (B-right/V R2.xxx) がインストールされているマシンの Windows 上のファイルとしてロードする。
超漢字を起動して小物メニューの「ファイル変換」を指定し、Windows 上にロードした JCGENV のファイルを超漢字上にドラッグする。変換方法は、「無変換(基本)」を指定する。
※ 1), 2) の手順の代わりに、超漢字上の「ファイル変換」を用いて、ENV/JCGENV ファイルを直接超漢字上のファイルに変換することもできる。
小物メニューの「システム環境設定」を指定して、「バージョン」の画面を表示し、上記で変換した JCGENV をその中にドラッグする。「JCG実行環境」のシステム登録処理を行いますか ? というパネルが表示されるので、実行スイッチを押して登録する。登録の後、システムを再起動する。
なお、このソフトウェアは、 B-right/V上でITRONの実行環境を提供するためのインタフェース用ソフトウェアである。
小物メニューの「ネットワーク環境設定」を選択し、ネットワークの設定をおこなっておく。
起動時のウィンドウにある「小物箱」をダブルクリックし、現われたウィンドウの「コンソール」をダブルクリックする。現われたウィンドウで「debugmode 1」と入力することで、デバッグモードに切り替える。
[/SYS]% debugmode 1
+ 0: DEBUGMODE 1
[/SYS]%
最後に、起動時のウィンドウで終了メニューを選択し、「更新して終了」「更新して終了」「再起動」を選択して再起動する。
デバッグモードでは、コンソールに以下のようなプロンプトが表示される。
[/SYS]%
まず、ターゲットマシンのOSをITRONモード(非GUIモード)にするため、以下のように入力して再起動する。
[/SYS]% ren STARTUP.CMD STARTUP
[/SYS]%
なお、元のモード(BTRONモード)に戻すには、 以下のように入力して再起動する。
[/SYS]% ren STARTUP STARTUP.CMD
[/SYS]%
ITRONモードで起動すると、 「[IMS]%」のプロンプトが表示される。ここで「$cli」と入力することにより、CLIが動作する。なお、CLIの詳細については、「超漢字開発環境」に付属している説明書を参照のこと。
[IMS]% $cli
pid = 2 (pri = -1)
<< START cli : R1.100 >>
2000/1/17(月) 18:36:01
[/SYS]%
ホストマシン上で開発したプログラムをftp経由でターゲットマシンにダウンロードするため、 まず、 ネットワークドライバをロードする。ftpによるダウンロードをおこなわない場合には、この操作は必要ない。
[/SYS]% kerext tcpipmgr
KEREXT tcpipmgr [1] c0212000 - c0242000
[/SYS]% kerext netdrv
KEREXT netdrv [2] c01fb000 - c0201000
[/SYS]%
続いて、本システムを用いてホストマシン上で開発したアプリケーションプログラムのダウンロードをおこなう。 以下の例では、「GUIミドルウェア機能」が組み込まれたアプリケーションプログラム「dt」をダウンロードしている。
[/SYS]% fget -uuser -ppass host:/dt/pcat/dt
220 u30 FTP server (UNIX(r) System V Release 4.0) ready.
.......................................................-
...............................
887677 bytes transferd. (177535 Bytes/sec)
[/SYS]
また、GUIミドルウェア機能を利用する場合は、必要に応じて、 以下のようにキーボード/PDドライバ(gkbpd)もダウンロードする。
[/SYS]% fget -uuser -ppass host:/gkbpd/pcat/gkbpd
220 u30 FTP server (UNIX(r) System V Release 4.0) ready.
..
26631 bytes transferd. (26631 Bytes/sec)
[/SYS]
最後に、 ダウンロードしたアプリケーションプログラムを実行する。GUIミドルウェア機能を利用する場合は、必要に応じて、 その前にキーボード/PDドライバ(LIB/gkbpd) もターゲットに転送し、実行しておく。以下の例では、「GUIミドルウェア機能」が組み込まれたアプリケーションプログラム「dt」を実行している。
[/SYS]% kerext gkbpd
KEREXT gkbpd [3] c01f2000 - c01f6000
[/SYS]% kerext dt
KEREXT dt [4] c0242000 - c0334000
[/SYS]
「JTRONプラットフォーム機能」 を使用したアプリケーションプログラムを動作させる場合は、 その前にITRONアプリケーションプログラム用インターフェースライブラリ( LIB/jt2ext)もターゲットに転送し、これも実行しておく。
[/SYS]% kerext jt2ext
また、Javaアプリケーションプログラムを動作させる場合は、 「JTRONプラットフォーム機能」が組み込まれたJVM(LIB/slimrt)もターゲットに転送し、同時に実行する。
[/SYS]% kerext slimrt
※ <file> は、実行するJavaアプリケーション名(拡張子.class)である。