KVMのインストールと設定

岡田 慧


目次

  1. はじめに
  2. KVMのダウンロード
    1. J2ME のダウンロード
    2. Mechボード対応化ソースのダウンロード
  3. KVMのコンパイル
    1. preverifierのコンパイル
    2. apiのコンパイル
    3. jccのコンパイル
    4. kvmのコンパイル
  4. KVMの動作確認
  5. 特別演習課題


  1. はじめに
  2. この文章はMechマイコンボード上で Java の実行環境を構築するためのドキュ メントです.Javaの実行環境は Sun による KVM という組み込み向けJavaの実 行環境にたいし,Mech マイコンボードで実行できるような変更を加えたもの を利用します.  KVM はJavaの実行環境の一つで,Kilo byte Virtual Machiineの略です.これは, Kilo byte 単位のサイズ(実際には200Kバイト程度)のJava実行環境であり, 組み込み機器や家電製品向けの実行環境です.

    Sunは,下の三種類のJavaラインナップをユーザに提供しています

     ちなみに,JDK 1.3.1のインストールでインストールしたのは上記のJ2SEです.今回はインストールするKVMはJ2MEになります.

  3. KVMのダウンロード
  4. KVMをコンパイルするためのダウンロードをする.KVMのコンパイルの作業は 各自のホームディレクトリで行う.このドキュメントでは ~/work/MechKVM とする. まずは,作業ディレクトリを作成する.
    MECHNT83 [~] % mkdir work
    MECHNT83 [~] % cd work
    MECHNT83 [~/work] % pwd
    /home/k-okada/work
    MECHNT83 [~/wrok] % mkdir MechKVM
    MECHNT83 [~/work] % cd MechKVM
    MECHNT83 [~/work/MechKVM] % pwd
    /home/k-okada/MechKVM
    
    k-okada は各自のユーザ名に置き換わって表示される.

    1. J2ME のダウンロード
    2. O:\soft-ensyu\sun\ にある j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001_STRIP.tar.gz を~/work/MechKVMにコピーし,展開する.展開は,
      MECHNT83 [~] % cd ~/work/MechKVM
      MECHNT83 [~/work/MechKVM] % ls
      j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001_STRIP.tar.gz
      MECHNT83 [~/work/MechKVM] % tar -xvzf j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001_STRIP.tar.gz
      
      とする.

      Sunのホームページでは http://wwws.sun.com/software/communitysource/j2me/cldc/download.html のページでユーザ登録することでダウンロードできる.興味ある人はユーザ登録とダウンロードに挑戦してください.

    3. Mechボード対応化ソースのダウンロード
    4. KVMをMechマイコンボードに対応させるためのソースコードのダウンロードはcvsというツールを利用する.cvsは複数の人間が同一のソースを利用してソフトウェア開発するには,必要不可欠のツールである.

      CVSではソースをダウンロードすることを,CheckOut と呼ぶ. まずは,各自のCygwin環境にCVSが入っているか確認する.確認は,

      MECHNT83 [~] % which cvs.exe
      /bin/cvs.exe
      
      とする.
      MECHNT83 [~] % which cvs.exe
      cvs.exe: Command not found
      
       となれば,cvsが入っていない.この場合は, Cygwin環境のインストールと設定:パッケージの追加 を利用して cvs をインストールすること. また,このとき perl もインストールすると後々便利である. チェックアウトは以下の様にして行う.
      MECHNT83 [~] % cd work
      MECHNT83 [~/work] % cvs -d /cygdrive/O/soft-ensyu/cvsroot checkout MechKVM/utmech
      
      これでディレクトリ構成は,
      MECHNT83 [~/work] % cd MechKVM
      MECHNT83 [~/work/MechKVM] % ls
      j2me_cldc/  
      j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001_STRIP.tar.gz
      utmech/
      MECHNT83 [~/work/MechKVM] % ls */*
      j2me_cldc/api:
      Makefile  src/
      
      j2me_cldc/build:
      Makefile.inc  linux/  solaris/	win32/
      
      j2me_cldc/docs:
      CLDCAPI.html.zip  CLDCAPI.pdf  KDWP.pdf  KVM_porting.pdf  ReleaseNotes.pdf
      
      j2me_cldc/jam:
      README.TXT  h/	src/
      
      j2me_cldc/kvm:
      VmCommon/  VmExtra/  VmUnix/  VmWin/
      
      j2me_cldc/samples:
      Makefile  jam/	ku  kw.bat*  src/
      
      j2me_cldc/tools:
      jcc/  kdp/  preverifier/
      
      utmech/CVS:
      Entries  Repository  Root
      
      utmech/api:
      CVS/  Makefile  src/
      
      utmech/build:
      CVS/  Makefile
      
      utmech/kvm:
      CVS/  build/	h/  src/
      
      utmech/rom:
      CVS/  appli_sample/  include/  kvm/  monitor/
      
      utmech/samples:
      CVS/  Makefile
      
      utmech/tools:
      CVS/  jcc/  preverifier/
      
    となります.

  5. KVMのコンパイル
  6. KVMのコンパイルは以下の順番で行います.

    1. preverifierのコンパイル
    2. preverifier は,Javaの実行前にJavaコードにエラーが無いかなどの正統性 をチェックするアプリケーションである.コンパイルは以下の様にする.
      MECHNT83 [~/work/MechKVM] % cd ~/work/MechKVM/utmech/tools/preverifier/
      MECHNT83 [~/work/MechKVM/utmech/tools/preverifier] % make all
      
      とする.

      ~/work/MechKVM/utmech/tools/preverifier/ に,preverifier.exe が作成で きれば成功である.

    3. apiのコンパイル
    4. java の api のクラスファイルである.APIによって,例えば System.out.println 等のクラスの利用できるようになる. コンパイルは以下の様にする.
      MECHNT83 [~/work/MechKVM] % cd ~/work/MechKVM/utmech/api
      MECHNT83 [~/work/MechKVM/utmech/api] % make classes.zip
      
      とする.

      ~/work/MechKVM/utmech/apiに classes.zip が出来ていれば成功である.

    5. jccのコンパイル
    6. jcc (Java Code Compact) とは java の api のクラスファイルをROM化す るためのツールである.実際には ~/work/MechKVM/j2me_cldc/tools/tools/src/JavaCodeCompact.java を利用し, ~/work/MechKVM/j2me_cldc/api/src 以下のapiとなるjavaファイルから, ROMしたC言語ファイルを作成する.この,コンパイルは以下の様にする.
      MECHNT83 [~/work/MechKVM] % cd ~/work/MechKVM/utmech/tools/jcc
      MECHNT83 [~/work/MechKVM/utmech/tools/jcc] % make mech
      
      とする.

      ~/work/MechKVM/utmech/tools/jcc/ にROMjavaMech.c, nativeFunctionTableMech.c, classes.zip, classesMech.zipが出来れば,成功である.

    7. kvmのコンパイル
    kvm本体のコンパイルを行う.コンパイルは以下の様にする.
    MECHNT83 [~/work/MechKVM] % cd ~/work/MechKVM/utmech/kvm/build
    MECHNT83 [~/work/MechKVM/utmech/kvm/build] % make all
    
    とする.

    ~/work/MechKVM/utmech/kvm/build に kvm.srec, MechKVM.jar.srec が出来れば成功である.

    perlが入っていないとコンパイルが最後まで通らず,

    scripts/jar2srec.pl: not found
    make[1]: *** [download.srec] Error1
    
    といわれる.この場合は, Cygwin環境のインストールと設定: パッケージの追加 を利用して perl をインストールすること.

  7. KVMの動作確認
  8. ~/work/MechKVM/utmech/kvm/build にある,kvm.srec, MechKVM.jar.srec  をダウンロードし,Mechマイコンボードの F3(Run) キーを押して,画面に HelloWorld! が表示できれば成功である.ダウンロード法はMechボードへのダウンロード方法を参照すること.

    また,サンプルファイルを変更し自分で新しいクラスファイル(NewJavaFile.java)を作成した場合は,

    MECHNT83 [~/work/MechKVM] % cd ~/work/MechKVM/utmech/kvm/build
    MECHNT83 [~/work/MechKVM/utmech/kvm/build] % make DOWNLOAD=NewJavaFile.java download.srec
    
    とすると,新しいMechKVM.jar.srec が作成されるので, これをダウンロードすればよい.

    また,実際にダウンロードせずともcygwin上でMechボード上で実行するプログラムの 動作を確認できる.cygwin上で実行する kvm は以下の様にコンパイルする.

    MECHNT83 [~/work/MechKVM/utmech/kvm/build] % make CYGWIN=true
    
    これで,~/work/MechKVM/utmech/kvm/buildにkvmcyg.exe が出来ていれば,成功である.これを実行すれば HelloWorld が表示される. なお上記のコンパイルの手順をまとめたMakefileが ~/work/MechKVM/utmech/build/Makefile にある.従って,
    MECHNT83 [~/work/MechKVM/utmech/build] % make
    
    とすれば,全ての作業がおわる.

  9. 特別演習課題
  10. ダウンロード中に時間がある者,作業が終わった者,興味のある者は以下の課題に取り組んでもよい.いずれも難しいと思うので,出来なくても気にしなくて良い.
    1. mech対応のkvmと標準のkvmではサポートしているJavaのAPIに違いがある.その違いを調べてみよ.
    2. 標準のkvmでは,Linux, Windows(Microsoft Visual Studio), Solaris がサポートされている.cygwin の gcc で標準kvmをコンパイルするにはどうしたらよいか?
      ヒント:cygwinでは,UNIXのAPIだけでなく,WIN32API も利用できる MechKVM/cygwin-gcc-unix, MechKVM/cygwin-gcc-w32api というディレクトリを作成して,両方でコンパイルできるようにすることは可能だろうか?
    3. Sunによる JavaのチュートリアルはJavaの勉強のため一通り読んで欲しいが, そのなかの Threadの章 に,サンプルとして挙げられているソートのアプレットプログラムを試し, 各アルゴリズム(Bubble Sort, Bi-Directional Sort, Quick Sort)の違いを 調べてみよ.また,これをMechボード上で実行できるプログラムを書いてみよ. バブルソートのサンプルプログラムは ここからダウンロードできる.
戻る
Last modified: Mon Aug 18 15:33:10 JST 2003