Index by title

aJile社へのユーザー登録の方法

aJile社(Valley Campus社)からJNIBの開発キットを購入しても 開発用のソフトウェアが含まれたCD-ROMなどは同梱されてきません。
開発用のソフトウェアやドキュメントを入手するためには、以下の手順に従い、aJile社へユーザー登録を行い、
ダウンロード・サイトのパスワードを取得する必要があります。

2008年4月20日 現在

ユーザー登録の方法

以下の手順でユーザー登録を行ってください。

h3. aJile社からのメール タイトル:「 aJile Systems, Inc. - Your Registration is Pending Approval 」
Greetings 登録したあなたのお名前,
Thank you for your registration with us. We have
received your request and we will process it as soon as you
confirm your email address by clicking on the following
hyperlink:

http://www.ajile.com/index.php?option=com_comprofiler&task=confirm&confirmcode=reg4abed734dc9d3b1790037821cac1b9ef0cec6a0c 

Once your email address is confirmed our moderators will be
notified to continue the activation process.
You will be notified by email of the progress of the process.
Email : 登録したあなたのEメールアドレス
User Name : 登録したユーザー名

Kind Regards,
Website Administration Team

NOTE: This email was automatically generated from aJile Systems, Inc. (http://www.ajile.com).

受け取ったメール・メッセージに
「 http://www.ajile.com/index.php?option=.... 」
というような長い長いリンクのアドレスが見つかります。
メールソフトから、このリンク・アドレスを直接クリックするか、
もしくは、ブラウザーへこのリンク・アドレスをコピー&ペーストして、
必ず このリンク・ページにアクセスしてください。
これを怠りますと、いつまでたってもユーザー登録処理が終わりません。

実際のユーザー登録処理はaJile社内で人が確認作業を行うようです。
そのため週末や祭日にひっかかっている場合などは数日かかるかもしれませんが気長に待ちましょう。
ユーザー登録が承認されると、

h3. aJile社からのメール タイトル:「 aJile Systems, Inc. - New User Details 」
Welcome 登録したあなたのお名前
Your application has been approved by our administration team.
Your account with the following details:
Email : 登録したあなたのEメールアドレス
User Name : 登録したユーザー名

has been activated.
Thank you.
Kind Regards,
Website Administration Team

NOTE: This email was automatically generated from aJile Systems, Inc. (http://www.ajile.com).

のようなメールが送られてきますので、ユーザー登録が終了したことが確認できます。

以上で登録したユーザー名とパスワードを使って http://ajile.com/ に ログインできるようになります。
引き続きJNIB開発ソフトウェアをダウンロードしたい場合は、JNIB開発ソフトウェアのダウンロードの方法 のページに進んでください。

関連情報・リンク


関連情報・リンク


JDKのダウンロードとインストール

aJile社(Valley Campus社)から 送られてきた JNIB に同梱されてきた手順書の必要事項の欄には
「 JDK or JRE 1.4 or higher. Avalable from Sun Microsystems at www.java.sun.com
とあります。 つまり、 JDK か JRE の バージョン1.4 以降がインストールされている必要があるということです。
このページでは、JDKのダウンロードとインストールの方法を解説します。

2008年5月31日 現在

JDK のダウンロード

はじめに、「JDK」とは「Java Development Kit」のことで、Javaの開発環境のことです。
また、「JRE」とは、「Java Runtime Environment」のことで、Javaの実行環境のことです。
これらのソフトウェアは、

よりダウンロードできます。
Java開発環境であるJDK には Java実行環境であるJRE も含まれていますので、今回は「JDK」の方をインストールしてみます。

JDK のインストール

関連情報・リンク


JNIB の RAM と NANDフラッシュ・メモリ

「Hello World」プログラムを構築するために、「 JEM Builder 」や「 シャレード(Charade) 」を使ってプログラムの構築・ダウンロード・実行を行ってきましたが、実を言うと今の状態では、この「Hello World」プログラムはJNIBの電源を切ってしまうと消えてしまいます。

この問題に対応するために どうしたらよいかを理解するために、ここで少しだけJNIBの内部のメモリ構造を見てみましょう。

JNIBのメモリ構成

JNIBにはメモリとして、16MBのPSRAM と 32MBのNANDフラッシュ が内蔵されています。 そのうち JNIBのCPUであるaJ-100が直接実行できるのは、RAMに書き込まれているプログラムだけです。

「Hello World」プログラムを構築するために 「Charade」による実行ファイルのダウンロードと実行 ページの例で示した シャレード(Charade) から 「 load.sod 」スクリプトを実行してプログラムをJNIBにダウンロードする方法では、プログラムは、直接 JNIBのRAMに書き込まれ、それを「 Run 」ボタンをクリックすることにより実行していたわけです。 但し、プログラムが書き込まれていたのは あくまでも「 RAM 」ですので、JNIBの電源を切ってしまいますとプログラムは消えてしまいます。

プログラムを開発・テストする段階では、このように開発用のPCからJNIBのRAMに直接ダウンロードして書き込む方法でも問題ありませんが、
プログラムが完成した後、JNIBを実際のフィールドで使ったり、お客様に納品しようとするためには、これでは使い物になりません。 第一、これでは「組み込み」システムとは呼べません。

そこでJNIBでは 電源が入れられた直後には、NANDフラッシュに保存されているプログラムを RAMにコピーしてからそれを実行する、という仕組みになっています。 つまり、完成したプログラムをJNIBに「組み込む」ためには、そのプログラムをNAMDフラッシュに書き込んでおけばよいことになります。 JNIBには、完成したプログラムをNAMDフラッシュに書き込む方法が いくつか存在しています。

以後、「Hello World」プログラム開発の続きとして、NAMDフラッシュ・メモリへアプリケーション・実行ファイルの書き込み方法について、簡単な方法から順にみてゆきます。

関連情報・リンク


JNIB開発ソフトウェアのインストール

JNIB開発ソフトウェアのダウンロードの方法 」でダウンロードしたファイルをインストールします。

2008年5月31日 現在

JNIB開発ソフトウェアのインストール

以上で、「 aJile JME/CDC 1.1 Runtime and Tools version 5.1.03 」のインストールが終了しました。

関連情報・リンク


JNIB開発ソフトウェアのダウンロードの方法

2008年7月29日 現在

ログインの方法

aJile社のサイトへのログイン方法です。
ユーザー登録が まだの済んでいない場合は、「 aJile社へのユーザー登録の方法 」を参考にして、先にユーザー登録をしてください。

ソフトウェアのダウンロード方法

JNIBの開発では理由がない限り、「 CDC 」の方を選らんだ方がよいようです。
ここでは、例として CDC の最新版をダウンロードしてみます。

aJile JME/CDC 1.1 Runtime and Tools version 5.2.01

関連情報・リンク


JTAGによるアプリケーションのNAMDフラッシュへの書き込み

JTAG接続による 構築されたアプリケーション・ファイルをJNIBのNAMDフラッシュへの書き込む手順について説明します。

基本的に この方法については、マニュアルの 2.3.2. JTAGによるアプリケーションの書き込み (Flashing Applications via JTAG) ページに記載されています。

このページでは、「Hello World」プログラム の構築が終わり、シャレード(Charade) からの アプリケーション・ファイルの ダウンロード と 実行が成功している状態であることを前提とします。

ここで、JTAGの衝突を避けるために、もし シャレード(Charade) が 起動されていたら、これを終了させてください。

その後、DOSプロンプトを開いて、カレント・ディレクトリを「 C:\JavaSample 」にします。

 cd \JavaSample

それから、「 %AJILE_HOME%\Host\jtagNandLoad 」というコマンドを入力します。


 %AJILE_HOME%\Host\jtagNandLoad

すると、NAMDフラッシュへの書き込みが開始されます。

そして、非常に時間がかかりますが、書き込みが終了すると、

のような表示になります。

これで、一旦JNIBの電源を切ってから、もう一度 電源を入れなおしても 「Hello World」プログラムが自動的に実行されるようになります。

関連情報・リンク


JTAGアダプタの接続

JNIB 開発キット(JNIB Development Kit) を購入すると、「JTAGアダプタ (JTAG adapter)」と言う付属品が同梱されてきます。
このJTAGアダプタを利用して JNIB と PC本体 を接続することにより、出来上がったプログラムのダウンロードやデバグ作業が行えるようになります。

2008年7月22日 現在

JTAGアダプタ の確認

「JTAGアダプタ」は、以下の写真のとおり、4つの部品に分かれています。

PC側 の パラレル・ポート

JTAGアダプタ を接続するためには、PC側に 「 パラレル・ポート(プリンター・ポート) 」が必要です。 コネクタは、下の写真のとおり、25ピン D-SUB メス型をしています。

これは、少し古い DELL社製の LATITUDE C640 というノートPCの後ろの写真です。

JTAGアダプタ の接続 完成図

JTAGアダプタの接続は以下の写真のとおりになります。

どのような順番で接続しても、結果的に、この写真のとおりに接続できればOKです。

関連情報・リンク




A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

.

%


「Charade」による実行ファイルのダウンロードと実行

「 JEM Builder 」で 新規プロジェクトを保存し、それから 実行用ファイルを実際に構築(ビルド)するところまでを 「JEM Builder」による実行ファイルの構築 (3)プロジェクトの保存と構築編 ページで説明しました。 その続きとして、
「 シャレード(Charade) 」を用いて、今作成した実行用アプリケーション・ファイルをJNIBにダウンロードし、実行してみます。

シャレード(Charade) の起動

まず、ウィンドウのスタート・メニューの aJileツールがインストールされているプログラム・グループから「 Charade for JNIB 」を起動してください。

この時、おそらく Consoleウィンドウの 最上部の左側に「 aJ-100/80: Running 」 と表示されています。
ここで、表示のそのすぐ下にある「 Halt 」ボタン と 「Reset」ボタンを 交互に何回かクリックして、表示が「 aJ-100/80: Halted 」になるようにします。 これでダウンロードの準備ができました。

実行ファイルのダウンロード

実行用のアプリケーション・ファイルをJNIBにダウンロードするには、「 C:\JavaSample 」ディレクトリにある「 load.sod 」 というシャレード(Charade) 用のスクリプト・ファイルを実行します。
そのためには、メニューバーから [File]-[Execute...]を選択します。

すると、「 Select command file to execute: 」ウィンドウが開いてきます。
ディレクトリを 「 C:\JavaSample 」に移動し、「 load.sod 」を選択してから「開く」ボタンをクリックします。

すぐに「 load.sod 」が実行されて、「 Hello World 」の実行用ファイルがJNIBへロードされてゆきます。 これには結構時間がかかります。

「 Hello World 」の実行

ダウンロードが終わったら、Consoleウィンドウの 上部にたくさん並んでいるボタンの中から 「 Run 」ボタンをクリックします。

図のように Consoleウィンドウに「 Hello World ! 」が表示されます。

これで JNIB用のソフトウェア開発の一連の操作方法が理解できたと思います。
しかし、これだけでは JNIBの上で実際にソフトウェアが実行されている、という実感が湧いてこないと思います。そこで、「Hello World」プログラムを少し改造してみます。 続きは「 「Hello World」の改造と再構築 」に進んでみてください。

関連情報・リンク


「Hello World」の改造と再構築

「Hello World」プログラムを構築する今までの一連の操作で、デバッガーソフト「シャレード(Charade)」の画面に「 Hello World! 」の文字が表示されました。 しかし、単に、PCのデバッガーの上に「 Hello World! 」と表示されても、本当に JNIBの上でソフトウェアが実行されているのかどうか、どうもピンと来ません。

そこで、実際にJNIBが動作していることを体感できるように、現在の「Hello World」プログラムを改造してみます。

「Hello World」プログラムのソースコードの変更

「Hello World」プログラムのソース・コード「 Hello.java 」を以下のように変更します。
//
//  Hello World ! 改訂版
//

import com.ajile.drivers.jnib.JNibSystem;

public class Hello
{
    public static JNibSystem mSys;

    public static void main( String[] args )
    {
        System.out.println( "Hello World !" );

        mSys = JNibSystem.get();

        int led = 0;
        while ( true ) {

            mSys.enableLed( led, false );

            led = (led + 1) % 4;
            mSys.beep();            // ビープ音

            mSys.enableLed( led, true );

            // 1秒 待ち
            try {
                Thread.sleep( 1000 );
            }
            catch ( Exception e ) {
            }

        }

    }
}

できれば、このソースをそのままの形で「 Hello.java 」ファイルへコピー&ペーストしてください。

プログラムの内容としては、JNIBについているLEDのうち、「COM1」 「COM2」 「CF」 「Error」の4つのLEDを順番に1秒毎に点滅させてゆきます。その際、各LEDが光りはじめる時にビープ音が鳴るというものです。

ソースのコンパイル

コンパイルの方法は前回の「 「Hello World」ソースコードの準備とそのコンパイル 」 にある方法と全く同じです。

cd C:\JavaSample
%JAVA_HOME%\bin\javac -bootclasspath %AJILE_HOME%\Runtime_cdc11\Rts;%AJILE_HOME%\Runtime_cdc11\btclasses.zip -source "1.4" -target "1.4" -d C:\JavaSample Hello.java

「JEM Builder」による再構築

実行用ファイルを再構築します。 既に「JEM Builder」に対して「Hello World」プロジェクトは登録されていますので、それをそのまま使います。先ほどから「JEM Builder」が起動したままであれば、単にビルド用の ボタンをクリックするだけでOKのハズです。 もちろん、メニュー[Project]-[Build]から再構築しても結構です。

もし、「JEM Builder」を既に終了させてしまっていたら、再起動してください。 通常「JEM Builder」は前回使ったプロジェクトを自動的に読み込んできますので、起動しただけで「Hello.ajp」が開いて来ると思います。 もし、「Hello.ajp」が自動的に開いてこない場合は、メニュー[File]-[Open Project]から、「C:\JavaSample」ディレクトリにある「Hello.ajp」ファイルを読み込んでください。

「Charade」による実行ファイルのダウンロード

前回の「 「Charade」による実行ファイルのダウンロードと実行 」を参考にして、
メニューバーから [File]-[Execute...]を選択して、「 C:\JavaSample 」ディレクトリにある「 load.sod 」を実行し、「Hello World」用実行ファイルをダウンロードします。

「Charade」による実行ファイルの実行

ダウンロードがすんだら、 「Run」ボタンをクリックして 新たらしい「Hello World」を実行してみてください。

問題がなければ、シャレード(Charade) の Consoleウィンドウに「 Hello World ! 」が表示された後、ビープ音とともに「COM1」 「COM2」 「CF」 「Error」の4つのLEDが順番に1秒毎に点滅してゆくハズです。 このとき、「COM1」 と 「COM2」のLEDは、光るとすぐに消えてしまいますが、これは仕様のようです。 一方、「CF」 と 「Error」のLEDは、1秒間 光続けています。

これで、JNIBが実際に動作しているところを体感できたと思います。

ところが 今の状態では、JNIBの電源を切ってしまうと、今ダウンロードした「Hello World」プログラムは消えてしまいます。 これについては、JNIBのメモリ構成についての知識が必要になりますので、引き続き「 JNIBのRAMとNANDフラッシュ・メモリ 」のページに進んでください。

関連情報・リンク


「Hello World」ソースコードの準備とそのコンパイル

JNIBに、お決まりの「Hello World」プログラムを実行させてみます。
「Hello World」プログラム と題していますが、現在 市販されている JNIB_L (通称「ブラックJNIB」もしくは「黒JNIB」)には ディスプレイがありませんので、 まずは PC上のデバッガーソフト「シャレード(Charade)」の画面に「Hello World」の文字を表示させてみます。

JNIB チュートリアル マニュアルに ソフトウェア開発の手順が記載されていますが、このマニュアルの内容もディスプレイが付いているタイプのJNIB(通称「ブルーJNIB」もしくは「青JNIB」)を前提としていますので、サンプルプログラムがほとんど参考になりません。 また、 説明されている開発環境が CLDC と CDC の両方について ごちゃ混ぜ で記述されているのでハッキリ言って非常に判りにくいです。
そこで、ここでは 開発環境として「 CDCを利用する 」 ということを前提として説明します。

2008年9月21日 現在

開発環境の確認

開発に先立って、以下の環境が整っていることを前提とします。

とします。 それから、

Windows上の 「 C:\JavaSample 」ディレクトリを このプロジェクト用のディレクトリとします。
他のディレクトリ下で作業する場合は、ご自身の環境でのディレクトリと読み替えてください。

ソースコードの作成

「Hello World」プログラムのソース・コードは、ここでは最も単純に
class Hello
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World !" );
    }
}

とします。

このソース・コードを 適当なテキスト・エディターにコピー&ペーストして、「 Hello.java 」という名前をつけて「 C:\JavaSample 」ディレクトリに保存します。

ソースのコンパイル

ウィンドウのコマンド・プロンプトを開きます。 そこで

cd C:\JavaSample


として、カレント・ディレクトリを「 C:\JavaSample 」にします。

その次に、ひじょ~~~に 長いですが、以下のようにJavaコンパイラのコマンドを1行で打ち込みます。 というか、打ち込むのは大変なのでコピー&ペーストして、変更が必要な部分だけ変更した方がよいでしょう。 実際の作業ディレクトリがこの例題と同じ「 C:\JavaSample 」を使っているのであれば、コピペした状態で そのまま実行しても問題ないハズです。


%JAVA_HOME%\bin\javac -bootclasspath %AJILE_HOME%\Runtime_cdc11\Rts;%AJILE_HOME%\Runtime_cdc11\btclasses.zip -source "1.4" -target "1.4" -d C:\JavaSample Hello.java

Javaコンパイラからのエラーが出なければ、「 C:\JavaSample 」ディレクトリに「 Hello.class 」という classファイルが 新たに出来上がっているハズです。


次は、出来上がった classファイルから 「 JEM Builder 」を使って JNIB上にダウンロードできる実行ファイルを作成します。
「JEM Builder」による実行ファイルの構築 (1)ランタイム登録編 に進んでください。

関連情報・リンク


「JEM Builder」による実行ファイルの構築 (1)ランタイム登録編

classファイルが出来上がりましたので、次に、アプリケーションをビルドする必要があります。
アプリケーションをビルドするには、「 JEM Builder 」という専用のソフトウェアを利用することになりますが、まず この「 JEM Builder 」に適切な設定を行う必要があります。
一度 適切な設定を行ってしまえば、あとはソース・コードを変更する毎にビルドを繰り返すだけなのですが、そのための初期設定が非常に複雑で判りにくくなっており、初めてJNIBのソフトウェアを開発する際に、最もつまずくところだと言えるでしょう。 ここでは、できるだけ詳しく解説してみます。

JEM Builder の起動

まず、ウィンドウズのスタート・メニューから aJileツールがインストールされているプログラム・グループの JemBuilderアイコンをクリックして「 JEM Builder 」を起動してください。

「 JEM Builder 」を初めて起動した場合、このような警告メッセージが表示されますが、 そのまま「了解」ボタンをクリックして次に進んでください。

「 JEM Builder 」が起動され、このような画面になります。

CDC 1.1 ランタイム・クラスのセットアップ

ここでは「 JEM Builder 」を初めて起動した、と仮定します。 まず 行わなければならないことは、「ランタイム・クラス」に関する設定を行うことです。 ちなみに この設定は、一度行っておけばよく、後はその設定を呼び出すだけになります。

メニューバーから [Project]-[Properties]を選択します。

すると、「 Project Properties 」ウィンドウが開いてきます。

ここでさらに 「 Project Properties 」ウィンドウの「 Embedded Runtime: 」欄の右側にある「 Define... 」ボタンをクリックします。 すると新たに 「 Select Runtime 」と表示されているウィンドウがポップアップします。

今 開いた 「 Select Runtime 」ウィンドウの画面左下にある「 New... 」ボタンをクリックします。 すると 画面右側の「 Edit 」セクションの各入力項目が白くなり、入力可能となります。

それぞれの項目に以下のような値を入力してください。 (この例では、ランタイムが C:\aJile にインストールされていると仮定しています。)

Name: aJile CDC 1.1
Classpath: C:\aJile\Runtime_cdc11\Rts
Root Directory: C:\aJile\Runtime_cdc11
JDK Classpath: C:\aJile\Runtime_cdc11\btclasses.zip;C:\aJile\Runtime_cdc11\foundation.jar
Select Runtime type: CDC

入力においては、上記の表から値をコピー&ペーストしてもよいですが、 「 Classpath: 」 「 Root Directory: 」 「 JDK Classpath: 」に関しては、それぞれの入力項目の右横のボタンをクリックして、「 Runtime path 」ウィンドウを表示させ、そこから Classpathディレクトリ や .jarファイル を選ぶこともできます。
例えば、以下の「 JDK Classpath: 」項目から開いた「 Runtime path 」ウィンドウでは、C:\aJile\Runtime_cdc11 ディレクトリ の「 btclasses.zip 」 と 「 foundation.jar 」を指定します。

すべての項目の入力が終了したら、「 OK 」ボタンをクリックしてください。 すると 画面左側の「 Runtimes 」セクションに 新たに「 aJile CDC 1.1 」というランタイムが登録されたことが確認できます。

ここでさらに 「 OK 」ボタンをクリックします。 「 Select Runtime 」ウィンドウが閉じて、「 Project Properties 」画面に戻ります。

戻ってきた「 Project Properties 」画面では、「 Embedded Runtime: 」欄に「 aJile CDC 1.1 」と表示されていることを確認してください。 それから 画面下の「 OK 」ボタンをクリックしてください。 「 Project Properties 」ウィンドウが閉じられ、「 JEM Builder 」が起動された時の画面となります。


「 JEM Builder 」における ランタイムの登録が済みましたので 次は、プロジェクトの登録に進みます。
「JEM Builder」による実行ファイルの構築 (2)プロジェクト登録編 ページに進んでください。

関連情報・リンク


「JEM Builder」による実行ファイルの構築 (2)プロジェクト登録編

「 JEM Builder 」でのランタイム登録を 「JEM Builder」による実行ファイルの構築 (1)ランタイム登録編 ページで説明しました。 その続きとして、 プロジェクトの登録をしてゆきます。

新しいプロジェクトの作成

メニューバーから [File]-[New Project]を選択します。

すると、このような警告メッセージが表示されますが、 そのまま「了解」ボタンをクリックして次に進んでください。

すると、「 New Project step 1 of 2 」というウィンドウが開いてきます。

今回の「Hello World」の例では、「 C:\JavaSample 」を作業用ディレクトリとしていますので、「 Enter the output directory: 」欄に 「 C:\JavaSample 」と入力してから、画面下の「 Next> 」ボタンをクリックします。

すると、「 New Project step 2 of 2 」というウィンドウが開いてきます。

「 Select a runtime: 」 「 Select a Configuration: 」の それぞれの項目で以下の表の値を選択してください。

Select a runtime: aJile CDC 1.1
Select a Configuration: JNibConfiguration

それから「 Finish > 」ボタンをクリックします。

JVMの作成

すると次に、JVM名を入力するための「 New JVM step 1 of 4 」というウィンドウが開いてきます。
「 Enter the name of the new JVM: 」欄に デフォルト値として既に「 JVM0 」と入力されています。 もし値が入力されていなかった場合は、「 JVM0 」と打ち込んでください。 それから 「 Next > 」ボタンをクリックします。

次に、クラス名を入力するための「 New JVM step 2 of 4 」というウィンドウが開いてきます。

この「Hello World」の例題では、クラス名を「 Hello 」としていますので、「 Enter the fully qualified class name: 」欄に 「 Hello 」と入力します。 それから 「 Next > 」ボタンをクリックします。

次に、クラスパスを入力するための「 New JVM step 3 of 4 」というウィンドウが開いてきます。

今回の「Hello World」の例題では、「 C:\JavaSample 」を作業用ディレクトリとしていますので、
「 Enter the Classpath for this JVM: 」欄に 「 C:\JavaSample 」と入力します。 それから 「 Next > 」ボタンをクリックします。

次に、JVMへのドライバーの追加をするための「 New JVM step 4 of 4 」というウィンドウが開いてきます。

JNIBでは、最低でも「 chardisp 」と「 jnibsystem 」の2つのドライバーが必要です。
Driversセクションの左側の「 Available Drivers: 」欄から 「 chardisp 」をクリックしハイライトさせ、隣にある右矢印ボタンをクリックして「 Installed Drivers 」欄へ移動させます。 同様に、「 jnibsystem 」も「 Installed Drivers 」欄へ移動させます。
それから 「 Finish > 」ボタンをクリックします。

プロジェクトの登録が終了するとこのような画面になります。 画面左側に「 JVM0 」という項目が追加されているのが確認できます。


次は、今作成したプロジェクトを保存し、実行用ファイルを構築します。
「JEM Builder」による実行ファイルの構築 (3)プロジェクトの保存と構築編 に進んでください。

関連情報・リンク


「JEM Builder」による実行ファイルの構築 (3)プロジェクトの保存と構築編

「 JEM Builder 」での新規のプロジェクトの登録を 「JEM Builder」による実行ファイルの構築 (2)プロジェクト登録編 ページで説明しました。 その続きとして、 プロジェクトの保存し、それから 実行用ファイルを実際にビルド(構築)してみます。

新しいプロジェクトの保存

メニューバーから [File]-[Save Project As]を選択します。

すると、保存用のダイアログ・ウィンドウが表示されますので、「 C:\JavaSample 」に「 Hello 」という名前でプロジェクトを保存します。 これで、「 C:\JavaSample\Hello.ajp 」という .ajpファイルが出来ているハズです。

アプリケーションの構築

実際にJNIBにダウンロードできる 実行用のアプリケーション・ファイルを構築(ビルド)するには、メニューバーから [Project]-[Build]を選択するか、もしくは、 ボタンをクリックします。

すると、アプリケーション・ファイルのビルド処理が始まり、その経過が画面の右側に表示されます。
問題がなければ、この図のように 最後に「 Build Finished 」と言う表示がされてビルド処理が終了します。

これで「 C:\JavaSample 」ディレクトリに 「 load.sod 」ファイルをはじめ、たくさんのファイルが作成されているハズです。
次は、「Charade」を用いて、今作成した実行用アプリケーション・ファイルを保存し、JNIBにダウンロードし、実行します。
「Charade」による実行ファイルのダウンロードと実行 に進んでください。

関連情報・リンク


コンパクト・フラッシュによるNAMDフラッシュへの書き込み (1)ロード・ファイルの作成

JTAGによるアプリケーションのNAMDフラッシュへの書き込み 」で紹介したような JTAGでの接続以外の方法でも アプリケーションの実行ファイルを NANDフラッシュ・メモリへ書き込む方法があります。

これは、いろいろなメディアやコネクションから アプリケーション実行ファイルを読み込み、NANDフラッシュ・メモリへ書き込むソフトウェアで「 NANDローダー 」と呼びます。 通常 NANDローダーは、適切なデバイス・ドライバとセットにして、 アプリケーションと共にNANDフラッシュに書き込んでおきます。 特にコンパクト・フラッシュ・カードに関しては、いつでも利用可能となるように、コンパクト・フラッシュ・カード用のデバイス・ドライバーはaJileランタイムシステムに含まれています。

この NANDローダーは、JNIB本体の電源投入時のDIPスイッチの設定により、各メディアやコネクション、例えば、コンパクト・フラッシュのメモリ・カードをはじめ、USBメモリ や ネットワーク経由、シリアル・ポート経由 で JNIB用の実行ファイルをNANDフラッシュ・メモリへ書き込むことができます。

ただし そのためには まず、NANDローダー用のファイルを作成する必要があり、 通常そのファイルは「 jnibKernel.data 」と名づけられています。 これについては、マニュアル「 2.3.1. NANDローダによるアプリケーションの更新 (Updating Applications via the NAND Loader) 」の パート1 に説明があります。

「 createNandFile.bat 」バッチ・ファイルによる NANDロード・ファイル の作成

例のごとく「Hello World」プログラムの構築の続きとして説明します。

DOSプロンプトを開いて、カレント・ディレクトリを「 C:\JavaSample 」にします。

 cd \JavaSample

それから、「 %AJILE_HOME%\Host\createNandFile 」というコマンドを入力します。


 %AJILE_HOME%\Host\createNandFile

すると、NANDローダー用のファイル「 jnibKernel.data 」 の作成が開始されます。

この図のように正常に終了すると、「 C:\JavaSample 」ディレクトリに「 jnibKernel.data 」というファイルが作成されているのが確認できるはずです。

JEM Builder による NANDロード・ファイル の作成

既に今までの説明で、NANDフラッシュ・メモリへ書き込むための「 jnibKernel.data 」というファイルが作成されているわけですが、2008年9月23日にリリースされた、aJile のJME CDC Runntime もしくは JME CLDC Runtime の バージョン 5.3.03 からは、もっと簡単な方法が提供され始めました。 それは、「 JEM Builder 」から NANDロード・ファイルの作成ができるようになったことです。
ここでは、それについても説明しておきます。

「 JEM Builder 」を起動し、「 C:\JavaSample 」ディレクトリにあるプロジェクト・ファイル「 Hello.ajp 」を開きます。
画面 左側のツリーから[Project]-[Output Files]を選択します。

すると、表示された右側の画面の下側に「 Enable NAND load file genaration 」欄が見えますので、そこにチェックを付けるだけです。
すぐ下にファイル名として「 jnibKernel.data 」が自動的に挿入されると思いますが、これは、よほど特別なことがない限り、変更する必要はないでしょう。

後は通常どおり、JEM Builderの ビルド用の ボタンをクリックするか、メニュー[Project]-[Build]を選択するかして、アプリケーションの再構築を行ってください。
アプリケーションの構築処理の最後に「 jnibKernel.data 」ファイルを作成する工程が付け加えられます。

ただし、NANDロード・ファイルの作成には、非常に時間がかかりますので、通常は、このチェックを外しておき、本当に必要な場合にだけ、この[Project]-[Output Files]画面を開いて、「 Enable NAND load file genaration 」欄にチェックをつけた方がよいでしょう。

このページでは、NANDロード・ファイルの作成の方法として

という2とおりの方法を説明しました。
次は、今 作成した NANDロード・ファイルを JNIBのNANDフラッシュ・メモリへ実際に書き込むことになります。
コンパクト・フラッシュによるNAMDフラッシュへの書き込み (2)NAMDローダーの起動 」ページに進んでください。

関連情報・リンク


コンパクト・フラッシュによるNAMDフラッシュへの書き込み (2)NAMDローダーの起動

NAMDローダーの起動によるNAMDフラッシュへの書き込みには、いろいろなメディアやコネクションからの読み込みがサポートされていますが、ここでは、最も基本となる方法として、メディアをコンパクト・フラッシュにのみ絞って、その手順を説明します。

他のメディアについては、マニュアルの「 2.3.1. NANDローダによるアプリケーションの更新 (Updating Applications via the NAND Loader) 」を参照してください。

CFカードによるNAMDフラッシュへの書き込み手順

1. FAT32でフォーマットされた コンパクト・フラッシュ・カード(CFカード)を準備します。

2. ウィンドウ上で「 C:\JavaSample 」ディレクトリの「 jnibKernel.data 」ファイルを、CFカードのルート・ディレクトリ にコピーします。

3. JNIBの電源を切ります。

4. JNIBの「 Slot A 」にCFカードを挿入します。 「カチッ」という音がするまで、しっかり差し込んでください。

5. JNIBの DIPスイッチの 10番を「 ON 」(上に倒す)にします。

6. JNIBの電源を入れます。 この時、「 ピ ピ ピ ピ ピ 」と 5回 音がなります。

7. 電源を入れたままの状態で、DIPスイッチの 10番を「 OFF 」(下に倒す)に戻します。 この時、「 ピー ピー ピ 」というビープ音がします。

8. CFカード から NANDフラッシュへのコピーが開始されます。 この時、約4秒毎に 短いビープ音がします。

9. 「 ピー ピー ピー 」と 3回の長いビープ音がしたら、コピー終了です。

10. JNIBの電源を切ります。

11. JNIBの「 Slot A 」から、CFカードを抜き取ります。

12. JNIBの電源を入れます。

13. NANDフラッシュに書き込まれた「Hello World」プログラムが自動的に実行されます。

関連情報・リンク


メイン・メニュー

「 組み込みJavaによる M2M 総合研究プロジェクト 」のメイン・メニューです。 管理人が個人的に調査した内容をまとめたものです。

JNIB開発環境 構築の手順

aJile社(日本代理店: Valley Campus 社)が 提供している ピュアJavaによるネットワーキング組み込み系コンピュータ 「 JNIB (Java Network Interface Box) 」について と その開発環境構築について解説しています。

JNIB ソフトウェア開発の手順 - お決まりの「Hello World」プログラムの構築 -

新しい 言語や開発環境を学習する際には お決まりの「Hello World」プログラムの構築を実際に行ってみて、JNIB用の実行ファイルの構築方法、JNIBへのダウンロード および 実行の方法 を具体的に学習してみます。

JNIB マニュアル(日本語翻訳版?)

技術一般情報

関連情報・リンク


環境変数の設定

JNIBの開発環境では、特定の「環境変数」が定義されていることを前提としています。 その「環境変数」の設定の方法を解説します。

2008年7月24日 現在

環境変数について

JNIBの開発環境では、「 AJILE_HOME 」 と 「 JAVA_HOME 」 という2つの環境変数を定義する必要があります。 これらの環境変数は、ユーティリティー用のバッチ・ファイル等の中で利用されていますので、これらの環境変数が定義されていなかったり、または、定義が間違っていた場合には、正常に動作しなくなってしまいます。

これらの環境変数では それぞれのソフトウェアが存在するディレクトリへのパスを指定します。 ここでは具体的な値としては、JNIBの開発環境のディレクトリを示す環境変数「 AJILE_HOME 」には「 C:\aJile 」、 また、JDKのディレクトリを示す環境変数「 JAVA_HOME 」 には 「 C:\Java\jdk6 」という値を設定することにします。 もし、上記以外の場所へソフトウェアをインストールしている場合は、それに合わせて、適切な値に変更してください。

環境変数の設定方法

それでは環境変数の具体的な設定方法を図解します。 ここでは ホストPCのOSは「 Windows XP 日本語版 Service Pack 2 」であることを前提としています。

環境変数の設定画面を開く

Windows XP で 環境変数の設定画面を開くには、

または、コントロール パネル が クラシック表示の場合には、

または デスクトップより、

で開くことができます。

画面の上半分が 「ユーザ環境変数」の設定画面で 現在ログインしているユーザのみに適応される環境変数です。 一方、画面の下半分が 「システム環境変数」の設定画面で 登録されているすべてのユーザに適応される環境変数です。 PCの利用状況に応じて使い分ければよいでしょう。

新規環境変数の登録

ここでは、ユーザー環境変数 として、 環境変数名「 AJILE_HOME 」に 変数値「 C:\aJile 」をセットしてみます。
まず、ユーザー環境変数エリアの[ 新規(N) ]ボタンを押します。 すると「新しいユーザー変数」という画面が開きますので、「変数名」と「変数値」という それぞれの欄に値を入力します。

同様に 環境変数名「 JAVA_HOME 」に 変数値「 C:\Java\jdk6 」をセットします。

すると最終的に、以下の画面のようになります。

[OK]ボタンを押してを終了させてから、ウィンドウを再起動します。 (再起動しなくても動作するようですが、念のために再起動することをお勧めします。)

設定した環境変数の確認方法

ウィンドウの再起動後、今設定した環境変数が正常に設定されているか確認してみます。
先ず、コマンド・プロンプトを開きます。 そこで


> echo %AJILE_HOME%

並びに


> echo %JAVA_HOME%

と打ち込むと、下図のように それぞれの 環境変数の値が表示されます。

関連情報・リンク


用語集

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

.

%

関連情報・リンク


高速アプリケーション・ローディング

JNIBの ソフトウェアを開発する工程では、 アプリケーションを構築した後、そのバイナリ・ファイルをJNIBのRAMへローディングする必要があります。 しかし、このアプリケーション・ファイルを ディバッガーの「シャレード(Charade)」から JTAG接続を経由してJNIBへローディングするのは、開発工程で何度も繰り返される作業でありながら、非常に時間がかかる工程です。 これでは、効率的な開発環境とは言えません。

この問題の解決策として、aJile社は、2008年9月2日にリリースされた「 JME CDC Runtime 」 の バージョン 5.3.01 にて、「 高速アプリケーション・ローダー (Fast application loader) 」機能を新たにサポートしました。 同バージョンの「 JME CDC Runtime 」のリリース・ノートには、この機能により、従来のJTAG接続でのローディングより 十数倍 速くローディングできる、とあります。

また、この機能に関する説明が 「 JNIB ユーザーズ・ガイド (JNIB User's Guide) 」の 「 2.6. 高速アプリケーション・ローディング (Fast Application Loading) 」にあると書かれています。

基本的な考え方としては、 転送スピードが遅いJTAG経由でのダウンロードに代わって、高速なEthernetを使ってファイルを転送してしまいましょう、というものです。 そのために、開発用PC上ではサーバーとなるソフトウェアを事前に走らせておき、JNIBからそのサーバーにネットワーク接続してファイルをダウンロードする形態をとります。 これを実現するために、JNIB側には あらかじめ 「 アプリケーション・ローダー: Application Loader (AppLoader) 」と呼ばれるソフトウェアをインストールしておきます。 また、JNIBからサーバーへの接続を指示するためには、「シャレード(Charade)」からJTAG経由でJNIBの アプリケーション・ローダーへ コマンドを送ってやります。 このコマンドを受け取ったアプリケーション・ローダーが ネットワーク経由でサーバーへの接続を開始するわけです。

この「 高速アプリケーション・ローダー (Fast application loader) 」機能は、たいへん魅力的な機能ではありますが、実際に実現しようと思っても、その方法は マニュアルからだけでは非常に判りにくくなっています。

そこで、私も試行錯誤の末 わかったのですが、この「 高速アプリケーション・ローダー (Fast application loader) 」機能を実現する方法の手順をここに具体的に示しておきます。

前提条件

アプリケーション・ローダー: Application Loader (AppLoader) の NANDフラッシュへのロード

まず、JNIBのNANDフラッシュ・メモリへ 「 アプリケーション・ローダー: Application Loader (AppLoader) 」をインストールします。
具体的にインストールしなければならないファイルは「 C:\aJile\Host\AppLoader 」ディレクトリにある「 jnibKernel.data 」ファイルというファイルです。 この「 jnibKernel.data 」ファイルは、 aJile社からダウンロードした「 JME CDC Runtime Version 5.3.03」をインストールした段階で既に含まれていますので、新たに作成する必要はありません。

JNIBのNANDフラッシュ・メモリへ書き込む方法は、「 コンパクト・フラッシュによるNAMDフラッシュへの書き込み (2)NAMDローダーの起動 」ページの方法を参考にして下さい。 但し、CFカードへコピーするのは、「 C:\JavaSample 」ディレクトリにある「 jnibKernel.data 」ファイル ではなく、「 C:\aJile\Host\AppLoader 」ディレクトリにある「 jnibKernel.data 」ファイルです。 絶対に間違えないでください。

( 私は、どうしても 「 C:\aJile\Host\AppLoader 」ディレクトリにある「 jnibKernel.data 」ファイルを NANDフラッシュに書き込まなければならない、ということが判らず、長時間 ハマってしまいました。 )

「 AppServer.bat 」によるサーバーの起動

「 C:\JavaSample 」ディレクトリにある「Hello World」プログラムを 従来どおり、「 JEM Builder 」で アプリケーション構築してください。 このとき、「 C:\JavaSample 」ディレクトリ に「 AppServer.bat 」というバッチ・ファイルが 自動的に作成されているハズです。 このバッチ・ファイル「 AppServer.bat 」をエクスプローラーからダブル・クリックして実行しておきます。

「 AppServer.bat 」が 問題なく起動すると、このような画面が現れるハズですので、そのまま走らせておいてください。

【注意】 もし、「 AppServer.bat 」ファイルが 自動的に作成されていない場合は、お使いの ランタイムが「 JME CDC Runtime Version 5.3.03」 以降のバージョンであるかどうかを確認してください。

【注意】 他のアプリケーションをネットワーク経由でJNIBへダウンロードするには、今実行されている「 AppServer.bat 」を終了させ、ダウンロードしたいアプリケーションのディレクトリにある「 AppServer.bat 」を改めて起動する必要があります。

「シャレード(Charade)」からの 「 AppLoader.sod 」スクリプトの実行

実行用のアプリケーション・ファイルをJNIBにダウンロードするために、「 C:\JavaSample 」ディレクトリにある「 AppLoader.sod 」 というシャレード(Charade) 用のスクリプト・ファイルを実行して、 JNIB上にあるアプリケーション・ローダーを起動させます。

「シャレード(Charade)」を起動して、メニューバーから [File]-[Execute...]を選択します。

すると、「 Select command file to execute: 」ウィンドウが開いてきますので、 ディレクトリを 「 C:\JavaSample 」に移動し、「 AppLoader.sod 」を選択してから「開く」ボタンをクリックします。

すると、「シャレード(Charade)」の Consoleウィンドウには、
[AppLoader]-> -- JNIB target script for starting the AppLoader
[AppLoader]-> -- Apploader must be in NAND flash as the PBL
[AppLoader]-> 
[AppLoader]-> Halt
[AppLoader]-> Reset
[AppLoader]-> 
[AppLoader]-> -- Setup PLL
[AppLoader]-> set 0xFFFF00A4 0xEC6
[AppLoader]-> 
[AppLoader]-> -- Change Chip Select 0 to 16 bits
[AppLoader]-> set 0xFFFF0080 0x54D
[AppLoader]-> 
[AppLoader]-> -- Enable chip selects 4:7
[AppLoader]-> set 0xFFFF00A0 0x3C000
[AppLoader]-> 
[AppLoader]-> -- Activate the FPGA so that the FPGA RAM may be loaded
[AppLoader]-> set 0x00C00000 0x3
[AppLoader]-> set 0x00C00000 0x1
[AppLoader]-> 
[AppLoader]-> -- Setup for bootloader
[AppLoader]-> set 0 #e5 #1000078 #4144 #1000000 0 0
[AppLoader]-> set #f4 #1A0 #ff3e0280 4300
[AppLoader]-> 
[AppLoader]-> @setup
Textio mode       (tx): on
[AppLoader]-> bell
[AppLoader]-> 
[AppLoader]-> switch textio on
Textio mode       (tx): on
[AppLoader]-> run
[AppLoader]-> 
[AppLoader]-> -- Load symbolic info
[AppLoader]-> load build.jcf 1
Reading file: build.jcf
== SYSTEM ===========================
=x Bin file: build_program.bin
== [jemcfg 3.10.05 September 27, 2008 3:16:15 PM PDT executive]

-- VM #0 ----------------------------
-- RAM start: 00000000  end: ffffffff (0 Bytes)
-- ROM start: 00000000  end: ffffffff (0 Bytes)
-+ Map file: JVM0.map

File 'build.jcf' loaded successfully
[AppLoader]-> 
vm.0 charadeIO active 
[TEXTIO.0]->JNib CF Manager Initializing
[TEXTIO.0]->
[TEXTIO.0]->Servertec (R) Application/Web Server aJile Edition Version 2.1.4.1 09/04/2005 Open Source Release
[TEXTIO.0]->Copyright (C) 1998-2005 Servertec. All rights reserved.
[TEXTIO.0]->
[TEXTIO.0]->DHCP: Committed DHCP boot options from server 172.28.36.1
[TEXTIO.0]->DHCP: Server assigned IP: 172.28.36.102
[TEXTIO.0]->JNIB CMS ready at http://172.28.36.102:8080/cms
[TEXTIO.0]->Enabling DHCP
[TEXTIO.0]->
[TEXTIO.0]->------ build_program.bin -------
[TEXTIO.0]->jemcfg 3.10.05 September 27, 2008 3:16:15 PM PDT executive 
[TEXTIO.0]->Loaded 2047848 bytes from build_program.bin file in 4 seconds.
[TEXTIO.0]->--------------------------------
[TEXTIO.0]->
[TEXTIO.0]->----- build_systemseg.bin ------
[TEXTIO.0]-> Configuration: JNibConfiguration
[TEXTIO.0]-> Runtime: aJile CDC 1.1 Version 5.3.03
[TEXTIO.0]-> ucode version: 0x82
[TEXTIO.0]->C:\JavaSample\build_systemseg.bin
[TEXTIO.0]->jemcfg 3.10.05 September 27, 2008 3:16:15 PM PDT executive 
[TEXTIO.0]->C:\aJile\Runtime_cdc11\ucode\jnib_uram.bin
[TEXTIO.0]-> created on Sat Sep 20 06:59:41 2008 (GMT)
[TEXTIO.0]->Loaded 17445 bytes from build_systemseg.bin file in 794 msec.
[TEXTIO.0]->--------------------------------
vm.0 breakPoint: [Application loaded...click on "Reset" before running.]
**** Interrupt pending ****
vm.0 charadeIO active 
[TEXTIO.0]->TimeZoneData NAND storage area is unreadable...defaulting to GMT.
[TEXTIO.0]->JNib CF Manager Initializing
[TEXTIO.0]->Hello World !

のように表示されます。

ここでは、「シャレード(Charade)」の Consoleウィンドウからの指示に従い、ダウンロード終了後、「 Reset 」ボタンをクリックしてから、「 Run 」ボタンをクリックして 「 Hello World 」プログラムを起動しています。

この時、開発用PC上の 「 AppServer.bat 」の画面は、

のように表示され、JNIB側からの接続があり、「 build_program.bin 」ファイル と 「 build_systemseg.bin 」ファイル がダウンロードできたことが判ります。

実際のダウンロード時間の計測結果

これで、ネットワーク経由での高速ダウンロードができるようになりました。 それでは、どれだけ ダウンロードが早くなったかを実際にダウンロード時間を測定してみて検証してみます。

まず、実験に使った「 Hello World 」プログラムの場合。
転送されるファイルの大きさとして、build_program.bin が 1998KB、build_systemseg.bin が 18KB となっています。
このファイルの大きさで、私の開発環境では、従来のJTAG経由でのダウンロードには 1分40秒かかっていましたが、 ネットワーク経由では、それが 18秒 となりました。

「 Hello World 」プログラムは非常に小さいプログラムですので効果が5倍程でしたが、これでも開発効率は格段に良くなります。もっと大きなプログラムではその効果が 実際に10倍以上になると考えられます。

皆さんも是非、お試しください。

関連情報・リンク


JNIBに関するトラブル対策

このページは、JNIBに関するトラブルへの対策や解決方法に関するページへのリンク集です。

2008年7月24日 現在

JNIBに関するトラブル対策 リンク集

関連情報・リンク


JNIB チュートリアル

「 JNIB Tutorial 」 の日本語翻訳です。
「 aJile JME/CDC 1.1 Runtime and Tools version 5.1.03 (18.05.2008) 」 に含まれていた 「March 8, 2007 Version 1.4」に基づいています。

【ご注意】 ここにあるマニュアルの日本語訳は、JNIB 開発元の aJile社 や 日本代理店の Valley Campus 社 からの公式なものではありません。 この翻訳は、あくまでも サイトの管理人が 個人的な目的で行ったものであり、内容の信頼性を保障するものではありません。

目次

関連情報・リンク


JNIBチュートリアル ― 第1章 チュートリアル用の例題 ―

1.1. はじめに (Getting Started)

JNIBのJava開発を始めるためには、aJileソフトウェア・ツールキットをインストールする必要があります。これ以降の説明では、aJileツールは %AJILE_HOME% ディレクトリ(通常 %AJILE_HOME%=c:\ajile )にインストールされており、かつ、 Java Development Kit 1.4.x がインストールされていると仮定します。

サンプルのソースコードは、「 %AJILE_HOME%\tutorial\src 」ディレクトリでみつけられます。

このサンプルは JNIBシステム・ドライバ(jnibsystem) と キャラクター・デスプレー・ドライバー(chardisp) が いかにして キー押下イベントをキャッチし、表示を更新し、LEDの点滅をさせるのに利用されるのかをデモします。 メイン・スレッドは LEDの点滅に使われます。 キーの押下が キャラクター・デスプレー と 標準出力へレポートされるようにするために、イベント・ハンドラはシステム・スレッドへあてがわれます。 ソースコードの各部については以下で詳細に説明します。


//============================================================
//                Copyright (c) 2006 aJile Systems
//                     All Rights Reserved
//============================================================

import com.ajile.drivers.DriverException;
import com.ajile.drivers.characterDisplay.CharacterDisplay;
import com.ajile.drivers.jnib.JNibSystem;
import com.ajile.drivers.jnib.JNibEventHandler;

import com.ajile.jem.rawJEM;

/**
 * Tutorial example for the JNIB.
 *
 */
public class Tutorial
    implements JNibEventHandler
{

    /** System Controller */
    public JNibSystem mSys;

    /** Character display */
    public CharacterDisplay mDisp;

    private static final String KEY_NAME[] = {"",
                                              "Exit    ",
                                              "Value DN",
                                              "Value UP",
                                              "Select  ",
                                              "Go      ",
                                              "Item DN ",
                                              "Item UP ",
                                              "Menu    "};

図1-1: Tutorial.java - クラス変数と定数

チュートリアル・クラス は JNibEventHandler インターフェース を implements しています。 (このインターフェースは、キーが押された または 放された ことを検知する JNIBシステム・スレッドと呼ばれる handleJNibEvent ハンドラーであることを指定します。

このハンドラの実装は「図1-4 Tutorial.java - Event handler and main.」で示されています。 JNIBシステム・スレッド (JNibSystem) と キャラクター・デスプレー(CharacterDisplay) のクラスは KEY_NAME 文字列とともに定義されています。


    /**
     * Constructor
     */
    public Tutorial()
    {
        // show the FPGA version
        int ver = rawJEM.getInt( 0x00c00004 );
        System.out.println( "FPGA - version 0x" + Integer.toHexString( ver ) );

        // get the system (also fires up the system thread)
        mSys = JNibSystem.get();
        if ( mSys == null )
        {
            // something went wrong
            throw new RuntimeException( "No JNIB System Available!" );
        }

        // Intendify event handler "handleJNibEvent" 
        mSys.registerEventHandler( this );

        // get the configured display
        mDisp = CharacterDisplay.get();
        if ( mDisp == null )
        {
            // something went wrong
            throw new RuntimeException( "No Character Display Available!" );
        }

        // Initialize character display
        mDisp.clearDisplay();

        mDisp.setLines( 2 );
        mDisp.setFont( 0 );

        // Startup message
        mDisp.write( " JNIB Tutorial  " );

        mDisp.setCursorPos( 1,0 );
        mDisp.write( "Press any button" );
    }

図1-2: Tutorial.java - コンストラクタ

Tutorialクラスのコンストラクターでは、いかに rawJEM クラスが FPGAバージョン・ナンバーが入っている特定のアドレスをアクセスするのに使われているか、を示しています。 JNIBシステムで、mSysオブジェクトを使って システム・スレッドを開始するインスタンスが作成されています。 イベント・ハンドラもシステム・タスクに登録されていることに注意してください。

同様に、キャラクター・デスプレーでも インスタンスを作成し初期化されています。 そして、初期値としてのテキストがディスプレーに表示されています。


    /**
     * Simple LED blinking.
     */
    public void blinkLED()
    {
        // Loop forever to cycle the 4 programmable LEDs
        int led = 0;
        while ( true )
        {
            // Turn on off LED
            mSys.enableLed( led, false );

            // Advance to the next LED
            led = (led + 1) % 4;

            // Turn on off LED
            mSys.enableLed( led, true );

            // Wait for 1/8 sec
            try
            {
                Thread.sleep( 125 );
            }
            catch ( Exception e )
            {
            }
        }
    }

図1-3: Tutorial.java - blinkLED メソッド

blinkLEDメソッドは main により起動され、無限ループの中で処理を続けます。 4つのプログラマブル LED(Error, CF, COM1, COM2)は、カンウンター変数 led を4で剰余演算することにより、オンとオフが繰り返されます。 このスレッドは、点滅するために、125ミリ秒の間隔でスリープすることに注意してください。


    /**
     * Handles a JNIB Event.
     *
     * <strong>Do Not Block!</strong>
     *
     * @param event MJ Event (JNibEvent_xxxx)
     * @param val Value associated with Event (keycode, dip value)
     */
    public void handleJNibEvent(
        int event,
        int val )
    {
        if ( event == JNIBEVENT_KEYDOWN )
        {
            // send out a beep to annoy nearby people
            mSys.beep();
        }

        // Update the character display with the key pressed.
        mDisp.setCursorPos( 1,0 );
        mDisp.write( "Key ID: ");
        mDisp.setCursorPos( 1,8 );
        mDisp.write( KEY_NAME[ val ] );

        // Echo the event and value to system out.
        System.out.print( "Event ID = " );
        System.out.print( event );
        System.out.print( ", Value = " );
        System.out.println( val );
    }

    /**
     * Program main entry.
     *
     * @param args Command line args
     */
    public static void main(
        String[] args )
    {
        System.out.println( "JNIB Tutorial" );

        Tutorial tut = new Tutorial();
        tut.blinkLED();

        System.out.println( "JNIB Tutorial Finished!" );
    }
}

図1-4: Tutorial.java - イベントハンドラ と main

イベント・ハンドラ handleJNibEvent は、キーが押された または 放された 時はいつでもJNIBシステム・スレッドにより呼び出されます。 キーが押されたことが検出された場合はいつも、スピーカーからビープ音がなります。 キャラクター・デスプレーのカーソル位置がセットされます。

「Event ID」と「Value」も システム・アウトにエコーされます。 表示を整えるために、プリント・ラインが利用されているのに注意してください。

mainメソッドは テスト用のメッセージを出力、Tutorialクラスのインスタンスを作成、 および、blinkLEDメソッドの起動を行っています。 blinkLEDメソッドから、戻ってくることがないので、実は最後のメッセージの出力処理は実行されることはないことに注意してください。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第1章 チュートリアル用の例題 ―

1.2. JNIB用 Javaコードのコンパイル (Compiling Java code for JNIB)

JNIB用 Javaコードのコンパイルは 簡単です。 要するにアプリケーションは、Java 1.4 をベースとした aJile CLDC 1.1 runtime system と共にクロス・コンパイルされる必要がある、ということです。 よって、JDK 1.4 または それ以降のバージョンがインストールされている必要があります。 もし、classpath について不明な点があれば、Sunの 「javac」のドキュメントを参照してください。

クロス・コンパイルには、以下のように、javac コンパイル・コマンドライン に bootclasspath オプションの設定が必要となります。

 -bootclasspath %AJILE_HOME%\Runtime_cldc11\Rts;%AJILE_HOME%\Runtime_cldc11\classes.jar

「aJile CLDC 1.1 runtime classes」が、「%AJILE_HOME%\runtime_cldc11\Rts」により指定されており、 「Sun's CLDC 1.1 classes」が、「%AJILE_HOME%\runtime_cldc11\classes.jar.」 により指定されています。

p(){font-weight:700}. もし、JDK1.4以降のバージョンを利用している場合は、javac コンパイル・コマンドラインに 以下のようなバージョン・オプションを指定していることを確認してください。

 -source "1.4" -target "1.4" 

チュートリアルの例題をコンパイルするためには、以下のコマンドを MS-DOSのコマンド・ラインから実行します。 ただし、ここでの表示が複数行にまたがっていても、それぞれのコマンドは1行であることに注意してください。 また、コンパイラ・コマンド「javac」の代わりにJavaの統合開発環境(IDE)を利用してもよいですが、その場合は、適切な classpath の設定を行ってください。

cd %AJILE_HOME%\tutorial\src
%JAVA_HOME%\bin\javac -bootclasspath %AJILE_HOME%\Runtime_cldc11\Rts;%AJILE_HOME%\Runtime_cldc11\classes.jar -d %AJILE_HOME%\tutorial\classes Tutorial.java


このコマンドで、標準のJavaクラスファイルである Tutorial.class が AJILE_HOME\tutorial\classesディレクトリに作成されます。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

組み込みシステムの実行において、クラス・ファイルはコンパイルされるべきコードとともにリンクされ、かつ配置されていなければなりません。 aJileツール連携は、自動的に必要なランタイム・コンポーネントを決定し、組み込みシステムに適したターゲット・バイナリを生成する静的リンク技術を用いています。

aJileの リンカ/ローダー ツール連携は非常に強力です。 上級ユーザーにはビルド・プロセスのいろいろな側面をコントロールできるようにします。 しかしながら、高度な機能のほとんどが、JEM Builder グラフィカル・ビルド・ツールにまとめられています。 JEM Builder は JINB アプリケーションの構築を迅速に、かつ容易にします。

2.1. JEM Builder の実行 (Running JEM Builder)

ウィンドウズのスタート・メニューから JEM Builderを実行するには、aJileツールがインストールされているプログラム・グループの JemBuilderアイコンをクリックします。 すると、以下のようなウィンドウが開きます。

図 2-1: JEM Builder opening window.

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

2.2. 新しいプロジェクトの作成 (Creating a New Project)

まず初めに行うべきことは、新たなプロジェクトを作成することです。 そのためには、メニューから[File]-[New Project]を選択するか、ツール・バーの 「New Project」アイコンをクリックします。 プロジェクト作成プロセスには2つのステップがありますので、新規プロジェクト・ウィザードのガイドに従ってください。

p<{padding-top:1em}. ステップ1 : 出力用のディレクトリを入力します。

 c:\ajile\tutorial\build

p<{padding-top:1em}. ステップ2 : ランタイム・システム・ペインのドロップ・ダウンのリストより、「aJile CLDC 1.1」を選択します。

 aJile CLDC 1.1,

同様に、「Configuration」ペインより、JNibConfiguration を選んでください。

もし、「aJile CLDC 1.1」がない場合は、「Define...」ボタンをクリックしてから、「 2.4. CLDC 1.1 ランタイム・クラスのセットアップ (Setting up CLDC 1.1 runtime classes) 」に従い、セットアップを進めてください。[1]

1 このマニュアルでは、「aJile CLDC 1.1」がない場合、としておりますが、もし CLDC の代わりに CDC を利用している場合は、「 2.5. CDC 1.1 ランタイム・クラスのセットアップ (Setting up CDC 1.1 runtime classes) 」に従ってください。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

2.3. JVMの作成 (Creating the JVM)

新規オブジェクト・ウィザードが終了後、新規 JVM ウィザードを実行します。 新規JVMウィザードは4つのステップからなります。

p<{padding-top:1em}. ステップ1: [名前] 新しいJVMに名前を付けます。 デフォルトでは「JVM0」となっています。

 JVM0

p<{padding-top:1em}. ステップ2: [メイン・クラス名] main() を含むクラスの完全修飾名を入力してください。 今回の例では、以下のように「Tutorial」と入力してください。

 Tutorial

p<{padding-top:1em}. ステップ3: [クラスパス] mainプログラムをコンパイルするのに利用されるクラスパスが尋ねられます。 コンパイル・フェーズ時に使われるクラスパスを入力しください。 しかし、 「aJile CLDC 1.1 runtime classes(c:\aJile\runtime_cldc11\Rts)」や 「Sun's CLDC 1.1 classes (c:\aJile\runtime_cldc11\classes.jar)」を含めないでください。 それらは、JEM Builder 組み込みランタイムで定義されます。

 C:\aJile\Tutorial\classes

p<{padding-top:1em}. ステップ4: [JVMへのドライバーの追加] もしあれば。このJVMで管理されるハードウェア・リソースを決定します。 JNIBでは、アプリケーションに他のどんなドライバーが必要かどうかに関わらず、以下のドライバーが含まれている必要があります。

 chardisp
 jnibsystem


これらのドライバーが含まれた後、「Finish」をクリックします。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

2.4. CLDC 1.1 ランタイム・クラスのセットアップ (Setting up CLDC 1.1 runtime classes)

まず JEM Builder を始めるにあたり、JEM Builder に aJileのCLDC 1.1 ランタイム・クラスが どこにあるかを教えておく必要があります。 そのために メニューバーから [Project]-[Properties]を選択。

「Embedded Runtime」欄のドロップ・ダウン・リストから 「aJile CLDC 1.1」を選択してください。 ダイアログ・ボックの「ok」ボタンをクリックすると、JEM Builder のメイン・ウィンドウに戻ります。

もし、「Embedded Runtime」欄のリストが空だったら、 以下に従って 「定義(Define)」する必要があります。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

2.5. CDC 1.1 ランタイム・クラスのセットアップ (Setting up CDC 1.1 runtime classes)

初めて CDCアプリケーションを構築する前に、JEM Builder に aJileのCDC 1.1 ランタイム・クラスがどこにあるかを教えておく必要があります。 そのために、メニューバーから [Project]-[Properties]を選択します。

「Select Runtime」ウィンドウにて、「New...」ボタンをクリックしてください。 そして以下のように項目を入力してください。 (この例では、ランタイムが C:\aJile にインストールされていると仮定しています。)

Name: aJile CDC 1.1
Classpath: C:\aJile\Runtime_cdc11\Rts
Root Directory: C:\aJile\Runtime_cdc11
JDK Classpath: C:\aJile\Runtime_cdc11\btclasses.zip;C:\aJile\Runtime_cdc11\foundation.jar
Select Runtime type: CDC

以下のダイアログ・ウィンドウが示すとおり、JDK クラス・パスは CDC 1.1 「btclasses.zip」と 「foundation.jar」クラスを含む必要があります。

CDCアプリケーションを構築する際は、ドライバーセットアップ ページで「CDCruntime」ドライバを含めるのを忘れないように注意してください。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

2.6. プロジェクトの保存 (Saving the Project)

新規プロジェクト と 新規JVM ウィザード が終了したら、[File]-[Save Project]を選択する、または、ツールバーにあるプロジェクト保存アイコンをクリックすることにより、プロジェクトの設定を保存てください。

ファイル選択ウィンドウが開きますので、プロジェクトのファイル名を選択してください。
JEM Builderのプロジェクト・ファイルの名前には、 慣習として「.ajp」 という拡張子をつけます。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第2章 JEM Builder によるアプリケーションの構築 ―

2.7. アプリケーションの構築 (Building the Application)

チュートリアルをビルドするために、ツールバーにある「Build Project」ボタン(赤くて丸い矢印)をクリックします。 これにより、はじめの段階で「新規プロジェクト(New Project)」ウィザードで指定したディレクトリの下に ディレクトリやファイルを作成します。 画面は以下のようになるでしょう。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第3章 シャレードを使ってのアプリケーションのロード ―

3.0. シャレードを使ってのアプリケーションのロード (Loading Applications using Charade)

ビルドが終了したら、シャレード(Charade) を用いてアプリケーションをロード、そして実行することになります。 JNIBに電源が入っており、PCのパラレル・ポートとJTAGポッドで接続されていることを確認してください。 JNIB本体からでてきている JTAGケーブルのコネクタには突起があり、JTAGポッドには一方向でしか挿入できません。 シャレード(Charade) は、インストール時にセットアップされた「giveio.sys」と呼ばれるパラレル・ポート・ドライバーを使っています。

シャレード(Charade) は、 aJileツールをインストールした際に作成されたプログラム・グループの Charadeアイコンをクリックすることにより ウィンドウズのスタート・メニューから実行できます。 もし、「Could not communicate with the target message」というエラーと共に シャレード(Charade) の起動に失敗した場合は、 表示されたメッセージの内容をもとにして状況を確認してください。 シャレード(Charade) は PCのパラレル・ポートが 0x288 か 0x378 であることを前提としていることに注意してください。 もし、お使いのPCが別のアドレスを使っている場合は、「c:\ajile\charade\JNIB.cfg」ファイルを開き、「PORT_ADDR」の部分を書き換えてください。

シャレード(Charade)の「Halt」ボタン、続いて「Reset」ボタンを押すことにより CPUのコントロールを得ることができます。

次に、アプリケーションのJNIBへのロードです。 これには、いくつかの方法があります。 最も簡単な方法は、「File」タブから「Execute...」コマンドを選択することです。 「execute command」用のウィンドウが開きますので、 そこから以下のファイルを開きます。

 c:\ajile\tutorial\build\load.sod


「load.sod」は、JEM Builderにより自動的に作成された 「Charade script」です。
このスクリプトには、JNIBをリセットし、アプリケーションをロードするコマンドが含まれています。 別な方法として、Charade の 「Command:」ウィンドウで 以下のコマンドをタイプすることにより、このファイルを操作できます。

 cd c:\ajile\tutorial\build


このコマンドは、シャレード(Charade)の デフォルト・ディレクトリを指定します。

次に、アプリケーションをロードするために シャレード(Charade)のメニューから [File]-[Execute]を選び、そこで「load.sod」選択します。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第3章 シャレードを使ってのアプリケーションのロード ―

3.1. シャレードを使ってのアプリケーションの実行 (Executing the Application using Charade)

アプリケーションのロード後、シャレード(Charade)の 「Go」ボタンをクリックすることにより チュートリアル プログラムを実行できます。 JNIBボックスの2~3のキーを押すことにより、シャレード(Charade)のコンソール・ウィンドウに以下のような表示がでてきます。

キーを押す度に、ビープ音が聞こえ、 キーのラベルがキャラクター・ディスプレーに表示されます。 加えて、シャレード(Charade)のコンソール・ウィンドウで キーを押されたイベント(Event ID = 1) と キーが放されたイベント(Event ID = 0)についての 2つのメッセージが受け取れます。 キーが放されたイベントは JNIBのハードウェアで自動的にハンドルされていることに注意してください。

キーが放されたイベントは JNIBのハードウェアで自動的にハンドルされていることに注意してください。

3.1.1. 問題解決 (Trouble Shooting Tips)

JTAGインターフェースにより シャレード(Charade) と ターゲット間での接続が初めて確立された際、電源が中断している間、もしくは 修復不能なエラーによりターゲットがシャットダウンした後、以下のような 同期エラーのメッセージが表示されることがあります。


 Could not communicate with the target (ターゲットと接続できませんでした。)


または、

 Cannot perform 64-bit target read (64-bit target リードが実行できません。)

JNIBターゲットとのコントロールを確立するためには、コンソール・ウィンドウのステータスが JNIBが 停止(holt)したことを示すまで 「HALT」と「RESET」を数回クリックする必要がある場合はあります。 停止後、 LOAD.SOD スクリプトによりアプリケーションをリロードして、ターゲットが再度 初期化されたことを確認してください。

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第3章 シャレードを使ってのアプリケーションのロード ―

3.2. プログラム実行の監視 (Monitoring Program Execution)

p<{padding-top:1em}. 「poll」機能に加えて、シャレード(Charade)は、プログラム実行を監視するための多数の機能を備えています。 その中でも最も便利な機能はヒープ・メーターです。 これは、シャレード(Charade)のメニューの

 [Options]-[Runtime Stats]-[Heap Usage]


からアクセスできます。

その他の便利な監視機能として、メモリ、バイトコード・ビュー、 プロセス・スタック・ウィンドウ等があり、 それらは [Options]メニュー下にあります。

最後に、Javaの System.out や System.err への出力ストリームが シャレード(Charade)のテキスト出力ペインで見られます。
これらの出力は、以下のような表示から行が始まっています。

 [TEXTIO.0]->

JNIB チュートリアル 目次

関連情報・リンク


JNIBチュートリアル ― 第3章 シャレードを使ってのアプリケーションのロード ―

3.3. シャレードについて、より詳しくは (For more information on Charade)

このチュートリアルでは、低レベル・デバッガーであるシャレード(Charade)の ほんのいくつかの機能しか取り上げておりません。 包括的な「シャレード・ユーザーズ・ガイド(Charade Users Guide)」は、ウィンドウズのスタート・メニューから、aJileツールがインストールされているプログラム・グループの 「Charade Users Guide」アイコンをクリックすることにより開くことができます。

JNIB チュートリアル 目次

関連情報・リンク


JNIB ユーザーズ・ガイド

「 JNIB User's Guide 」 の日本語翻訳です。
「 aJile JME/CDC 1.1 Runtime and Tools version 5.1.03 (18.05.2008) 」 に含まれていた 「May 1, 2008 Version 2.1」に基づいています。

【ご注意】 ここにあるマニュアルの日本語訳は、JNIB 開発元の aJile社 や 日本代理店の Valley Campus 社 からの公式なものではありません。 この翻訳は、あくまでも サイトの管理人が 個人的な目的で行ったものであり、内容の信頼性を保障するものではありません。

目次

関連情報・リンク


JNIBユーザーズガイド ― 第1章 システム・プログラミング ―

1.0. JNIBの概要 (Overview)

JNIBは、リアルタイム・モニタリング、データ収集、ならびに非インダストリー環境でのアプリケーション制御等のために設計された 小型で低コスト、Javaベース、そしてインターネットに対応した自動化コントローラです。 JNIBは、ネットワーク接続によるリモート・アクセス、監視、制御のようにリアルタイムな反応を必要とする センサーやアクチュエータとの下層インターフェースに最適です。 JNIBの典型的なアプリケーションとしては、家庭、学校、オフィス、ビルディング管理の自動化やセキュリティー・システムがあります。

JNIBは、aJile社の 高性能なダイレクト・エグゼキューション Javaプロセッサー「aJ-100」、 並びに、Sun Microsystems社の Java ME/CLDC/CDC/Foundation Profile ライブラリにより構築された 100%ピュアJavaコンピューティング・プラットホームを提供します。 JVMバイトコードの直接実行、マルチ・スレッドのサポート、マルチJVM環境、TCP/IPネットワーク・プロトコル という強力な組み合わせは、ネットワーキング・リアルタイム自動化アプリケーションに効率的で、安全で、かつ 信頼できるJavaプラットホームを提供します。 この真のJavaプラットホームは、開発とメンテナンスのコストの低減、ポータビリティ、スケーラビリティ、セキュリティといったJavaがもたらすメリットを デバイス・ドライバを含めたすべてのアプリケーションが享受できることを保証します。 JNIBのアプリケーションは、インターネット経由での遠隔地からの安全なライフサイクル管理を可能とするためにダイナミックにダウンロードしたりアップデートできます。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第1章 システム・プログラミング ―

1.1. JNIBの機能 (Features)

【注意1】 これらの機能は、JNIB(青い筐体) のみの機能であり、JNIB_L(黒い筐体)には搭載されていない機能です。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.1. ランタイム・システム の背景 (Runtime System Background)

aJile Systems は Java ME の CLDC ならびに CDC/Foundation Profile に準拠したランタイム・システムを提供しています。 そのリファレンス実装が、aJileの Java直接実行型マイクロプロセッサーである aJ-100 へ移植されています。 aJ-100 は、以下に示されたような特徴とともに、リアルタイムな組み込み型Javaプログラミングのためにデザインされています。

2.1.1. Javaにより実装された Javaランタイム (Java Runtime Implemented in Java)

aJile Systems の Java ME ランタイム環境 の ユニークな特徴のひとつは、「基本的メソッド (native methods)」も含め、Java言語によりプログラムされていることです。 加えて、静的リンカ (Slink) ツールは、実行効率を上げるために、特定のメソッド呼び出しを 同等の aJ-100拡張バイトコードで置換するメカニズムを提供しています。 これらの特徴により アセンブラを組む必要がありませんし、 さらに開発者は、 ホスト・シミュレーション環境内で、例えば、物理メモリへのアクセスのような aJ-100拡張バイトコードのクラスのためのJava実装を開発できます。 結果として、すべてのランタイムがJavaで書かれていますので、テストとメンテナンスの両方が容易になります。 このような 100% Javaソリューションは、複数の開発言語で開発しなければならない状況を排除し、Javaというひとつの開発言語によるプログラミング環境の恩恵を最大化します。

2.1.2. リアルタイムJavaスレッドのハードウェアによるサポート (Hardware Support for Real-Time Java Threads)

aJ-100のもうひとつのユニークな特徴は、リアル・タイムJavaスレッドのハードウェア・サポートです。 コンカレント(平行実行)制御は Java仮想マシンの規格では意味深いものです。 例えば、メソッドの呼び出し命令のような基本的オペレーションは、もし該当するメソッドが「synchronized」指定してをしていた場合、排他制御を必要とすることになります。 aJ-100は 基本的な同期処理機能とスレッド・スケジューリング機能をマイクロ・コード内に実装しています。 この意味するところは、例えば java.lang.Thread の yield() は たったひとつの aJ-100拡張バイトコードになります。 このアプローチにより、多くの恩恵がもたらされます。 まず、aJ-100 は リアルタイムOS(RTOS)カーネルを必要としません。 さらに、 aJ-100上では、多重スレッドの実行が非常に速くなります。 例えば、yield() を実行して、違うスレッドへ戻る処理に要する時間は、100MHzで動作するaJ-100では、たった1マイクロ秒となります。 加えて、aJ-100はハードウェア的に、定期的スレッド・ディスパッチのサポートと 優先順位コントロールを実装しています。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.2. アプリケーションの構築 (Building Applications)

JNIBの Java ME プラットホームは、完全は静的アプリケーションとして、もしくは、静的と動的を組み合わせたアプリケーションとしてプログラミングできます。 静的アプリケーションは アブソリュート・ロード・モジュールとして 完全にリンクされることを特徴としています。 動的にロードされるアプリケーションは、指定されたソースからアプリケーションjarファイルをクラスロードするために静的なコンポーネントを必要とします。 以下のセクションでは、aJileツールの連携と構築プロセスの概要について説明します。 アプリケーション構築の詳細については「JNIB チュートリアル (JNIB Tutorial) 」の方で説明しています。

2.2.1. aJileツール連携 (aJile Tool Chain)

ほとんどのJavaの実装はランタイム・クラス・レゾリューションに依存しますが、しかし、構築時点で すべての必要なクラスが存在していればその必要はありません。 aJileの スタティック・リンカ(Slink) は、標準のJavaクラス・ファイルにおけるクラス間の依存関係を計算し、それらのうち必要とされるクラスのみによるメモリイメージを作成します。 「Slink」は未使用のメソッド、フィールド、定数(constant)も排除しますので、Javaアプリケーションに必要なメモリを大幅に削減できます。 Javaの安全志向、特にポインタの扱いを排除したことが、アプリケーション構築時の このような解析を可能としたことに役立っています。

「Slink」には、割り込みハンドラへの名前付きJavaメソッドのマッピングと同様に、拡張バイトコードによるの名前付き静的メソッドの代用機能などを含め、たくさんの機能があります。この拡張バイトコードによるの名前付き静的メソッドの代用機能は「off-the-shelf コンパイラ」(Sun Microsystemsらが提供している通常のJavaコンパイラのこと)の利用を可能としています。 つまりリンカのみが aJ-100の拡張バイトコードについて知っている必要があり、コンパイラは そのことに一切関知する必要がないからです。

図2-1 は 静的アプリケーション構築に関するaJileの開発環境のツール連携を示しています。 この環境では、ボーランド社のJBuilder や シマンテック社のVisual Cafe'、Eclipse などのような Java標準クラスファイルを生成する「off-the-shelf compiler」(通常のJavaコンパイラ)の利用を可能とします。

図 2-1 aJileの開発環境のツール連携

アプリケーションのクラス・ファイルの準備ができると、Slink を使ってアプリケーションを構築することができます。 Slink はコマンド・ライン上のツールですので、アプリケーション構築の初期設定やセットアップを容易にするために「JEM Builder」と呼ばれるグラフィカル・ユーザ・インターフェースのソフトが提供されています。 JEM Builder は、JNIB等のターゲット機器やアプリケーションの要求を満たすためのプロパティー設定ができます。 図中の「Target Configuration Data」は、JNIBシステムのプロパティーを指定しています。 また、図中の「Project Configuration Data」には、アプリケーションが指定したドライバー、ランタイム、プロパティー 等が記述されています。 JEM Builder は アドレス・マッピングや他の統計情報のファイルを基にして aJileロード・モジュールを作成するために Slink を直接起動します。

アプリケーション・ロード・モジュールをJNIBターゲットシステムへダウンロードするには、
開発者の意向により、以下のような方法が選択できます。

シャレード(Charade) デバギング・セッション:

シャレード(Charade) は フル装備の低レベルバイトコード・デバッガーです。 シャレード(Charade) は、リセット、ステッピング、ステップ・ツー、ステップ・オーバー、実行ブレークポイントやデータ・ブレークポイントの設定 等、アプリケーションの実行を完全にコントロールできます。 また、バイトコード・シーケンス、プロセス・スタック、オブジェクト・ビュー、ヒープ・スタック、ポーリング 等を表示できます。 詳しくは、「 シャレード ユーザーズ・ガイド (Charade User's Guide) 」を参考にしてください。

JPDA シンボリック デバギング・セッション:

JPDAに対応しているIDEは、アプリケーションのロードおよび実行に利用できます。 JEMデバク・ドライバーは Eclipse と NetBeans とで使えることがテストされています。 標準のディバグ機能として、メソッドでのブレークポイント、ステートメント、変数の調査 等が可能です。 詳しくは、「 JEM デバグ・チュートリアル (JEM Debug Tutorial) 」を参考にしてください。

上記の両方のオプションにおいて、JNIBとの接続には開発キットに付属するJTAGケーブルが必要です。 また、JNIBターゲットシステムとJTAGポッドで接続するホストPC側にはパラレル・ポートが必要です。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.3. NANDフラッシュへのアプリケーションの保存 (Storing Applications in NAND Flash)

JNIBで実行されるアプリケーションはRAMに書き込まれている必要があります。 NANDフラッシュは、アプリケーションやデータ、ファイルを保存しておくのに使われます。 JNIBに電源が入った際にシステムは、NANDフラッシュからRAMへ アプリケーションのコードをコピーすることによりブートしようとします。 NANDフラッシュにアプリケーションがない場合は、システムはアイドル状態を保ちます。 システムがアイドル状態の場合は、ホスト(PC)とターゲット(JNIB)間をJTAGポッドで接続することによってのみ、プログラム(のRAMへのロード)が可能となります。

JNIBのNANDフラッシュをプログラムする(NANDフラッシュへプログラムを保存する)には、いく通りかの方法があります。 プログラミング・プロセスを単純化するために、DOSのバッチ・ファイルがいくつか用意されています。 以下のセクションでは、これらのバッチ・ファイルの使用方法を説明します。 また、これらのバッチ・ファイルの動作は以下の環境変数に依存しています。

表 2-1 ホストの環境変数

環境変数 典型的な値 コメント
PARALLEL_PORT_ADDR 0x378 デフォルトの設定
AJILE_HOME c:\aJile aJileツールのインストール時に自動的に設定されます
JAVA_HOME c:\j2sdk1.4 ant インストール時の通常の設定です

これらの環境変数は「%AJILE_HOME%\Host」ディレクトリにあるバッチ・ファイル「environmentSetup.bat」の内部で設定されています。 ホストシステム(PC)におけるこれらの設定を確認し、また、必要であれば変更してください。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.3.1. NANDローダーによるアプリケーションのアップデート (Updating Applications via the NAND Loader)

JNIB上のアプリケーションをアップデートする典型的な方法は、NANDローダーによる方法です。 NANDローダー用アプリケーション構築を完了するにあたり、以下のような 考慮すべき点がいくつかあります。

アプリケーションの構築後、JNIBのNANDフラッシュのアップデートには

  1. ロード・ファイルの作成
  2. NANDローダーの起動

という2つの手順があります。 詳細については以下のセクションで説明します。

パート1: NANDローダー用のロード・ファイルの作成 (Creating the load file for the NAND loader)

アプリケーションのバイナリ・ファイルは、NANDローダーに読み込まれる前に、単一のロード・ファイルである「 jnibKernel.data 」にコンバートされる必要があります。 バッチ・ファイル「 createNandFile.bat 」が、アプリケーションのバイナリ・ファイルを単一のロード・ファイルにコンバートします。 バッチ・ファイル「 createNandFile.bat 」 は、以下の例題で示されているとおり、バッチ・コマンドが実行されたディレクトリに「 jnibKernel.data 」ファイルを作成します。


 rem Assuming %build_path% is set to the build path of the application
 cd %build_path%
 rem Create the “jnibKernel.data” file in the build directory
 %AJILE_HOME%\Host\createNandFile

または、


 rem Assuming %build_path% is set to the build path of the application
 rem Create the “jnibKernel.data” file in the current directory
 %AJILE_HOME%\Host\createNandFile -d %build_path%

コマンド・ファイルからの出力は以下のようになります。


 INFO - NAND Loader
 INFO - Starting the NAND Flash loading server.
 INFO - Server: Starting the NAND loader server
 INFO - Server: Load NAND Flash from a CAPS binary file
 INFO - Server: Directory           :
 INFO - Server: Program file        : build_program.bin
 INFO - Server: System Segment file : build_systemseg.bin
 INFO - Server: The microcode file will be placed in the NAND
 INFO - File Name jnibKernel.data
 INFO - Server: Transmission complete

この結果 作成された「 jnibKernel.data 」ファイルがNANDローダーに対応したファイルとなり、利用したいメディアへコピーできます。 NANDローダー用として利用されるCFメモリ・カード や USBメモリ・スティック は、FAT32ファイル・システムでフォーマットされている必要があります。

パート2: NANDローダーの起動 (Activating the NAND loader)

NANDローダーは aJileランタイム内に存在していますので、JNIB上で実行される どんなアプリケーションでも NANDフラッシュをアップデートすることができます。 (アプリケーションは aJileランタイムのバージョン4.2.04 か、それ以降のバージョンでビルドされていると仮定します。)

ステップ1:
NANDローダーを開始する前の第一ステップは、どの メディア/コネクション から ロード・ファイルを読み込むかにより、NANDローダーDIPスイッチを設定することです。 「表 2-2: NANDローダー DIPスイッチ設定 」では、それぞれの メディア/コネクション 用の設定を示します。

表 2-2 NANDローダーDIPスイッチ設定

スイッチ #8 スイッチ #9 スイッチ #10 アプリケーション・ソース
OFF OFF OFF ロードしない
OFF OFF ON CFメモリ・カード スロット A*
OFF ON OFF CFメモリ・カード スロット B*
OFF ON ON USB メモリ・スティック
ON OFF OFF ネットワークアドレス
ON OFF ON シリアル・ポート(シリアル・ストリーム)
* CFメモリ・カードが1枚しか挿入されていない場合、ファイルシステムは CDカードがどちらのスロットにあるかを認識します。

下図、図 2-2 は NANDローダーがスロットAにあるCFカードを利用する設定であることを示しています。

図 2-2 スロットAにあるCFカード用のNANDローダーDIPスイッチ設定

ステップ2:
NANDローダーDIPスイッチを適切に設定した後、現在実行中のアプリケーションをリセットする必要があります。 アプリケーションをリセットするには、以下のように いくつかの方法があります。

ステップ3:
リセット後、システムは準備ができたことを 短いビープ音を5回鳴らすことにより知らせます。そして、指定されたメディアが挿入される、あるいは、指定されたコネクションが確立するを待ちます。 (以下のステップが1分以内に実行されない場合はNANDローダーは中断します。)

ステップ4:
メディア または コネクション の準備ができたら、JNIBの「Go」キー を押すか、または、 DIPスイッチの設定を「ロードしない」位置に設定することにより、ロード処理が開始されます。

ステップ5:
NANDローダーは、処理中であることを約4秒毎の短いビープ音で知らせます。また、現行のアプリケーションで指定されているシステム出力チャンネルからそのステータスを出力します。

ステップ6:
システムは NANDのロードが完了したことを3回の長いビープ音で知らせてから、現在のアプリケーションを開始します。

注意
新しいアプリケーションがNANDへロードされた後、その新しいアプリケーションは次にリセットが行われるまでは実行されません。 必要であれば、別のロード処理が始まってしまわないように、NANDローダーDIPスイッチを「ロードしない」設定に戻しておいてください。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.3.2. JTAGによるアプリケーションの書き込み (Flashing Applications via JTAG)

p<{padding-top:1em}. アプリケーションは、JTAGケーブルにより JNIB NANDフラッシュ に 直接 書き込むことができます。 NANDフラッシュは、以下の例のように「 %AJILE_HOME%\Host 」ディレクトリにある バッチ・ファイル「 jtagNandLoad.bat 」を使って書き込めます。

 rem Assuming %build_path% is set to the build path of the application
 cd %build_path%
 rem Program NAND from the build directory
 %AJILE_HOME%\Host\jtagNandLoad


または、

 rem Assuming %build_path% is set to the build path of the application
 %AJILE_HOME%\Host\jtagNandLoad -d %build_path%

JTAGの衝突を避けるために、シャレード(Charade) が 実行されていないことを確認してください。

コマンド・ファイルからの出力は、以下のようになります。


INFO - NAND Loader
INFO - Version 0.4 Beta (29-Nov-2006)
INFO - Starting the NAND Flash loading server.
INFO - Server: Starting the NAND loader server
INFO - Client: Starting the client
INFO - Server: Load NAND Flash from a CAPS binary file
INFO - Server: Directory :
INFO - Server: Program file : build_program.bin
INFO - Server: System Segment file : build_systemseg.bin
INFO - Server: The microcode file will be placed in the NAND
INFO - Formatting
INFO - Load memory region. 0x100..0x40fc. (16384 bytes)
INFO - Load memory region. 0x4144..0x4240. (256 bytes)
INFO - Load memory region. 0x10000a8..0x10aa768. (698052 bytes)
INFO - 5%
INFO - 10%
INFO - 16%
INFO - 22%
INFO - 27%
INFO - 33%
INFO - 38%
INFO - 43%
INFO - 49%
INFO - 54%
INFO - 60%
INFO - 65%
INFO - 71%
INFO - 76%
INFO - 82%
INFO - 87%
INFO - 93%
INFO - Server: Transmission complete
INFO - 98%
INFO - Load memory region. 0x1130c48..0x113188c. (3144 bytes)
INFO - Client: Completed loading
INFO - Client: exiting

これで、JNIBを設置するために、JTAGケーブルを取り外すことができます。 アプリケーションはリセットすることで起動できます。 必要であれば、リセットでNANDローダが起動しないように、NANDローダ・DIPスイッチを「no load」の位置へ戻してください。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.4. 複数アプリケーションのNANDフラッシュへの保存 (Storing Multiple Applications in NAND Loader)

前述のとおり、 JNIBの NANDフラッシュは、「 表 1-1: JNIBのNAND保存領域 」が示すように、いくつかの領域に分けられており、複数のアプリケーションをアプリケーション・イメージ保存領域に保存することができます。 アプリケーション・イメージ保存領域のデフォルトのサイズは16MBになっていますが、変更することも可能です。 アプリケーション保存用の基本的なファイル・システムでは、アプリケーション保存内容のリスト、 アプリケーション・イメージのロード、 アプリケーションの起動、 といったAPIを提供しています。 このAPIは、aJileランタイムjavadoc の JNIBシステム・ドライバーのセクションでリストされている com.ajile.drivers.jnib パッケージ(JNibSystem クラス)で定義されています。

プライマリ・ブート・ローダー (PBL: Primary Boot Loader) として知られる スロット #0 にあるアプリケーションによって、アプリケーションは「スロット(slots)」毎にインデックス化されます。 PBLアプリケーションは「永久(permanent)」を意図し、JNIBの電源投入時にいつも起動します。 PBLアプリケーションの目的は、 希望された 他のアプリケーションの ロード と 起動 です。 アプリケーションの起動により、以前のアプリケーションを完全に置き換え、システム資源へのフル・アクセスを提供します。

NANDローダー または JTAG(前述の セクション 2.3. で述べたとおり) により、JNIB の NANDフラッシュ へプログラムされたアプリケーションはPBLアプリケーションとして指定されています。 PBLアプリケーション をプログラムすることにより、以前に保存されていたアプリケーションを含んでいるアプリケーション保存領域のすべてを消し去ります。 一度 PBLがプログラムされると、スペースが許す限り、他のアプリケーションはNANDストレージへロード可能となります。 (アプリケーションは セクション 2.3.1. パート1 の説明のとおり、ロード・ファイル・イメージにコンバートされている必要があります。) アプリケーションはスロット番号をスキップすることなく順番にロードされなければなりません。 保存されているアプリケーションは、同じスロット番号に新しいアプリケーションを単にロードすることによりアップデートできます。

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.5. タイム・ゾーン・データのNANDフラッシュへの保存 (Storing Time Zone Data in NAND Flash)

JNIBのNANDフラッシュには、通常、CDCアプリケーションのためのタイム・ゾーン・データを含んでいる256Kの保存領域が事前にプログラムされています。 しかしながら、タイム・ゾーン保存領域が NANDフラッシュ内に存在しないか、または、破壊されている場合、アプリケーションの開始時に以下のようなメッセージが表示されます。


 TimeZoneData NAND storage area is unreadable...defaulting to GMT.
 (タイム・ゾーン・データ保存領域を読み込めません。 デフォルト値を世界標準時にします。)

CDCの例題アプリケーションである「 TimeZoneUpdater 」は、NANDのタイム・ゾーン保存領域をアップデートするために作られたものです。 「 TimeZoneUpdater 」は、ホストのJRE環境からタイム・ゾーン・データを提供するホスト・アプリケーション「 ZoneInfoServer 」を必要とします。 これらのアプリケーションの構築および実行に関するドキュメントは、CDCの例題のJavaDocにあります。 アプリケーションをコンパイル、および ビルドする ANTスクリプトは、以下のようなディレクトリにあります。



 %AJILE_HOME%\Examples\CDC\Projects\JNIB\TimeZoneUpdater
 %AJILE_HOME%\Examples\CDC\Projects\host\zoneinfoserver

JNIBユーザーズガイド 目次

関連情報・リンク


JNIBユーザーズガイド ― 第2章 システム・プログラミング ―

2.6. 高速アプリケーション・ローディング (Fast Application Loading)

アプリケーション・バイナリをターゲットへダウンロードする場合、現在のPCパラレルポートを用いたJTAGインターフェースは効率的ではありません。 その平均的な転送レートは 約1分間に1MBです。 CDCは 7MB以上のファイルを作成することもあり、ローディング時間は非常に長くなります。 そのため、ネットワーク・アプリケーション・ローディング機能が開発され、ダウンロード時間が10分の1、もしくはそれ以上になりました。

ネットワーク・アプリケーション・ローディング機能は、以下のコンポーネントより成り立ちます。

2.6.1. 準備 (Preparation)

このクライアント(AppLoader)は、まだ存在していない場合は、 JNIB NAND フラッシュ の中にプログラムされる必要があります。 「セクション 2.3.1. NANDローダによるアプリケーションの更新 (Updating Applications via the NAND Loader)」のパート2 にある手順に従ってください。 このクライアントは、プライマリ・ブート・ローダー(PBL)としても機能します。 また、このクライアントは、ネットワーク・ブラウザー経由でのターゲット設定を行うCMSを含みます。 ( CMSの利用については 「CMSユーザーズ・ガイド」をご覧ください。 )

サーバー・ランチャー(AppServer.bat)は、まだ存在していない場合は、アプリケーション構築ディレクトリにコピーされる必要があります。 バッチ・ファイルの実行により ひとたび起動すると、アップデートされたビルドが いつでも再ロードされうるように そのサーバーは走り続けます。 しかしながら、別のアプリケーションがターゲットにロードされる場合、そのサーバーは終了されて、新しいアプリケーションの構築ディレクトリから再起動される必要があります。

2.6.2. ローダーの実行 (Executing the loader)

ひとたびアプリケーションがビルドされると、アプリケーション構築ディレクトリの中から シャレードの「 AppLoader.sod 」スクリプトを実行することにより、バイナリ・ファイルをロードすることができます。 このスクリプトは、アプリケーション・バイナリをダウンロードするために、クライアントがNANDフラッシュ内に常駐するようにします。加えて、アプリケーション構築のシンボル情報もシャレードにロードされます。 ロード処理の際の出力は、以下のようになります。

JNib CF Manager Initializing

Servertec (R) Application/Web Server aJile Edition Version 2.1.4.1 09/04/2005 Open Source Release
Copyright (C) 1998-2005 Servertec. All rights reserved.

JNIB CMS ready at http://192.168.1.2:8080/cms

------ build_program.bin -------
jemcfg 3.10.05 August 27, 2008 2:55:04 PM PDT executive
Loaded 6198639 bytes from build_program.bin file in 20 seconds.
--------------------------------

----- build_systemseg.bin ------
Configuration: JNibConfiguration
Runtime: aJile CDC 1.1 Version 5.3.00
ucode version: 0x80
C:\OSGi\Projects\Equinox\JEMOutput\build_systemseg.bin
jemcfg 3.10.05 August 27, 2008 2:55:04 PM PDT executive
C:\aJile\Runtime_cdc11\ucode\jnib_uram.bin
created on Sat Jul 19 03:04:58 2008 (GMT)
Loaded 17462 bytes from build_systemseg.bin file in 771 msec.
--------------------------------

vm.0 breakPoint: [Application loaded...click on "Reset" before running.]

JNIBユーザーズガイド 目次

関連情報・リンク


JTAGの通信エラー対策

シャレード(Charade) を実行するとJTAGの通信エラーが起きてしまう問題への対応方法をまとめてみます。

%{color:red}【ご注意】 今までに報告されている最も多い事例は、輸送中の振動により、JNIB本体内で接続されているJTAGケーブルのコネクタが 外れてしまっていることです。
この場合、JNIB本体のネジを外して上蓋を開け、JTAGケーブルのコネクタを指し込み直すと解決します。%

2008年7月24日 現在

JTAGの通信エラー問題の症状

この問題点の解決のために、先ず、この図のメッセージの内容をひとつずつ確認して行きます。

確認事項(1) JTAGケーブルの確認 (the jtag cable is attached)

確認事項(2) JNIBの電源の確認 (the target is powered)

確認事項(3) パラレル・ポートのアドレスの確認 (charade.cfg contains the proper parallel port address for this PC)

確認事項(4) デバイス・ドライバの確認 (on NT & Win2k verify CharadeDrv is installed and running)

ルネサステクノロジ社の「 LptFix.exe 」による問題解決方法

上記の4つの確認事項を確認し、問題解決を図ってみても、まだ問題が解決しない場合は、「 LptFix.exe 」を実行してみましょう。

この手の問題はJNIBに限らず、パラレル・ポートを利用したJTAGツール開発環境には必ず付きまとう問題です。 「 LptFix.exe 」とは、半導体大手メーカーであるルネサステクノロジ社が提供しているパラレル・ポート問題解決用のソフトウェアです。

これについては、LptFixによる問題解決方法 ページにまとめてありますので、そちらを参照してみてください。

それでも問題が解決しないの場合

ここまでの 解決方法でも問題が解決しない場合は、以下の方法を試してみてください。

それでも問題が解決しない場合は、JNIB本体 または、JTAGアダプタが 不良である可能性が高いと考えられます。 お買い求めになった販売店にご相談された方がよいと思います。

関連情報・リンク


LptFixによる問題解決方法

パラレル・ポートの問題はJNIBに限らず、パラレル・ポートを利用したJTAGツール開発環境には必ず付きまとう問題です。 「 LptFix.exe 」とは、半導体大手メーカーであるルネサステクノロジ社が提供しているパラレル・ポート問題解決用のソフトウェアです。 このページでは、「 LptFix.exe 」の使い方を紹介します。

2008年7月24日 現在

前提条件

考えられる問題の原因

Windows XP の パラレル・ポート標準ドライバ「 Parport.sys 」は、パラレル・ポートに新たに接続されたデバイスを自動的に認識する機能を持っており、そのため、新たなデバイスを検出すると、そのデバイスとの間で自動的に通信を開始してしまいます。 この機能が、 シャレード(Charade) のような パラレル・ポートを利用してJTAGアダプタと通信を行うアプリケーション・ソフトと競合を起こしてしまい、正常に動作しない場合がある、と考えられます。

ただし、Windows XP であれば必ずしもこの問題が起こるとは限らないようです。

このような問題を解決するためのソフトウェアとして、ルネサステクノロジ社より「 LptFix.exe 」というソフトウェアが提供されています。

この問題が発生する条件

解決方法

LptFix.exe の実行

* 上記の ルネサステクノロジ社 のページの説明に従って「LptFix.exe」を実行してください。

> LptFix

パラレル・ポートを元の状態に戻す方法

* パラレル・ポートを元の状態に戻す場合は、コマンド・プロンプトから、以下のように「 /U 」オプションを着けて「LptFix.exe」コマンドを実行します。

> LptFix /U

技術解説的編集後記

問題が起きていた自分の開発用PCで、実際に上記のとおりの操作をして問題は解決しました。 その後、「 LptFix /U 」を実行し、パラレル・ポートを元の状態に戻してエラーが再現するかどうか試してみましたが、残念ながら(笑)、その後、パラレル・ポートを有効にしたままでも シャレード(Charade)が正常に起動するようになりました。

このように、腑に落ちない点がいくつかありますが、とりあえず 私の環境では JNIBの開発環境が動作するようになりました。 この件に関しましては、まだまだ判らないことも多々ありますので、同様の経験をされた皆様からのレポートをお待ちしております。

関連情報・リンク


giveioドライバの再インストール方法

JNIBの開発環境をインストールする際に、自動的に giveio.sys もインストールされるようです。 しかしながら、何らかの理由により正常にインストールされていなかった場合、以下で説明する方法で JNIB開発環境全体を再インストールすることなしに giveio.sys だけを再インストールすることができます。

2008年7月24日 現在

giveio.sys 関連ファイルの確認

JNIB開発環境のインストール先フォルダ、通常「 C:\aJile 」フォルダには、

という4つのファイルがあります。

InstallCharadeDriver.bat と UninstallCharadeDriver.bat の内容確認

ここで、InstallCharadeDriver.bat の内容を確認しておきます。 InstallCharadeDriver.batの内容は以下のように1行のコマンド行になっています。


instdrvauto.exe giveio %AJILE_HOME%\giveio.sys

見てわかるとおり、「 instdrvauto.exe 」を 2つの引数と共に実行する記述となっています。 おそらく、第1引数の「 giveio 」が 登録されるデバイス・ドライバとしての名称。 第2引数がデバイス・ドライバのファイルへの実際のパス だと思われます。

また、ここでの注意点として、引数パラメータ内に環境変数「 AJILE_HOME 」が使われていることです。 このように、JNIBの開発環境におけるバッチ・ファイルでは 環境変数が多用されていますので、事前にキチンと設定しておく必要があります。 この環境変数の設定については、 環境変数の設定 ページを参照してください。

ついでですので、UninstallCharadeDriver.bat の内容も確認しておきます。

instdrvauto.exe giveio remove


こちらは、第1引数で指定したデバイス・ドライバの名称「 giveio 」 を remove(削除)する ということのようです。

InstallCharadeDriver.bat の実行

それでは、InstallCharadeDriver.bat を実際に実行してみますが、エクスプローラーからダブル・クリックして実行すると 実行した結果が正常に終了したのかエラーだったのか、わからなくなりますので、ここではコマンド・プロンプトから実行することにします。

コマンド・プロンプトの起動は、

または

で起動できます。

起動したコマンド・プロンプトから

C:\Documents and Settings\yotsumoto> cd \ajile
C:\aJile>


と 入力し、カレント・ディレクトリを「 C:\aJile 」にします。

そこで、以下のように InstallCharadeDriver.bat の実行します。


C:\aJile>InstallCharadeDriver

成功すれば、

C:\aJile>instdrvauto.exe giveio C:\aJile\giveio.sys
CreateService SUCCESS
StartService SUCCESS
CreateFile SUCCESS


のように表示されます。 既にgiveio.sysがインストールされているようであれば、

C:\aJile>instdrvauto.exe giveio C:\aJile\giveio.sys
failure: CreateService, ERROR_SERVICE_EXISTS
failure: StartService, ERROR_SERVICE_ALREADY_RUNNING
CreateFile SUCCESS


のように表示されますので、後述の UninstallCharadeDriver.bat を実行してから、再度インストールしてみてください。

UninstallCharadeDriver.bat の実行

先に、giveio.sys を アンインストールする必要があるのであれば、InstallCharadeDriver.bat と同様にして、UninstallCharadeDriver.bat を実行してください。

コマンド・プロンプトから

C:\Documents and Settings\yotsumoto> cd \ajile
C:\aJile> UninstallCharadeDriver


と入力し、成功すると

C:\aJile>instdrvauto.exe giveio remove
ControlService SUCCESS
DeleteService SUCCESS


と表示されます。 既にデバイス・ドライバがアンインストールされていた場合は、

C:\aJile>instdrvauto.exe giveio remove
failure: OpenService (0x424)
failure: OpenService (0x424)


と表示されます。

giveio.sys の確認

今 再インストールした giveio.sys の確認方法については、giveioドライバの確認方法 ページを参考にしてください。
ここでの注意点としては、 一度 Windowsを再起動してからでないと、giveio.sys は デバイス マネージャ に表示されない、ということです。

また、こちらでの実験では、InstallCharadeDriver.bat 実行後、Windowsを再起動する前の段階では デバイス マネージャ に giveio.sys は表示されませんでしたが、シャレード(Charade) は無事に起動できました。

関連情報・リンク


giveioドライバの確認方法

JNIBの開発環境では、JTAGによる通信用のパラレル・ポートに対し「 giveio.sys 」という特殊なデバイス・ドライバを利用しています。 このデバイス・ドライバが正常にインストールされ、かつ、正常に動作していなければ、シャレード(Charade)等の JTAGを利用するソフトウェアは正常に動作できません。 ここでは、 この「 giveio.sys 」の状況を確認する方法を探ってみます。

2008年7月24日 現在

デバイス マネージャ 画面を開く

ウィンドウズ環境において、デバイス・ドライバ は 通常「デバイス マネージャ」画面から管理することができます。
Windows XP で デバイス マネージャ の設定画面を開くには、

または、コントロール パネル が クラシック表示の場合には、

または デスクトップより、

で開くことができます。

デバイス マネージャに「非表示のデバイスの表示」を指定

デバイス マネージャ を開いても、通常の デバイス マネージャ では、どこを探しても「 giveio.sys 」は見つかりません。

そこで、デバイス マネージャ に特殊な設定をする必要があります。 それには、メニューから[表示]-[非表示のデバイスの表示] を選択します。

すると 「 プラグ アンド プレイではないドライバ 」 という新たな デバイスのカテゴリが表示されます。

この「 プラグ アンド プレイではないドライバ 」というカテゴリを開いてみると その中に「 giveio 」が見つかります。

ここに、「 giveio 」が見つからない場合は、「 giveio.sys 」が正常にインストールされていないことになります。

giveio.sys の状態確認

見つかった「 giveio 」を選択して、

もしくは

により、giveio.sys のプロパティ画面を開くことが出来ます。

ここでは、デバイスの状態欄に「このデバイスは正常に動作しています。」 と表示されていることと、 画面下の デバイスの使用状況欄が
「このデバイスを使う(有効)」 となっていることを確認してください。

また、[ドライバ]タブ をクリックすると、以下の図のような表示になります。 ここでは、現在の状態が「開始」であること と スタートアップの種類が「自動」であることを確認してください。

関連情報・リンク