------------------------------------------------------------------------------
  Hyper Operating System V4 Advance  --μITRON4.0仕様OS                       
    カーネル ドキュメント                                                     
                                                                              
                                       Copyright (C) 1998-2007 by Project HOS 
                                       http://sourceforge.jp/projects/hos/    
------------------------------------------------------------------------------


（注意）
   現時点では未実装の機能も含みます。



1. 概要

  本ドキュメントは Hyper Operating System V4 Advance (以下 HOS-V4a)の
カーネルについての説明を記載します。


2. 準備するもの

  カーネルのビルドには、ターゲットCPU用のコンパイラの他に
以下の何れかの環境が必要になります。

 [gmake環境]  GNU make + gcc   (Linux, Free-BSD, Cygwin などの環境)
 [nmake環境]  nmake + cl       (Windows + Visual-C++ 環境)


  何れかの環境をホスト側に事前に準備し、PATHなどの環境変数を
準備して、コンパイラやmakeが動く状態にしておいてください。


3. カーネルのビルド
  kernel/build ディレクトリの下に、各ターゲットプロセッサ毎に
ビルド環境を用意しています。

  kernel/build以下のディレクトリは

   プロセッサアーキテクチャ名/バージョン名/コンパイラセット

  の順で、階層管理されています。
  例えば、SH2 を日立製のshcコンパイラで使いたい場合は

  kernel/build/sh/sh2/shc

  がビルドディレクトリとなります。

  ビルドディレクトリにおいて

  [GNU make の場合]
    make -f gmake.mak

  [nmake の場合]
    nmake -f nmake.mak

  など、と実行すれば、カーネルライブラリが出来上がります。


4. カーネルの使い方

  HOS-V4aカーネルは、ユーザーアプリケーションにライブラリを
リンクする形で利用します。
  ライブラリ形式での提供ですので、スタートアップルーチンや
割込みベクタテーブルなどは、サンプル等を参考に、ユーザー側で
準備する必要があります。
  これにコンフィギュレータ(cfgrtr.txt参照)にて、作成した
kernel_cfg.c をコンパイルしてリンクすることで HOSのAPIが
利用可能となります。

  ユーザーアプリケーションをコンパイルする場合には、
  kernel/include にインクルードパスを指定しておく必要があります。
  利用するコンパイラの仕様にしたがって、インクルードパスを
適切に設定してください。


5. HOS-V4a独自API

  HOS-V4aはμITRON4.0仕様準拠のAPIの他に、独自のAPIを備えています。
  μITRON4.0仕様では、実装依存APIは vxxx_xxx の形で提供することと
定めており、HOS-V4a の独自APIもこの形式を取ります。


5.1 カーネルの起動
 【API】
     ER vsta_knl(void);

 【機能】
     カーネル動作を開始します。
     ハードウェア初期化やライブラリ初期化など、C言語の前処理が終わった後に
   呼び出してください。


5.2 割込み要因のクリア
 【API】
     ER vclr_int(INTNO intno);

 【機能】
     割込みコントローラ(IRC)に、割込み要因の保留＆クリア機構があった場合に、
   intnoで指定した割込み番号の割込み要因クリアを行います。

 【補足】
     ターゲット依存である為、提供されないプロセッサも存在します。

     本APIはIRCに割込み要因の保留があった場合に適用されるもので、周辺
   デバイス側の割込み要因をクリアするものではないので注意が必要です。

     割込みサービスルーチン(ISR)は１つの定割込み番号に複数のサービスを
   登録することも可能である為、適切なタイミングでクリアしてください。
     一般的にはエッジトリガの割込み(発生時のみトリガが起こる)では、
   割込み処理の前にクリア、レベル割込み(割込み要因が解決するまで割込み
   信号が消えない)では割込み処理の後にクリアします。


5.3 割込みレベル変更
 【API】
     ER vchg_ilv(INTNO intno, INT ilv);

     割込みコントローラ(IRC)に、割込み要因毎に割込み優先レベル設定が
   あった場合に、intnoで指定した割込み番号の割込み優先レベルをilvに
   設定します。

 【補足】
     ターゲット依存である為、提供されないプロセッサも存在します。
     本APIはIRCに割込みレベル機能があった場合に適用されるものです。


5.4 割込みレベル取得
 【API】
     ER vget_ilv(INTNO intno, INT *p_ilv);

     割込みコントローラ(IRC)に、割込み要因毎に割込み優先レベル設定が
   あった場合に、intnoで指定した割込み番号の現在の割込み優先レベルを
   p_ilv の指すアドレスに格納します。

 【補足】
     ターゲット依存である為、提供されないプロセッサも存在します。
     本APIはIRCに割込みレベル機能があった場合に適用されるものです。



6. カーネルのカスタマイズ

  HOS-V4a は用途に応じて、利用しないAPIや属性を取り外したり、
適用する内部アルゴリズムを選択することで、メモリを削減したり、
パフォーマンスを重視したりといったカスタマイズが可能な構成に
なっています。

  具体的には、kernel/include/config 以下のインクルードファイルを
修正することによってカーネルの細かなカスタマイズが可能です。

  例えば、オブジェクトの動的生成／削除を利用しないのであれば、
オブジェクト管理構造を単純化できます。タスク数やオブジェクト数が
少なければ、メモリを削減して単純なアルゴリズムを適用しても
パフォーマンスは落ちませんし、intがcharに置き換えられる部分も
出てきます。

  HOS-V4a は、メモリ制約の厳しい用途から、大規模用途まで
自由にカスタマイズしながら適用できるOSを目指しています。



------------------------------------------------------------------------------
 end of file
------------------------------------------------------------------------------
