既存のリアルタイムOS仕様との関係

本節では、μT-Kernel 3.0の仕様と関係の深い既存のリアルタイムOS仕様との差異のうち、主なものを示す。

μT-Kernel 2.0との関係

  1. プロセス管理や仮想記憶を想定した機能の削除

    μT-Kernel 3.0は、16ビットから32ビットのCPUを搭載した小規模な組込みシステムやIoTエッジノードを制御するリアルタイムOSである。プロセス管理や仮想記憶の機能を持つ情報系汎用OSのカーネルとして利用することは想定していない。このため、μT-Kernel 2.0が持っていたアドレス空間管理機能(アドレス空間設定、アドレス空間チェック、論理アドレス空間管理)やシステムメモリ割当ての機能は、μT-Kernel 3.0には含まれていない。また、サブシステム管理機能のうち、スタートアップ/クリーンアップ処理やリソースグループに関連する機能は、μT-Kernel 3.0には含まれていない。

  2. システム時刻を扱うAPIの追加

    μT-Kernel 3.0では、1970年1月1日0時0分0秒(UTC)をシステム時刻の起点とするAPIとして、tk_set_utc, tk_set_utc_u, tk_get_utc, tk_get_utc_u, td_get_utc, td_get_utc_uが追加されている。

  3. ランデブ機能の削除

    μT-Kernel 3.0では、T-Kernelの拡張同期・通信機能のひとつであったランデブ機能が削除されている。

T-Kernel 2.0との関係

  1. プロセス管理や仮想記憶を想定した機能の削除

    μT-Kernel 3.0は、16ビットから32ビットのCPUを搭載した小規模な組込みシステムやIoTエッジノードを制御するリアルタイムOSである。プロセス管理や仮想記憶の機能を持つ情報系汎用OSのカーネルとして利用することは想定していない。このため、T-Kernelが持っていたアドレス空間管理機能(アドレス空間設定、アドレス空間チェック、論理アドレス空間管理)やシステムメモリ割当ての機能は、μT-Kernel 3.0には含まれていない。また、サブシステム管理機能のうち、スタートアップ/クリーンアップ処理やリソースグループに関連する機能は、μT-Kernel 3.0には含まれていない。

  2. サービスプロファイルの導入

    小規模な組込みシステムを対象としたμT-Kernelにおいて、最適化・適応化を行いやすい仕様としながらも、ミドルウェアやアプリケションの流通性・移植性を維持するための仕組みとして、μT-Kernelの実装依存性を記述するための仕組みを導入している。具体的な説明については、サービスプロファイルμT-Kernelの概念 を参照のこと。

  3. ユーザバッファの指定

    スタックやメモリプール等の内部メモリ領域を必要とするAPIにおいて、カーネル内でのメモリの自動割当てを行う代わりに、ユーザが指定したバッファ領域を利用する指定が可能である。一般には TA_USERBUF の指定を行うことでユーザバッファの指定が有効となる。

  4. 16ビットCPUを想定した型の変更

    μT-Kernelの対象には16ビットCPUも含まれており、INT型やUINT型で表現できる整数範囲が16ビット整数の範囲に限られる場合がある。このため、T-Kernel 2.0の一部のAPI引数や構造体メンバ等に対して、必要な値域を表現するのに十分なビット幅を持った整数型への置き換えを行なっている。

  5. 小規模組込みシステムを対象とした適応化

    μT-Kernelは小規模な組込みシステムを対象としていることから、それにあわせた仕様の適応化を行なっている。例としては、タスク優先度の上限値についてより小さい値での実装を許容している点などが挙げられる。

  6. 割込み管理機能の整理と拡張

    μT-Kernel 3.0では、T-Kernel 2.0の割込み管理機能をベースとした上で、それを整理・拡張した割込み管理機能を提供する。具体的には以下の点が異なったものとなっている。

    1. 割込みマスクレベルの設定・取得機能の追加

      CPUまたは割込みコントローラの割込みマスクレベルを設定・取得するAPIとして、SetCpuIntLevel, GetCpuIntLevel, SetCtrlIntLevel, GetCtrlIntLevel を追加する。

    2. 割込みベクタ番号(INTVEC)の廃止

      割込みに関する番号体系を単純化し分かりやすくするため、割込みベクタ番号(INTVEC)による指定を廃止した。T-Kernel 2.0においてINTVECを引数とするAPIについては、すべて tk_def_int で利用される番号と共通の割込み番号を代わりに指定する。

  7. システム時刻を扱うAPIの追加

    μT-Kernel 3.0では、1970年1月1日0時0分0秒(UTC)をシステム時刻の起点とするAPIとして、tk_set_utc, tk_set_utc_u, tk_get_utc, tk_get_utc_u, td_get_utc, td_get_utc_uが追加されている。

  8. ランデブ機能の削除

    μT-Kernel 3.0では、T-Kernelの拡張同期・通信機能のひとつであったランデブ機能が削除されている。

IEEE 2050-2018との関係

μT-Kernel 3.0の仕様は、IEEEがIoTエッジノード向けの標準OSとして仕様を定めた「IEEE 2050-2018」の仕様に対して、上位互換である。このため、μT-Kernel 3.0の仕様に準拠したOSであれば、そのままIEEE 2050-2018の仕様にも準拠したOSとなる。

逆に、IEEE 2050-2018の仕様は、μT-Kernel 3.0の仕様のサブセットとなっている。μT-Kernel 3.0の機能のうち、サブシステム管理機能と、μT-Kernel/DSで提供されるデバッガ用の機能(カーネル内部状態取得機能および実行トレース機能)については、IEEE 2050-2018の仕様には含まれない。また、DSオブジェクト名称(dsname)に関連する機能や、1985年1月1日0時0分0秒(GMT)を起点とするシステム時刻を扱うAPI(tk_get_tim, tk_get_tim_u, tk_set_tim, tk_set_tim_u)についても、IEEE 2050-2018の仕様には含まれない。