7 このドキュメントは,TOPPERS/ASPカーネルの仕様概要について説明したもので
8 ある.μITRON4.0仕様のスタンダードプロファイルに対する拡張および変更箇
11 ----------------------------------------------------------------------
13 Toyohashi Open Platform for Embedded Real-Time Systems/
14 Advanced Standard Profile Kernel
16 Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
17 Graduate School of Information Science, Nagoya Univ., JAPAN
19 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
20 ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
21 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
22 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
23 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
26 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
27 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
29 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
32 (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
33 作権表示,この利用条件および下記の無保証規定を掲載すること.
34 (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
36 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
38 また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
42 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
43 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
44 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
45 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
48 $Id: asp_spec.txt 1862 2010-07-25 11:49:51Z ertl-hiro $
49 ----------------------------------------------------------------------
53 [1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004年.
55 [2] トロン協会: μITRON4.0仕様 保護機能拡張(μITRON4.0/PX仕様),
58 [3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル
59 Release 1.4.3対応, 最終更新: 2007年4月23日.
61 [4] TOPPERSプロジェクト: TOPPERS標準割込み処理モデル, 最終更新: 2008年
66 TOPPERS/ASPカーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルを
67 ベースに,次のような拡張・改良を加えたものである.
69 ・割込み処理機能については,TOPPERS標準割込み処理モデルに準拠させる.
70 ・μITRON4.0仕様のスタンダードプロファイル外の機能の一部を導入する.
71 ・一部の仕様について,μITRON4.0仕様に対して変更を加える.
72 ・JSPカーネルにおける独自の拡張機能を一部変更して実装する.
73 ・ASPカーネルにおける独自の拡張機能を新たに実装する.
74 ・システムコンフィギュレーション処理を全面的に見直す.
75 ・拡張機能を実装するための拡張パッケージをサポートする.
76 ・TOPPERS組込みコンポーネントシステム(TECS)を導入する.
78 そのためASPカーネルは,μITRON4.0仕様に完全に準拠しているわけではなく,
81 μITRON4.0仕様では,実装独自に用意する静的APIおよびサービスコールの名称
82 には,先頭にそれぞれ"V"および"v"の文字を付加するものとしているが,ASPカー
85 以下では,μITRON4.0仕様のスタンダードプロファイルに対する拡張および変
88 ○スタンダードプロファイル外の機能の一部導入
90 μITRON4.0仕様には規定されているが,スタンダードプロファイルに含まれな
91 い(または,含まれるとは限らない)機能として,次の機能を実装する.
95 イベントフラグに対する複数タスク待ちの機能(TA_WMUL属性のイベントフラグ)
98 これにより,イベントフラグのセット(set_flg,iset_flg)で複数のタスクが
99 起床される可能性が生じる.多くのタスクを同時に待ち解除した場合,カーネ
100 ル内での割込み禁止時間が長くなるため,使用にあたっては注意が必要である.
104 アラームハンドラの機能を実装する.アラームハンドラ機能のために実装する
105 静的APIおよびサービスコールは次の通りである.
107 CRE_ALM アラームハンドラの生成(静的API)
108 sta_alm アラームハンドラの動作開始
109 ista_alm アラームハンドラの動作開始(非タスクコンテキスト用)
110 stp_alm アラームハンドラの動作停止
111 istp_alm アラームハンドラの動作停止(非タスクコンテキスト用)
115 スタンダードプロファイルでは,割込みハンドラと割込みサービスルーチンの
116 いずれかをサポートすればよいことになっている.JSPカーネルでは割込みハン
117 ドラのみを実装しているが,ASPカーネルではその両者を実装する.
119 割込みサービスルーチンの仕様については,TOPPERS標準割込み処理モデルの規
120 定に準拠する.割込みサービスルーチンを追加するサービスコールとして,次
121 の静的APIを実装する.この静的APIの仕様については,TOPPERS標準割込み処理
122 モデルにおいて,μITRON4.0仕様に対して拡張を加えている.
124 ATT_ISR 割込みサービスルーチンの追加(静的API)
128 スタンダードプロファイルに含まれない割込み管理機能として,次のサービス
129 コールを実装する.JSPカーネルでは,これらのサービスコールを実装するかど
130 うかはターゲット依存となっているが,ASPカーネルでは,TOPPERS標準割込み
131 処理モデルの規定に準拠して,ターゲット非依存に実装する.
140 主にデバッグ時向けの機能として,オブジェクトの状態参照機能を実装する.
141 具体的には,次のサービスコールを実装する.
149 ref_mpf 固定長メモリプールの状態参照
151 ref_alm アラームハンドラの状態参照
157 サイズの決まった整数型(B,H, Wなど)などについて,C99に準拠した型の名
158 称(int8_t,int16_t,int32_tなど)やそれと相性が良い名称に変更する.
159 ITRON標準データ型(B,H, Wなど)を必要とするアプリケーションのために,
162 (2) 非タスクコンテキストからのext_tsk
164 非タスクコンテキストからext_tskが呼ばれた場合,E_CTXエラーを返すものと
165 する.これにともなって,ext_tskをリターンする可能性があるものとし,返り
170 CPU例外ハンドラで行える操作については,TOPPERS標準割込み処理モデルに準
171 拠することとし,JSPカーネルの仕様を踏襲せず,μITRON4.0仕様にも従わない.
172 そのためのサービスコールとして,次のサービスコールを実装する.
174 xsns_dpn CPU例外発生時のディスパッチ保留状態の参照
175 xsns_xpn CPU例外発生時のタスク例外処理保留状態の参照
179 μITRON4.0/PX仕様において導入されたμITRON4.0仕様に対する変更として,カー
180 ネルの用いる管理領域の分離に関する仕様を一部採用する.
182 まず,固定長メモリプールの実装において,カーネルの用いる管理領域を分離
183 することに伴い,固定長メモリプールを生成する静的API(CRE_MPF)のパラメー
184 タに,固定長メモリプール管理領域の先頭番地(mpfmb)を追加する.
186 また,これにあわせて,データキューを生成する静的API(CRE_DTQ)の最後の
187 パラメータの名称を,データキュー管理領域の先頭番地(dtqmb)に変更する.
189 なお,メールボックスは,μITRON4.0仕様との互換性のために残している機能
190 と位置付け,カーネルの用いる管理領域の分離は行わない.そのため,メール
191 ボックスを生成する静的API(CRE_MBX)に対する変更はない.
193 (5) 処理単位とメモリ領域のデータ型の見直し
195 処理単位のエントリ番地のデータ型を,パラメータが反映されないFP型ではな
196 く,処理単位毎の専用のデータ型とする.例えば,タスクのエントリ番地のデー
197 タ型をTASK型,タスク例外処理ルーチンのデータ型をTEXRTN型とする.
199 また,スタック領域と固定長メモリプール領域のデータ型を,それぞれSTK_T型
202 (6) 値が0の定数(オブジェクト属性等)の見直し
204 コーディングミスを防ぐために,値が0の定数の扱いを見直す.オブジェクト属
205 性(TA_TFIFO等)については,値が0のものはデフォルト扱いして廃止し,定義
206 をitron.hに移す.値が0のサービスコールの動作モード(TWF_ANDW)やオブジェ
207 クトの状態(TTEX_ENA等)については,値を変更する.
211 強制待ち要求をネストする機能を廃止する.言い換えると,強制待ち要求ネス
212 ト数の最大値を1に固定する.これに伴い,frsm_tskは廃止し,itron.hにおい
213 てfrsm_tskをrsm_tskにマクロ定義する.また,TMAX_SUSCNTの定義をitron.hに
218 set_tim(システム時刻の設定)を廃止する.
222 sta_cycを呼び出した後,最初に周期ハンドラが起動される時刻を変更する.
223 μITRON4.0仕様では,sta_cycを呼び出してから周期ハンドラの起動周期で指定
224 した相対時間後としているが,ASPカーネルでは,起動位相で指定した相対時間
229 JSPカーネルにおける独自の拡張機能の中で,以下の機能を実装する.
233 性能評価用システム時刻参照機能とは,ASPカーネル上で動作するタスクやASP
234 カーネル自身の性能を計測するための,システム時刻をμ秒単位で読み出す機
235 能である.この機能のためのサービスコールは次の通りである(JSPカーネルと
238 get_utm 性能評価用システム時刻の参照
240 JSPカーネルからの仕様変更として,get_utmは任意のコンテキストから呼び出
241 すことができるものする.また,性能評価用システム時刻の型(SYSUTM)を,
242 ターゲット非依存部でulong_tに定義する.
246 ASPカーネルでは,システムの終了時に呼び出される終了処理ルーチンを登録す
247 るための機能をサポートする.この機能のための静的APIは次の通りである.
249 ATT_TER 終了処理ルーチンの追加(静的API)
253 カーネル上で動作するタスクから呼び出される関数が,カーネルの初期化完了
254 前や終了処理開始後にも呼び出される可能性がある場合には,その中でカーネ
255 ルのサービスコールを呼び出せるかを判別することが必要となる.この機能の
256 ためのサービスコールは次の通りである(JSPカーネルとは名称を変更した).
264 割込み要求ラインの属性を設定する機能として,TOPPERS標準割込み処理モデル
267 CFG_INT 割込み要求ラインの属性の設定(静的API)
269 (2) 同期・通信オブジェクトの再初期化機能
271 同期・通信オブジェクトを初期状態に戻すための機能として,次のサービスコー
278 ini_mpf 固定長メモリプールの再初期化
280 同期・通信オブジェクトの再初期化の際に,その同期・通信オブジェクトに対
281 して待ち状態となっていたタスクはすべて待ち解除される.待ち解除されたタ
282 スクに対しては,E_DLTを返す.E_DLTは,スタンダードプロファイルでは使用
285 そのため,これらのサービスコールにより,複数のタスクが起床される可能性
286 が生じる.多くのタスクを同時に待ち解除した場合,カーネル内での割込み禁
287 止時間が長くなるため,使用にあたっては注意が必要である.
289 同期・通信オブジェクトを再初期化する際に,アプリケーション側との整合性
290 を保つのはアプリケーションの責任である.具体的には,固定長メモリプール
291 を再初期化する際には,そこから獲得済みのメモリブロックをそれ以降使わな
292 いようにしなければならない.また,メールボックスを再初期化する際には,
293 メールボックスに送信されたメッセージ領域を回収しなければならない.
297 優先度付きのデータキューの機能を新設する.優先度付きデータキュー機能の
298 ために実装する静的APIおよびサービスコールは次の通りである.
301 snd_pdq 優先度データキューへの送信
302 psnd_pdq 優先度データキューへの送信(ポーリング)
303 ipsnd_pdq 優先度データキューへの送信(ポーリング,非タスクコンテキスト)
304 tsnd_pdq 優先度データキューへの送信(タイムアウトあり)
305 rcv_pdq 優先度データキューからの受信
306 prcv_pdq 優先度データキューからの受信(ポーリング)
307 trcv_pdq 優先度データキューからの受信(タイムアウトあり)
308 ini_pdq 優先度データキューの再初期化
309 ref_pdq 優先度データキューの状態参照
311 ここで,優先度データキューに蓄積されたデータの数が多い場合,優先度デー
312 タキューへのデータの送信を行うサービスコール(snd_pdq,psnd_pdq,
313 ipsnd_pdq,tsnd_pdq)の処理時間が長くなり,カーネル内での割込み禁止時間
314 が長くなるため,使用にあたっては注意が必要である.
318 自タスクの拡張情報を参照するためのサービスコールを新設する.ライブラリ
325 致命的なエラーが起こった場合などにカーネルを終了させるためのサービスコー
326 ルを新設する.この機能は,μITRON4.0仕様の機能分類では,システム構成管
327 理機能に分類する(JSPカーネルでは,kernel_exitという名称で,実質的にこ
332 ASPカーネルでは,このサービスコールからリターンすることはないが,保護機
333 能を持ったカーネルではエラーリターンする可能性があるため,返り値の型を
336 これに伴って,JSPカーネルのkernel_startを,sta_kerに名称変更する.ただ
337 し,sta_kerはサービスコールとは見なさないことにする.
339 (6) 非タスクコンテキスト用のスタック領域の設定
341 非タスクコンテキスト用のスタック領域の先頭番地とサイズを指定するための
342 静的APIを新設する.また,この静的APIにより,非タスクコンテキスト用のス
343 タック領域のサイズのみを指定することもできる.
345 DEF_ICS 非タスクコンテキスト用のスタック領域の定義
347 ○JSPカーネルにおける実装定義/実装依存規定からの変更
349 μITRON4.0仕様で実装定義または実装依存とされている仕様の中で,以下のも
352 (1) アプリケーション向けのインクルードファイルの構成の整理
354 カーネルを呼び出すアプリケーションからはkernel.hを,SILを呼び出すアプリ
355 ケーションからはsil.hをインクルードすればよいものとし,t_services.hと
358 また,kernel.hとsil.hの共通部分としてt_stddef.hを用意し,カーネルとSIL
359 のいずれも呼び出さないアプリケーションからは,t_stddef.hをインクルード
360 すればよいものとする.itron.hは,μITRON4.0仕様との互換性が必要な場合に
363 (2) 割込み処理/例外処理関連の型の定義の変更
365 割込みハンドラ番号の型(INHNO),割込み番号の型(INTNO),CPU例外ハンド
366 ラ番号の型(EXCNO)を,ターゲット非依存部で,いずれもuint_t型に定義する.
368 (3) 処理単位の実行開始/リターン時のシステム状態の規定
370 処理単位の実行開始/リターン時のシステム状態について,μITRON4.0仕様に
371 おいて実装依存であった点を厳密に規定し,ターゲットによる違いが生じない
376 システム時刻を更新する機構をカーネル内部に持つ扱いとし,サービスコール
381 JSPカーネルでは,カーネルの用いる領域はすべて自動割付けであったが,ASP
382 カーネルでは,タスクのスタック領域と固定長メモリプールの固定長メモリプー
383 ル領域については,静的APIで先頭番地を指定することもできるものとする(自
386 (6) カーネル管理外の割込みの扱いの規定
388 JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを,
389 ASPカーネルでは,TOPPERS標準割込み処理モデルの規定に準拠して,可能な範
390 囲で標準化する.ただし,NMI以外にカーネル管理外の割込みを設けるかや,ど
391 の割込み優先度より高いものをカーネル管理外とするかは,ターゲット毎に定
394 ○システムコンフィギュレーション処理の見直し
396 システムコンフィギュレーション処理を全面的に見直し,システムコンフィギュ
397 レーションファイル中におけるC言語のプリプロセッサディレクティブの扱いと
402 ASPカーネルでは,いくつかの拡張機能を実装するために,次の拡張パッケージ
405 ・ミューテックス機能拡張パッケージ(優先度継承ミューテックスを除く)
409 ○TOPPERS組込みコンポーネントシステム(TECS)の導入
411 デバイスドライバやシステムログ機能との接続にTOPPERS組込みコンポーネント
412 システム(TECS)を導入する.また,カーネルオブジェクトをTECSのコンポー
415 なお,Release 1.6の時点では,TECSに対応するための修正は,TECSの配布パッ
416 ケージに含まれており,ASPカーネルの配布パッケージには含まれていない.