WideStudio for T-Engine

WideStudio for T-Engine


WideStudio for T-Engine は、 T-Engine  におけるデスクトップアプリケーションを 製作するための WideStudio です。
WideStudio for T-Engine を使うと次のような特徴がある T-Engineアプリケーションを 製作することができます。
  • ネイティブバイナリの高速なアプリケーションを製作できます。
  • Javaチップのような特別な実行チップ、または JavaVM 等を必要としません。
  • 他のプラットフォームとプログラム資産が共有できます。

▲WideStudio で作成した T-Engine アプリケーション

WideStudio for T-Engine の環境の構築


WideStudio for T-Engine では、Linux または Windows を開発環境とし、 T-Engine アプリケーションを Linux 上または Windows 上で構築します。 出来たアプリケーションを T-Engine に転送し、 実行しデバッグする開発形態をとります。
WideStudio for T-Engine で T-Engine アプリケーションを製作するために 必須なソフトウェアを、 下記に示します。
  • gcc/g++ などの Linux 用のコンパイラ(Linux上の場合)
  • ソースコードを編集するためのエディタ
  • T-Engine 開発環境(T-Engine用の gcc を含む)
  • T-Engineの場合は T-Shell開発環境
Linux 上の場合、コンパイラは、Linux に添附されている Linux 用の gcc/g++ コンパイラが必要です。
また、Linux / Window ともに T-Engine 開発環境用のコンパイラと、T-Shell 開発環境も必要となります。
T-Engine 開発環境、T-Shell 開発環境が /usr/local/te (Linux上)、 c:/cygwin/usr/local/brightv (Windows上)に インストールされているものとして、WideStudio for T-Engine の 環境構築を進めたいと思います。

WideStudio for T-Engine のビルド


Linux の場合、ソースコードからライブラリをビルドする必要があります。
(注意)Windows の場合は、バイナリパッケージに予め T-Engine 用のライブラリが 含まれますのでビルドの必要はありません。
WideStudio のソースコードは、 ws-vX.XX.X-src.tar.gz というファイル名で公開されています。
(注意)X.XX.X はWideStudio のバージョン番号を示します。

そのファイルを入手したら、T-Engine 開発環境がインストールされている Linux 機で次のように展開します。
 cd /work
gzip -cd ws-vX.XX.X-src.tar.gz | tar -xvf -
WideStudio for T-Engine のビルドは2つのフェーズからなります。 1つは WideStudio 本体のビルドと、 1つは T-Engine 用のライブラリのビルドです。
  • WideStudio 本体のビルド
  • WideStudio for T-Engine 用のライブラリのビルド
WideStudio 本体のビルドは、 gcc/g++ を Linux のものを用いて、 次の手順でおこないます。
cd /work/ws-vX.XX-X
./configure
make
本体のビルドが終ったら次は、 WideStudio for T-Engine のビルドです。 WideStudio for T-Engine のビルドは、 T-Engine バイナリを生成するために、 T-Engine 用のコンパイラを使用するため、 T-Engine 用コンパイラをインストールしたパスを 次の樣に設定します。
csh の場合の設定を示します。
setenv BD /usr/local/te

環境変数の設定が終ったら次の手順でおこないます。
cd /work/ws-vX.XX-X/src
make TARGET ← TARGET にはビルドした機種名を指定します。

機種名
TARGET
詳細
SH7751R
te-sh7751r
SH7751R用 T-Shell 版
te-sh7751r-fb
SH7751R用 フレームバッファ直接出力版
SH7727
te-sh7727
SH7727用 T-Shell 版
te-sh7727-fb
SH7727用 フレームバッファ直接出力版
SH7760
te-sh7760
SH7760用 T-Shell 版
te-sh7760-fb
SH7760用 フレームバッファ直接出力版
MC9328
te-mc9328
MC9328用 T-Shell 版
te-mc9328-fb
MC9328用 フレームバッファ直接出力版
MB87Q1100
te-mb87q1100
MB87Q1100用 T-Shell 版
te-mb87q1100-fb
MB87Q1100用 フレームバッファ直接出力版
Vr5500
te-vr5500
Vr5500用 T-Shell 版
te-vr5500-fb
Vr5500用 フレームバッファ直接出力版
Vr5701
te-vr5701
Vr5701用 T-Shell 版
te-vr5701-fb
Vr5701用 フレームバッファ直接出力版
TX4956
te-tx4956
TX4956用 T-Shell 版
te-tx4956-fb
TX4956用 フレームバッファ直接出力版

(例)SH7751Rの場合
cd /work/ws-vX.XX-X/src
make te-sh7751r ← SH7751R用 T-Shell版の場合

エラーが出ずにビルドできれば、環境のビルドはこれで完了です。 次のように入力して、でき上がった WideStudio 一式をインストールしましょう。 デフォルトで /usr/local/ws にインストールされます。
su
cd /work/ws-vX.XX-X
make install

アプリケーションビルダーの設定


アプリケーションビルダで、T-Engine 用のアプリケーションをビルドする際に、 T-Engine 用コンパイラをインストールしたパスを設定する必要があります。
[プロジェクト]メニューの[プロジェクト設定]を選択し、 [環境設定]タブをクリックし下記の BTRON の項目に BTRON 用コンパイラをインストールしたパスを設定します。 下記の例では、
sh7751r のコンパイラを /usr/local/te-SH7751R、
sh7727 のコンパイラを /usr/local/te-SH7727、
vr5500 のコンパイラを /usr/local/te-Vr5500、
mc9328 のコンパイラを /usr/local/te-mc9328
にインストールした場合です。

Settings


WideStudio for T-Engine による Hello アプリケーションの作成


簡単なアプリケーション hello を例に、 WideStudio for T-Engine で実際の T-Engineアプリケーション構築手順を みていきましょう。


▲T-Engine 上で動作するHello アプリケーション

まず、wsbuilder を起動し、 アプリケーションビルダーの[プロジェクト]メニュー の新規プロジェクトを選択し、 新規にプロジェクトを作成します。 プロジェクト名に hello を指定して、 「通常のアプリケーション」を選択してします。 作成されるプロジェクトファイル名は、hello.prj です。
次に、 [プロジェクト]メニューの[プロジェクト設定]を選択し、 [基本設定]タブをクリックし下記の TARGET の項目において、 構築する T-Engine の機種を指定します。

Settings


ウィンドウの作成


プロジェクトを作成したら、次は、 hello のベースとなるウィンドウを一つ作成しましょう。 ビルダーの[ファイル]メニューの新規ウィンドウ を選択します。タイプは、「通常のウィンドウ」を選択し、 newwin000 の名称で作成し、プロパティを次のように設定します。
オブジェクト名称: newwin000
X座標: 0
Y座標: 0
横幅: 240
縦幅: 300
タイトル属性: タイトルなし
次に、作成されたばかりのウィンドウ上に、 ボタンオブジェクトを配置し、次のように設定します。
オブジェクト名称: newvbtn_000
X座標: 10
Y座標: 10
横幅: 100
縦幅: 30
表示文字列: TEST

hello window

イベントプロシージャの作成


次はいよいよイベントプロシージャの作成です。 ボタンを押したら、「Hello!」と表示されるようにしてみましょう。 イベントプロシージャは、C++言語で記述し、 オブジェクトのアクセスや任意のデータ処理等を行います。 そして、作成したプロシージャを配置した部品に対して、 起動されるイベントを指定します。
例えば、イベントプロシージャを、ボタンに対し、 マウスが押される等のイベントで設定しておくと、 マウスでボタンが押した時に実行されます。
作成したプッシュボタン newvbtn_000 に対し hello! と表示するような イベントプロシージャを作成します。 アプリケーションビルダーで、newvbtn_000 を選択して、 [編集]メニューの[プロシージャ編集]の[プロシージャ新規作成]を 選択し、次のように設定します。

#include 
#include 
#include 
//-----------------------------------------------
//Function for the event procedure
//-----------------------------------------------
void btnop1(WSCbase* object){
static long cnt = 0;
  if (cnt != 0){
    exit(0);
  }
  object->setProperty(WSNlabelString,"Hello!");
  cnt++;
}
static WSCfunctionRegister op("btnop1",(void*)btnop1);


Hello プロジェクトのビルド


作成した hello プロジェクトを アプリケーションビルダーの[プロジェクト]メニューの[プロジェクト保存] を選択して保存したら、 アプリケーションビルダーの[ビルド]メニューのビルドオールで ビルドを行います。 これでエラーが出なければ、hello は完成です。


▲ビルドのようす

ビルドが成功すると、プロジェクトのディレクトリに hello.bz が生成されます。 この hello.bz を T-Engine をT-Engine 開発環境に標準で添付される gterm を用いて次のようにシリアル転送し、設定します。

T-Shell 版の場合:
[/SYS] recv -d /.../hello/hello.bz  ← hello.bz のファイルをフルパスで指定します。
[/SYS] expf -v hello.bz ← hello.bz を展開します。
[/SYS] vup -t hello /SYS ← hello を小物に登録します。
[/SYS] rm hello hello.bz ← 不要になった hello を削除します。
フレームバッファ直接出力版の場合:
[/SYS] recv -d /.../hello/hello     ← hello のファイルをフルパスで指定します。
[/SYS] hello ← hello を直接実行します。
ダイナミックリンクを必要とするアプリケーションを構築した場合、ダイナミックリンクライブラリを /SYS/lib/ の下に配置しなければなりません。
アプリケーションが必要としているダイナミックリンクライブラリはターミナル上で次のようにキー入力すると確認することができます。

% /usr/local/te/tool/Linux-i686/bin/(機種により変化)-unknown-tkernel-readelf -d (プロジェクト名).out

Dynamic segment at offset 0x119b44 contains 25 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libwsbtron.so.3.90]
 0x00000001 (NEEDED)                     Shared library: [libwsr.so.3.90]
 0x00000001 (NEEDED)                     Shared library: [libwsb.so.3.90]
 0x00000001 (NEEDED)                     Shared library: [libwsc.so.3.90]
 0x00000001 (NEEDED)                     Shared library: [libws.so.3.90]
 0x00000001 (NEEDED)                     Shared library: [libapp.so.2]
 0x00000001 (NEEDED)                     Shared library: [libg.so.2]
 0x00000001 (NEEDED)                     Shared library: [libbt.so.2]
 0x00000001 (NEEDED)                     Shared library: [libimg.so.2]
 :
 :

上記コマンドでの確認の上、ws/lib/lib-te-機種名/ や /usr/local/te/lib/機種名.dl/ 配下から、ターゲットに必要なダイナミックリンクライブラリを転送してからアプリケーションを実行してください。



▲hello をT-Engine に転送し、展開したときの gterm の様子

T-Shell 版の場合は、「サンプルプログラム」という題目で 小物に hello が登録されます。次の図は hello を実行した時の様子です。 小物からダブルクリックしてアプリケーションを起動することができます。 プロジェクトのディレクトリに生成される hello.f を編集することで、 登録される「サンプルプログラム」という題目を変更することができます。

フレームバッファ直接出力版の場合は、hello をターミナルから直接起動してください。


▲hello を実行したときの様子


Document Release 3.20 for WideStudio ver 3.20, Oct 2002


バグ情報、ご質問等ございましたら、メーリングリストでご確認の上、 御気軽にこちらの方までよろしくお願いいたします。