OSDN Git Service

(none)
[hos/hos-v4a.git] / document / kernel.txt
1 ------------------------------------------------------------------------------
2   Hyper Operating System V4 Advance  --μITRON4.0仕様OS                       
3     カーネル ドキュメント                                                     
4                                                                               
5                                        Copyright (C) 1998-2007 by Project HOS 
6                                        http://sourceforge.jp/projects/hos/    
7 ------------------------------------------------------------------------------
8
9
10 (注意)
11    現時点では未実装の機能も含みます。
12
13
14
15 1. 概要
16
17   本ドキュメントは Hyper Operating System V4 Advance (以下 HOS-V4a)の
18 カーネルについての説明を記載します。
19
20
21 2. カーネルのビルド
22
23   kernel/build ディレクトリの下に、各ターゲットプロセッサ毎に
24 ビルド環境を用意しています。
25   現時点では、環境は GNU make 系のみ用意しております。
26   近年では、Windows系 及び UNIX系 どちらでも GNU make が利用可能に
27 なってきておりますので、別途入手をお願いします。
28   将来的には nmake などその他の環境も考慮に入れたいと考えています。
29
30   ターゲットプロセッサのディレクトリで
31
32   make -f gmake.mak
33
34   など、と実行すれば、カーネルライブラリが出来上がります。
35
36
37 3. カーネルの使い方
38
39   HOS-V4aカーネルは、ユーザーアプリケーションにライブラリを
40 リンクする形で利用します。
41   ライブラリ形式での提供ですので、スタートアップルーチンや
42 割込みベクタテーブルなどは、サンプル等を参考に、ユーザー側で
43 準備する必要があります。
44   これにコンフィギュレータ(h4acfg.txt参照)にて、作成した
45 kernel_cfg.c をコンパイルしてリンクすることで HOSのAPIが
46 利用可能となります。
47
48   ユーザーアプリケーションをコンパイルする場合には、
49   kernel/include にインクルードパスを指定しておく必要があります。
50   利用するコンパイラの仕様にしたがって、インクルードパスを
51 適切に設定してください。
52
53
54 4. HOS-V4a独自API
55
56   HOS-V4aはμITRON4.0仕様準拠のAPIの他に、独自のAPIを備えています。
57   μITRON4.0仕様では、実装依存APIは vxxx_xxx の形で提供することと
58 定めており、HOS-V4a の独自APIもこの形式を取ります。
59
60
61 4.1 カーネルの起動
62  【API】
63      ER vsta_knl(void);
64
65  【機能】
66      カーネル動作を開始します。
67      ハードウェア初期化やライブラリ初期化など、C言語の前処理が終わった後に
68    呼び出してください。
69
70
71 4.2 割込み要因のクリア
72  【API】
73      ER vclr_int(INTNO intno);
74
75  【機能】
76      割込みコントローラ(IRC)に、割込み要因の保留&クリア機構があった場合に、
77    intnoで指定した割込み番号の割込み要因クリアを行います。
78
79  【補足】
80      ターゲット依存である為、提供されないプロセッサも存在します。
81
82      本APIはIRCに割込み要因の保留があった場合に適用されるもので、周辺
83    デバイス側の割込み要因をクリアするものではないので注意が必要です。
84
85      割込みサービスルーチン(ISR)は1つの定割込み番号に複数のサービスを
86    登録することも可能である為、適切なタイミングでクリアしてください。
87      一般的にはエッジトリガの割込み(発生時のみトリガが起こる)では、
88    割込み処理の前にクリア、レベル割込み(割込み要因が解決するまで割込み
89    信号が消えない)では割込み処理の後にクリアします。
90
91
92 4.3 割込みレベル変更
93  【API】
94      ER vchg_ilv(INTNO intno, INT ilv);
95
96      割込みコントローラ(IRC)に、割込み要因毎に割込み優先レベル設定が
97    あった場合に、intnoで指定した割込み番号の割込み優先レベルをilvに
98    設定します。
99
100  【補足】
101      ターゲット依存である為、提供されないプロセッサも存在します。
102      本APIはIRCに割込みレベル機能があった場合に適用されるものです。
103
104
105 4.4 割込みレベル取得
106  【API】
107      ER vget_ilv(INTNO intno, INT *p_ilv);
108
109      割込みコントローラ(IRC)に、割込み要因毎に割込み優先レベル設定が
110    あった場合に、intnoで指定した割込み番号の現在の割込み優先レベルを
111    p_ilv の指すアドレスに格納します。
112
113  【補足】
114      ターゲット依存である為、提供されないプロセッサも存在します。
115      本APIはIRCに割込みレベル機能があった場合に適用されるものです。
116
117
118
119 4. カーネルのカスタマイズ
120
121   HOS-V4a は用途に応じて、利用しないAPIや属性を取り外したり、
122 適用する内部アルゴリズムを選択することで、メモリを削減したり、
123 パフォーマンスを重視したりといったカスタマイズが可能な構成に
124 なっています。
125
126   具体的には、kernel/include/config 以下のインクルードファイルを
127 修正することによってカーネルの細かなカスタマイズが可能です。
128
129   例えば、オブジェクトの動的生成/削除を利用しないのであれば、
130 オブジェクト管理構造を単純化できます。タスク数やオブジェクト数が
131 少なければ、メモリを削減して単純なアルゴリズムを適用しても
132 パフォーマンスは落ちませんし、intがcharに置き換えられる部分も
133 出てきます。
134
135   HOS-V4a は、メモリ制約の厳しい用途から、大規模用途まで
136 自由にカスタマイズしながら適用できるOSを目指しています。
137
138
139
140
141 ------------------------------------------------------------------------------
142  end of file
143 ------------------------------------------------------------------------------