既存の仕様からの差分

本節では、μT-Kernel 2.0の仕様の元となっている T-Kernel 2.0 および μT-Kernel 1.0 からの差分のうち主なものを示す。

T-Kernel 2.0からの差分

各APIについての詳細な差異については、各APIの説明における「T-Kernel 2.0との差異」の項目を参照のこと。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

μT-Kernel 1.0からの差分

各APIについての詳細な差異については、各APIの説明における「μT-Kernel 1.0との差異」の項目を参照のこと。

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

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

  2. T-Kernel 2.0に基づく仕様範囲の拡大

    μT-Kernel 2.0では、サービスプロファイルの導入により、MMUやFPUといったハードウェア機能機能に強くする機能や、効率に影響を及ぼす可能性のある機能についても、必須とすることなく取り入れることが可能となった。これに基づき、μT-Kernel 2.0ではT-Kernel 2.0との互換性の向上のために、サービスプロファイルの規定を設けた上での仕様範囲の拡大が行われている。μT-Kernel 1.0において廃止された機能も仕様範囲に含まれる形で追加されている。

  3. SZ型の導入

    μT-Kernel 1.0では、16ビットCPUにおいても32KB以上のメモリ領域等の指定を可能とするため、APIの引数や構造体メンバの型の一部をより大きなビット幅を持つ整数型に置き換えている。μT-Kernel 2.0では、16ビットCPUにおいて32KB以上のメモリ領域等の指定が不要なケースを想定し、これらの引数を新たに導入するSZ型に変更している。SZ型は実装依存のビット幅を持った整数型であり、CPUのビット幅やメモリ空間のサイズなどに応じて実装ごとに適切に定義される。