TOPPERS/ASP3カーネルの仕様概要 対応バージョン: Release 3.0 最終更新: 2016年1月10日 このドキュメントは,TOPPERS/ASP3カーネル(TOPPERS/ASPカーネル Release 3.X)の仕様概要について説明したものである.μITRON4.0仕様のスタンダード プロファイルに対する拡張および変更箇所を中心に説明するが,TOPPERS/JSPカー ネルおよびTOPPERS/ASPカーネルRelease 1.Xからの変更箇所もわかるように説 明する. なお,TOPPERS/ASP3カーネルの詳細な仕様については,「TOPPERS第3世代カー ネル(ITRON系)統合仕様書」を参照すること. ---------------------------------------------------------------------- TOPPERS/ASP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Advanced Standard Profile Kernel Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory Graduate School of Information Science, Nagoya Univ., JAPAN 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 権表示,この利用条件および下記の無保証規定が,そのままの形でソー スコード中に含まれていること. (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 の無保証規定を掲載すること. (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 用できない形で再配布する場合には,次のいずれかの条件を満たすこ と. (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 作権表示,この利用条件および下記の無保証規定を掲載すること. (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 報告すること. (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 免責すること. 本ソフトウェアは,無保証で提供されているものである.上記著作権者お よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ の責任を負わない. $Id: asp_spec.txt 493 2016-01-10 07:17:13Z ertl-hiro $ ---------------------------------------------------------------------- ○目次 ・前提となる文章 ・このドキュメントの読み方 ・仕様の概略 ・スタンダードプロファイル外の機能の一部導入 (1-1) イベントフラグの複数タスク待ち (1-2) ミューテックス (1-3) アラームハンドラ (1-4) 割込みサービスルーチン (1-5) 割込み管理機能 (1-6) オブジェクトの状態参照 ・スタンダードプロファイルの機能の一部廃止 (2-1) タスク例外処理機能 (2-2) メールボックス ・独自の拡張機能 (3-1) タスク終了要求機能 (3-2) 優先度データキュー (3-3) システム時刻の調整 (3-4) 同期・通信オブジェクトの再初期化 (3-5) 周期通知機能とアラーム通知機能 (3-6) タスクとスケジューリング状態の参照 (3-7) 起動要求をキューイングしないタスク (3-8) 自タスクの拡張情報の参照 (3-9) 高分解能タイマの参照 (3-10) カーネル動作状態の参照 (3-11) カーネルの終了 (3-12) 割込み要求ラインの属性の設定 (3-13) 非タスクコンテキスト用のスタック領域の設定 (3-14) 終了処理ルーチン ・μITRON4.0仕様に対する修正 (4-1) 非タスクコンテキストから呼び出せるサービスコールの名称 (4-2) ITRON標準データ型 (4-3) 値が0の定数(オブジェクト属性等) (4-4) カーネルの用いる管理領域の分離と指定方法 (4-5) 処理単位とメモリ領域のデータ型 (4-6) 割込み処理/例外処理関連の型の定義 (4-7) 時間管理関連のデータ型と時間単位 (4-8) 処理単位の実行開始/リターン時のシステム状態 (4-9) カーネル管理外の割込みの扱いの規定 (4-10) CPU例外ハンドラで行える操作 (4-11) 非タスクコンテキストからのext_tsk (4-12) 強制待ち要求ネストの廃止 (4-13) システム時刻の更新機構の扱い (4-14) システム時刻の設定機能のパラメータの変更 (4-15) 周期ハンドラの仕様変更 (4-16) アプリケーション向けのインクルードファイルの構成 ・システムコンフィギュレーション処理の見直し ・拡張パッケージのサポート ・TOPPERS組込みコンポーネントシステム(TECS)の導入 ○前提となる文書 [1] トロン協会: μITRON4.0仕様,Ver.4.02.00,2004年. [2] トロン協会: μITRON4.0仕様 保護機能拡張(μITRON4.0/PX仕様), Ver.1.00.00,2002年. [3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル Release 1.4.3対応,最終更新: 2007年4月23日. [4] TOPPERSプロジェクト: TOPPERS新世代カーネル統合仕様書,Release 1.7.1,最終更新: 2015年5月30日. [5] TOPPERSプロジェクト: TOPPERS/ASPカーネル ユーザーズマニュアル, Release 1.9.2,最終更新: 2015年2月8日. [6] TOPPERSプロジェクト: TOPPERS第3世代カーネル(ITRON系)統合仕様書, Release 3.B.0,最終更新: 2015年6月29日. ○このドキュメントの読み方 このドキュメントでは,TOPPERS/ASP3カーネル(TOPPERS/ASPカーネル Release 3.X.以下,ASP3カーネル)の仕様の概要について,μITRON4.0仕様の スタンダードプロファイルに対してどのような拡張および変更を行ったかとい う観点から記述する.また,TOPPERS/JSPカーネル(以下,JSPカーネル)およ びTOPPERS/ASPカーネル Release 1.X(以下,ASP1カーネル)との違いについて も記述する. JSPカーネルの仕様は,基本的にはμITRON4.0仕様のスタンダードプロファイル に準拠している.μITRON4.0仕様のスタンダードプロファイルに関する記述は, 明示的に記述しない限り,JSPカーネルにも当てはまる. ASP1カーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルよりは, ASP3カーネルの仕様に近い.そこで,このドキュメントで単に「ASPカーネルで は」と記述した場合には,ASP1カーネルとASP3カーネルの両方に当てはまるこ とを示す.ASP1カーネルまたはASP3カーネルのいずれかにしか当てはまらない 場合には,明示的に「ASP1カーネルでは」「ASP3カーネルでは」と記述する. ○仕様の概略 ASPカーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルをベースに, 様々な拡張および変更を加えたものである. ASPカーネルでは,μITRON4.0仕様で実装定義の仕様が多く残っていた割込み処 理機能について,TOPPERS標準割込み処理モデルに従って,ターゲット定義の仕 様が最小限になるように規定している. μITRON4.0仕様では,実装独自に用意する静的APIおよびサービスコールの名称 には,先頭にそれぞれ"V"および"v"の文字を付加するものとしているが,ASPカー ネルではこの規定は採用していない. また,μITRON4.0仕様およびASP1カーネルでは,サービスコール名が"i"で始ま るサービスコールを,非タスクコンテキスト専用のサービスコールと呼び,名 前の通り,非タスクコンテキストのみから呼び出すことができるものとしてい るが,ASP3カーネルではこの仕様は採用しておらず,非タスクコンテキストか らもタスクコンテキストと同じ名称のサービスコールを呼び出すことにしてい る.これに伴い,ASP3カーネルでは,名称が"i"で始まるサービスコールは, "i"を取ったサービスコールにマクロ定義している. ○スタンダードプロファイル外の機能の一部導入 μITRON4.0仕様には規定されているが,スタンダードプロファイルに含まれな い(または,含まれるとは限らない)機能として,ASPカーネルでは,次の機能 を実装している. (1-1) イベントフラグの複数タスク待ち イベントフラグに対する複数タスク待ちの機能(TA_WMUL属性のイベントフラグ) を実装している. これにより,イベントフラグのセット(set_flg)で複数のタスクが起床される 可能性が生じる.多くのタスクを同時に待ち解除した場合,カーネル内での割 込み禁止時間が長くなるため,使用にあたっては注意が必要である. (1-2) ミューテックス ASP3カーネルでは,ミューテックスの機能(優先度継承属性を除く)を実装し ている.ただし,ミューテックスのロック解除は,ロックしたのと逆順で行わ なければならないものと制限している.また,chg_priにおいて,対象タスクが 同じ優先度のタスクの中で最低の優先順位となる条件を変更している. ミューテックス機能のために実装している静的APIおよびサービスコールは次の 通りである. CRE_MTX ミューテックスの生成(静的API) loc_mtx ミューテックスのロック ploc_mtx ミューテックスのロック(ポーリング) tloc_mtx ミューテックスのロック(タイムアウト付き) unl_mtx ミューテックスのロック解除 なお,ASP1カーネルでは,ミューテックスの機能をミューテックス機能拡張パッ ケージでサポートしている.ASP1カーネルのミューテックス機能拡張パッケー ジには,ロック解除順に関する制限はない. (1-3) アラームハンドラ アラームハンドラ(ASP3カーネルでは,アラーム通知)の機能を実装している. アラームハンドラ機能のために実装している静的APIおよびサービスコールは次 の通りである. CRE_ALM アラームハンドラの生成(静的API) sta_alm アラームハンドラの動作開始 stp_alm アラームハンドラの動作停止 (1-4) 割込みサービスルーチン μITRON4.0仕様のスタンダードプロファイルでは,割込みハンドラと割込みサー ビスルーチンのいずれかをサポートすればよいことになっている.JSPカーネル では割込みハンドラのみを実装しているが,ASPカーネルではその両者を実装し ている. 割込みサービスルーチンの仕様については,TOPPERS標準割込み処理モデルの規 定に準拠している.ASP3カーネルでは,割込みサービスルーチンを登録するサー ビスコールとして,次の静的APIを実装している. CRE_ISR 割込みサービスルーチンの生成(静的API) なお,ASP1カーネルでは,割込みサービスルーチンを登録するための静的APIと して,ATT_ISRを実装している.ASP1カーネルのATT_ISRでは,μITRON4.0仕様 のATT_ISRに対して,割込みサービスルーチン優先度のパラメータを追加してい るが,ASP3カーネルのCRE_ISRもこのパラメータを持っている. (1-5) 割込み管理機能 μITRON4.0仕様のスタンダードプロファイルに含まれない割込み管理機能とし て,次のサービスコールを実装している.JSPカーネルでは,これらのサービス コールを実装するかどうかはターゲット依存となっているが,ASPカーネルでは, TOPPERS標準割込み処理モデルの規定に準拠して,ターゲット非依存に実装して いる. dis_int 割込みの禁止 ena_int 割込みの許可 chg_ipm 割込み優先度マスクの変更 get_ipm 割込み優先度マスクの参照 ASP3カーネルでは,dis_intとena_intは,CPUロック状態でも,非タスクコンテ キストからも呼び出せるものとしている.ASP1カーネルでは,CPUロック状態か らは呼び出せるが,非タスクコンテキストからは呼び出せない. (1-6) オブジェクトの状態参照 デバッグ時向けの機能として,オブジェクトの状態参照機能を実装している. 具体的には,次のサービスコールを実装している. ref_tsk タスクの状態参照 ref_sem セマフォの状態参照 ref_flg イベントフラグの状態参照 ref_dtq データキューの状態参照 ref_mtx ミューテックスの状態参照 ref_mpf 固定長メモリプールの状態参照 ref_cyc 周期ハンドラの状態参照 ref_alm アラームハンドラの状態参照 ○スタンダードプロファイルの機能の一部廃止 μITRON4.0仕様のスタンダードプロファイルに含まれる機能の中で,ASP3カー ネルでは次の機能は実装していない.なお,ASP1カーネルでは,これらの機能 を実装している. (2-1) タスク例外処理機能 ASP3カーネルでは,実装が複雑化するのに対して,使用頻度が低いことから, タスク例外処理機能は実装していない.具体的には,μITRON4.0仕様のスタン ダードプロファイルに含まれる静的APIおよびサービスコールの中で,次の静的 APIおよびサービスコールを実装していない. DEF_TEX タスク例外処理ルーチンの定義(静的API) ras_tex タスク例外処理の要求 dis_tex タスク例外処理の禁止 ena_tex タスク例外処理の許可 sns_tex タスク例外処理禁止状態の参照 ASP1カーネルでは,上に加えて,次のサービスコールも実装しているが,ASP3 カーネルでは実装していない. ref_tex タスク例外処理の状態参照 なお,ASP3カーネルでは,タスク例外処理機能を廃止する代わりに,後述のタ スク終了要求機能を実装している. (2-2) メールボックス ASP3カーネルでは,保護機能対応カーネルとの互換性を重視し,メールボック スの機能は実装していない.具体的には,μITRON4.0仕様のスタンダードプロ ファイルに含まれる静的APIおよびサービスコールの中で,次の静的APIおよび サービスコールを実装していない. CRE_MBX メールボックスの生成(静的API) snd_mbx メールボックスへの送信 rcv_mbx メールボックスからの受信 prcv_mbx メールボックスからの受信(ポーリング) trcv_mbx メールボックスからの受信(タイムアウトあり) ASP1カーネルでは,上に加えて,次のサービスコールも実装しているが,ASP3 カーネルでは実装していない. ref_mbx メールボックスの状態参照 なお,メールボックスの機能は,データキューおよび優先度データキューの機 能で代替することができる. ○独自の拡張機能 ASPカーネルでは,μITRON4.0仕様に対する独自の拡張機能として,次の機能を 実装している. (3-1) タスク終了要求機能 ASP3カーネルでは,タスク例外処理機能に代えて,タスク終了要求機能を追加 している.具体的には,次のサービスコールを実装している. ras_ter タスクの終了要求 dis_ter タスク終了の禁止 ena_ter タスク終了の許可 sns_ter タスク終了禁止状態の参照 また,ref_tskで参照できる情報に,タスク終了要求状態(raster)とタスク終 了禁止状態か否か(dister)を追加している. タスクに対して終了要求が出された場合,待ち状態に入るすべてのサービスコー ルから,E_RASTERが返る可能性がある.E_RASTERは,μITRON4.0仕様やASP1カー ネルでは定義していないエラーコードである. (3-2) 優先度データキュー 優先度付きのデータキューの機能を追加している.優先度付きデータキュー機 能のために実装している静的APIおよびサービスコールは次の通りである. CRE_PDQ 優先度データキューの生成 snd_pdq 優先度データキューへの送信 psnd_pdq 優先度データキューへの送信(ポーリング) tsnd_pdq 優先度データキューへの送信(タイムアウトあり) rcv_pdq 優先度データキューからの受信 prcv_pdq 優先度データキューからの受信(ポーリング) trcv_pdq 優先度データキューからの受信(タイムアウトあり) ref_pdq 優先度データキューの状態参照 ここで,優先度データキューに蓄積されたデータの数が多い場合,優先度デー タキューへのデータの送信を行うサービスコール(snd_pdq,psnd_pdq, tsnd_pdq)の処理時間が長くなり,カーネル内での割込み禁止時間が長くなる ため,使用にあたっては注意が必要である. (3-3) システム時刻の調整 ASP3カーネルでは,システム時刻を調整するための機能を追加している.この 機能のためのサービスコールは次の通りである. adj_tim システム時刻の調整 (3-4) 同期・通信オブジェクトの再初期化 同期・通信オブジェクトを初期状態に戻すための機能として,次のサービスコー ルを実装している. ini_sem セマフォの再初期化 ini_flg イベントフラグの再初期化 ini_dtq データキューの再初期化 ini_pdq 優先度データキューの再初期化 ini_mtx ミューテックスの再初期化 ini_mpf 固定長メモリプールの再初期化 同期・通信オブジェクトの再初期化の際に,その同期・通信オブジェクトに対 して待ち状態となっていたタスクはすべて待ち解除される.待ち解除されたタ スクに対しては,E_DLTを返す.E_DLTは,μITRON4.0仕様のスタンダードプロ ファイルでは使用していないエラーコードである. そのため,これらのサービスコールにより,複数のタスクが起床される可能性 が生じる.多くのタスクを同時に待ち解除した場合,カーネル内での割込み禁 止時間が長くなるため,使用にあたっては注意が必要である. 同期・通信オブジェクトを再初期化する際に,アプリケーション側との整合性 を保つのはアプリケーションの責任である.例えば,固定長メモリプールを再 初期化する際には,そこから獲得済みのメモリブロックをそれ以降使わないよ うにしなければならない. (3-5) 周期通知機能とアラーム通知機能 ASP3カーネルでは,周期ハンドラ機能とアラームハンドラ機能を拡張し,周期 通知機能とアラーム通知機能を実装している. これによって,次の静的APIのパラメータと機能を変更している. CRE_CYC 周期通知の生成 CRE_ALM アラーム通知の生成 (3-6) タスクとスケジューリング状態の参照 ASP3カーネルでは,タスクとスケジューリング状態を参照するための機能とし て,次のサービスコールを実装している. get_tst タスク状態の参照 get_lod 実行できるタスクの数の参照 get_nth 指定した優先順位のタスクIDの参照 (3-7) 起動要求をキューイングしないタスク ASP3カーネルでは,起動要求をキューイングしないタスクを表すタスク属性と して,TA_NOACTQUEを追加している. (3-8) 自タスクの拡張情報の参照 ライブラリ等の中で用いることを想定して,自タスクの拡張情報を参照するた めのサービスコールを追加している. get_inf 自タスクの拡張情報の参照 (3-9) 高分解能タイマの参照 ASP3カーネルでは,カーネル上で動作するタスクやカーネル自身の性能評価に 用いることを目的に,高分解能タイマを参照するためのサービスコールを追加 している. fch_hrt 高分解能タイマの参照 なお,ASP1カーネルでは,性能評価に用いるためのサービスコールとして, get_utm(性能評価用システム時刻参照)をサポートしている.またJSPカーネ ルでは,同じ目的のサービスコールとして,vxget_timをサポートしている. (3-10) カーネル動作状態の参照 カーネル上で動作するタスクから呼び出される関数が,カーネルの初期化完了 前や終了処理開始後にも呼び出される可能性がある場合には,その中でカーネ ルのサービスコールを呼び出せるかを判別することが必要となる.この機能の ためのサービスコールは次の通りである. sns_ker カーネル非動作状態の参照 なお,JSPカーネルでは,独自の拡張機能としてこの機能をサポートしているが, サービスコールの名称はvsns_iniとしている. (3-11) カーネルの終了 致命的なエラーが起こった場合などにカーネルを終了させるためのサービスコー ルを追加している. ext_ker カーネルの終了 ASPカーネルではこのサービスコールからリターンすることはないが,保護機能 を持ったカーネルではエラーリターンする可能性があるため,返り値の型をER としている. JSPカーネルでは,kernel_exitという名称で,実質的にこの機能を用意してい る.また,カーネルの実行を開始する関数を,JSPカーネルではkernel_startと いう名称としていたのを,ASPカーネルではsta_kerに名称変更した.sta_kerは, サービスコールとは見なさないことにしている. (3-12) 割込み要求ラインの属性の設定 割込み要求ラインの属性を設定する機能として,TOPPERS標準割込み処理モデル で規定された次の静的APIを実装している. CFG_INT 割込み要求ラインの属性の設定(静的API) (3-13) 非タスクコンテキスト用のスタック領域の設定 非タスクコンテキスト用のスタック領域の先頭番地とサイズを指定するための 静的APIを新設している.また,この静的APIにより,非タスクコンテキスト用 のスタック領域のサイズのみを指定することもできる. DEF_ICS 非タスクコンテキスト用のスタック領域の設定 (3-14) 終了処理ルーチン システムの終了時に呼び出される終了処理ルーチンを登録するための機能をサ ポートしている.この機能のための静的APIは次の通りである. ATT_TER 終了処理ルーチンの追加(静的API) なお,JSPカーネルでは,独自の拡張機能としてこの機能をサポートしているが, 静的APIの名称はVATT_TERとしている. ○μITRON4.0仕様に対する変更 ASPカーネルでは,μITRON4.0仕様での規定に対して,次の変更を行っている. (4-1) 非タスクコンテキストから呼び出せるサービスコールの名称 ASP3カーネルでは,非タスクコンテキスト専用のサービスコールの概念を廃止 し,非タスクコンテキストからも,タスクコンテキストと同じ名称のサービス コールを呼び出すことにしている.これに伴い,名称が"i"で始まるサービスコー ルは,"i"を取ったサービスコールにマクロ定義している. (4-2) 標準データ型 ITRON標準データ型の中で,C90やC99にそれに相当するものがある場合には, C90やC99に準拠した型の名称に変更している.例えば,サイズの決まった整数 型(B,H,Wなど)はC99に準拠した型の名称(int8_t,int16_t,int32_tなど) に,VP_INTはC99準拠のintptr_tに,INTとUINTはC99の型名と相性が良いint_t とuint_tに,BOOLをbool_tに,それぞれ変更した.VPは,void *と等価である ため,用意しないことにした.逆に,いくつかのデータ型を新たに用いること にした.さらにASP3カーネルでは,SIZEはC90準拠のsize_tに変更した. なお,ITRON標準データ型(B,H,Wなど)を必要とするアプリケーションのた めに,itron.hを用意している. (4-3) 値が0の定数(オブジェクト属性等) コーディングミスを防ぐために,値が0の定数の扱いを見直した.オブジェクト 属性(TA_TFIFO等)については,値が0のものはデフォルト扱いして廃止し,定 義をitron.hに移した.値が0のサービスコールの動作モード(TWF_ANDW)やオ ブジェクトの状態(TCYC_STP等)については,値を変更した. (4-4) カーネルの用いる管理領域の分離と指定方法 μITRON4.0/PX仕様において導入されたμITRON4.0仕様に対する変更として,カー ネルの用いる管理領域の分離に関する仕様を一部採用している. まず,固定長メモリプールにおいて,カーネルの用いる管理領域を分離するこ とに伴い,固定長メモリプールを生成する静的API(CRE_MPF)のパラメータに, 固定長メモリプール管理領域の先頭番地(mpfmb)を追加している. また,これに整合させるために,データキューを生成する静的API(CRE_DTQ) の最後のパラメータの名称を,データキュー管理領域の先頭番地(dtqmb)に変 更している. JSPカーネルでは,カーネルの用いる領域はすべて自動割付けのみをサポートし ているが,ASPカーネルでは,タスクのスタック領域と固定長メモリプールの固 定長メモリプール領域については,静的APIで先頭番地を指定することもできる ものとしている(自動割付けもサポートしている). (4-5) 処理単位とメモリ領域のデータ型 処理単位のエントリ番地のデータ型を,パラメータが反映されないFP型ではな く,処理単位毎の専用のデータ型としている.例えば,タスクのメインルーチ ンの先頭番地のデータ型をTASK型,割込みサービスルーチンの先頭番地のデー タ型をISR型としている. また,スタック領域と固定長メモリプール領域の先頭番地のデータ型を,それ ぞれSTK_T型とMPF_T型としている. (4-6) 割込み処理/例外処理関連の型の定義 割込みハンドラ番号の型(INHNO),割込み番号の型(INTNO),CPU例外ハンド ラ番号の型(EXCNO)を,ターゲット非依存部で,いずれもuint_t型に定義して いる. (4-7) 時間管理関連のデータ型と時間単位 ASP3カーネルでは,システム時刻(SYSTIM型),相対時間(RELTIM型),タイ ムアウト時間(TMO型)の時間単位を,マイクロ秒に変更した.また,SYSTIMの サイズは64ビット(ただし,64ビットの整数型がサポートされていないターゲッ トでは32ビット),RELTIMとTMOのサイズは32ビットと規定した.さらに,TMO は符号無し整数型に変更した. μITRON4.0仕様のスタンダードプロファイルとASP1カーネルでは,これらの時 間の時間単位はミリ秒である.また,サイズは実装定義(最低の長さは規定さ れている)となっている. (4-8) 処理単位の実行開始/リターン時のシステム状態 処理単位の実行開始/リターン時のシステム状態について,μITRON4.0仕様に おいて実装依存であった点を厳密に規定し,ターゲットによる違いが生じない ようにしている. ASP1カーネルとASP3カーネルでは,割込みサービスルーチンとタイムイベント ハンドラの実行開始/リターン時の割込み優先度マスクの扱いが異なっている. (4-9) カーネル管理外の割込みの扱いの規定 JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを, ASPカーネルでは,TOPPERS標準割込み処理モデルの規定に準拠して,可能な範 囲で標準化している.ただし,NMI以外にカーネル管理外の割込みを設けるかや, どの割込み優先度より高いものをカーネル管理外とするかは,ターゲット毎に 定めることとしている. (4-10) CPU例外ハンドラで行える操作 CPU例外ハンドラで行える操作については,TOPPERS標準割込み処理モデルに準 拠することとし,μITRON4.0仕様には従っていない.そのためのサービスコー ルとして,次のサービスコールを実装している. xsns_dpn CPU例外発生時のディスパッチ保留状態の参照 ASP1カーネルでは,上に加えて,CPU例外発生時のタスク例外処理保留状態を参 照するサービスコール(xsns_xpn)も実装しているが,ASP3カーネルでは,タ スク例外処理機能の廃止に伴って廃止した. (4-11) 非タスクコンテキストからのext_tsk 非タスクコンテキストからext_tskが呼ばれた場合,E_CTXエラーを返すものと した.これにともなって,ext_tskをリターンする可能性があるものとし,返り 値の型をERとした. (4-12) 強制待ち要求ネストの廃止 強制待ち要求をネストする機能を廃止した.言い換えると,強制待ち要求ネス ト数の最大値を1に固定した.これに伴い,frsm_tskは廃止し,itron.hにおい てfrsm_tskをrsm_tskにマクロ定義している.ref_tskで参照できる情報から, 強制待ち要求ネスト数(suscnt)を削除した.また,TMAX_SUSCNTの定義を itron.hに移した. (4-13) システム時刻の更新機構の扱い システム時刻を更新する機構をカーネル内部に持つ扱いとし,サービスコール としてのisig_timは廃止した. (4-14) システム時刻の設定機能のパラメータの変更 ASP3カーネルでは,set_tim(システム時刻の設定)のパラメータを,システム 時刻へのポインタを渡す仕様から,システム時刻そのものを渡す仕様に変更し た. なお,ASP1カーネルでは,set_timはサポートしていない. (4-15) 周期ハンドラの仕様変更 sta_cycを呼び出した後,最初に周期ハンドラ(ASP3カーネルでは周期通知)が 起動される時刻を変更した.μITRON4.0仕様では,sta_cycを呼び出してから周 期ハンドラの起動周期で指定した相対時間後としているが,ASPカーネルでは, 起動位相で指定した相対時間後としている. (4-16) アプリケーション向けのインクルードファイルの構成 カーネルを呼び出すアプリケーションからはkernel.hを,SILを呼び出すアプリ ケーションからはsil.hをインクルードすればよいものとしている. また,kernel.hとsil.hの共通部分としてt_stddef.hを用意し,カーネルとSIL のいずれも呼び出さないアプリケーションからは,t_stddef.hをインクルード すればよいものとしている.itron.hは,μITRON4.0仕様との互換性が必要な場 合にインクルードするものとしている. JSPカーネルにおけるt_services.hとs_services.hは廃止した. ○システムコンフィギュレーション処理の見直し システムコンフィギュレーション処理を全面的に見直し,システムコンフィギュ レーションファイル中におけるC言語のプリプロセッサディレクティブの扱いと 静的APIのパラメータの分類を変更した. ○拡張パッケージのサポート ASP3カーネルでは,いくつかの拡張機能を実装するために,次の拡張パッケー ジをサポートしている. ・ドリフト調整機能拡張パッケージ ・メッセージバッファ機能拡張パッケージ ・オーバランハンドラ機能拡張パッケージ ・タスク優先度拡張パッケージ ・制約タスク拡張パッケージ ・サブ優先度機能拡張パッケージ ・動的生成機能拡張パッケージ ASP1カーネルでは,これらの拡張パッケージ以外に,ミューテックス機能拡張 パッケージもサポートしているが,ASP3カーネルでは,ミューテックスは標準 でサポートしていることから,拡張パッケージとしては廃止した.ASP1カーネ ルでは,ドリフト調整機能拡張パッケージとサブ優先度機能拡張パッケージは サポートしていない. ○TOPPERS組込みコンポーネントシステム(TECS)の導入 デバイスドライバやシステムログ機能などのシステムサービスを,TOPPERS組込 みコンポーネントシステム(TECS)を用いて実装している.また,カーネルオ ブジェクトをTECSのコンポーネントとして扱えるようにしている. なお,ASP1カーネルでは,TECSに対応するための修正は,TECSの配布パッケー ジに含まれており,ASP1カーネルの配布パッケージには含まれていない. 以上