WideStudio for T-Engine

WideStudio for T-Engine


WideStudio for T-Engine は、 T-Engine または BTRON におけるデスクトップアプリケーションを 製作するための WideStudio です。
WideStudio for T-Engine を使うと次のような特徴がある T-Engine/BTRON アプリケーションを 製作することができます。
  • ネイティブバイナリの高速なアプリケーションを製作できます。
  • 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 アプリケーションを製作するために 必須なソフトウェアを、 下記に示します。
  • ソースコードを編集するためのエディタ
  • T-Engine 開発環境(T-Engine用の gcc を含む)
  • T-Engineの場合は T-Shell開発環境
T-Engine 開発環境用のコンパイラと、T-Shell 開発環境も必要となります。
T-Engine 開発環境、T-Shell 開発環境が /usr/local/te (Linux上)、 c:/cygwin/usr/local/brightv (Windows上)に インストールされているものとして、WideStudio for T-Engine の 環境構築を進めたいと思います。

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


アプリケーションビルダで、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
にインストールした場合です。



Windowsプラットフォームの場合は、Cygwin を用いている関係で、 Unix 系のプラットフォームと同じように、 /usr/local/te のように Cygwin 内で利用するパス を設定してください。

Cygwin 配下に T-Engine 用コンパイラをインストールした場合:
Cygwin をインストールしたパス:  c:\cygwin
T-Engine用コンパイラをインストールしたパス: c:\cygwin\usr\local\te
アプリケーションビルダに設定するパス: /usr/local/te

Cygwin 配下以外に T-Engine 用コンパイラをインストールした場合:
Cygwin をインストールしたパス:  c:\cygwin
T-Engine用コンパイラをインストールしたパス: d:\te
アプリケーションビルダに設定するパス: /cygdrive/d/te

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


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


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

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




ウィンドウの作成


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

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


次はいよいよイベントプロシージャの作成です。 ボタンを押したら、「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 の下に配置しなければなりません。
アプリケーションが必要としているダイナミックリンクライブラリはCygwinターミナル上で次のようにキー入力すると確認することができます。

% /usr/local/te/tool/Cygwin-i686/bin/(CPU名)-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


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