(a) | μITRON4.0仕様に準拠しているというために必要な最低限の機能を持っていること. |
(b) | μITRON4.0仕様で規定されている機能と同等の機能を持つ場合には,その機能仕様が,μITRON4.0仕様の規定に合致していること.ただし,コンフィギュレータを用意しない場合には,μITRON4.0仕様の静的APIの仕様に合致している必要はない. |
(c) | μITRON4.0仕様で規定されていない機能を持つ場合には,その機能仕様が,μITRON4.0仕様が実装独自の拡張方法に関して設けている規定に合致していること.ただし,実装が複数種類のAPIをサポートする場合には,μITRON4.0仕様準拠のAPI以外のAPIに対してはこの規定は適用されない. |
μITRON4.0仕様に準拠するためには
作成日 | : | 2020/12/11 |
---|---|---|
最終更新日 | : | 2020/12/11 |
μITRON4.0仕様に準拠するためには
作成日 | : | 2020/12/11 |
---|---|---|
最終更新日 | : | 2020/12/11 |
概要
本稿は、自作OS Advent Calendar 2020の11日目の記事です。 あくまでLangurの私見ですので偏見等混じっている可能性があります。 μITRON4.0仕様[1]に準拠するために必要なことをまとめます。また、本稿は第2世代 Xiaoの検討その2の焼き直しでもあります。
μITRON4.0仕様準拠の条件
μITRON4.0仕様 Ver.4.03.03の第5章に仕様に準拠しているというための条件が記されています。
(a)については別に規程されているので後で考えることにします。(b)については問題はないでしょう。コンフィギュレータを用意しない場合には、静的APIについても省略できそうです。もちろん代替する手段を提供する必要はある認識です。悩ましいのは(c)ですが、μITRON4.0仕様準拠でないAPIに対してはこの規定は適用されないとあるので独自仕様のAPIの追加は問題ない認識で良さそうです。
ただし、別項にμITRON4.0仕様で規程されていない実装独自の機能を持つ場合には、実装について説明する製品マニュアルなどでそれらの点を明示しなければならないとあるので注意が必要そうです。
μITRON4.0仕様準拠の最低機能
μITRON4.0仕様準拠の条件の(a)について必要な最低限の機能が以下になります。
(a) | タスクを生成できること.タスクは少なくとも,実行状態,実行可能状態,休止状態の3つの状態を持つこと. |
(b) | μITRON4.0仕様のスケジューリング規則に従ったタスクスケジューリングを行うこと.ただし,優先度毎のタスクを1つに制限することや,優先度を1段階に制限することは許される |
(c) | 割込みハンドラ(または割込みサービスルーチン)を登録できること. |
(d) | タスクおよび割込みハンドラ(または割込みサービスルーチン)から,タスクを起動する(休止状態から実行できる状態にする)手段が用意されていること. |
(e) | 自タスクを終了する(実行状態から休止状態にする)手段が用意されていること. |
ここで、タスクスケジューリングを優先度に基づくプリエンプティブな優先度ベーススケジューリング方式であり、同じ優先度を持つタスクはFirst Come First Served(FCFS)方式でスケジューリングを実現できればよいです。サービスコールとしては以下をサポートすれば満たすことができると記されています。
CRE_TSK | タスクの生成 |
act_tsk/iact_tsk | タスクの起動 |
ext_tsk | タスクの終了 |
DEF_INH | 割込みハンドラの定義 |
実装しなければならないものをここまで減らせるとなると、実装できるのではないかという気がしてきます。極端な話、静的APIは直接埋め込むでも大丈夫そうです。そうすると、タスクの起動及び終了だけ動的に対応できれば良さそうです。
μITRON4.0仕様に対する拡張
μITRON4.0仕様準拠の条件の(c)に関する条項です。μITRON4.0仕様に規程されていない機能を実現するために独自にサービスコールを追加する場合にはサービスコール名称の前に「v」を付与する必要があるようです。
規定しなければならないC言語のヘッダファイル
μITRON4.0仕様 Ver.4.03.03 によるとC言語のヘッダファイルとして規定しなければならないファイルとして、ITRON仕様共通定義を記載したitron.h、カーネル仕様で規程されるサービスコールやデータ型等を記載したkernel.h、カーネルのコンフィギュレータが生成する自動割付結果を記載するkernel_id.hがあります。これらを μITRON4.0仕様 Ver.4.03.03 に沿って実装する必要があります。
今後の展開
第2世代のXiaoとして、まず「μITRON4.0仕様の最低条件に合致するOSを実装する」を基点とするために実装を開始していましたが 第2世代 Xiaoの実装 itron.hの実装 の後に仕事が忙しくなってしまい頓挫しています。12/19に開催される 【第7回】浜松IT合同勉強会2020 LT大会 へ登壇予定なのでそれまでに開発できればと考えています。前日の夜にタイムアタックとなりような予感がしますが...。