source: asp_ewarm/asp-1.7.0/doc/asp_spec.txt@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 15.6 KB
Line 
1
2 TOPPERS/ASPカーネルの仕様概要
3
4 対応バージョン: Release 1.7
5 最終更新: 2011年3月31日
6
7このドキュメントは,TOPPERS/ASPカーネルの仕様概要について説明したもので
8ある.μITRON4.0仕様のスタンダードプロファイルに対する拡張および変更箇
9所を中心に説明する.
10
11----------------------------------------------------------------------
12 TOPPERS/ASP Kernel
13 Toyohashi Open Platform for Embedded Real-Time Systems/
14 Advanced Standard Profile Kernel
15
16 Copyright (C) 2005-2011 by Embedded and Real-Time Systems Laboratory
17 Graduate School of Information Science, Nagoya Univ., JAPAN
18
19 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
20 ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
21 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
22 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
23 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
24 スコード中に含まれていること.
25 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
26 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
27 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 の無保証規定を掲載すること.
29 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
31 と.
32 (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
33 作権表示,この利用条件および下記の無保証規定を掲載すること.
34 (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
35 報告すること.
36 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
38 また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
40 免責すること.
41
42 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
43 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
44 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
45 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
46 の責任を負わない.
47
48 $Id: asp_spec.txt 2050 2011-04-03 02:37:44Z ertl-hiro $
49----------------------------------------------------------------------
50
51○前提となる文書
52
53[1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004年.
54
55[2] トロン協会: μITRON4.0仕様 保護機能拡張(μITRON4.0/PX仕様),
56 Ver.1.00.00, 2002年.
57
58[3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル
59 Release 1.4.3対応, 最終更新: 2007年4月23日.
60
61○仕様の概略
62
63TOPPERS/ASPカーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルを
64ベースに,次のような拡張・改良を加えたものである.
65
66・割込み処理機能については,TOPPERS標準割込み処理モデルに準拠させる.
67・μITRON4.0仕様のスタンダードプロファイル外の機能の一部を導入する.
68・一部の仕様について,μITRON4.0仕様に対して変更を加える.
69・JSPカーネルにおける独自の拡張機能を一部変更して実装する.
70・ASPカーネルにおける独自の拡張機能を新たに実装する.
71・システムコンフィギュレーション処理を全面的に見直す.
72・拡張機能を実装するための拡張パッケージをサポートする.
73・TOPPERS組込みコンポーネントシステム(TECS)を導入する.
74
75そのためASPカーネルは,μITRON4.0仕様に完全に準拠しているわけではなく,
76JSPカーネルの上位互換にもなっていない.
77
78μITRON4.0仕様では,実装独自に用意する静的APIおよびサービスコールの名称
79には,先頭にそれぞれ"V"および"v"の文字を付加するものとしているが,ASPカー
80ネルではこの規定は採用しない.
81
82以下では,μITRON4.0仕様のスタンダードプロファイルに対する拡張および変
83更箇所について説明する.
84
85○スタンダードプロファイル外の機能の一部導入
86
87μITRON4.0仕様には規定されているが,スタンダードプロファイルに含まれな
88い(または,含まれるとは限らない)機能として,次の機能を実装する.
89
90(1) イベントフラグの複数タスク待ち
91
92イベントフラグに対する複数タスク待ちの機能(TA_WMUL属性のイベントフラグ)
93を実装する.
94
95これにより,イベントフラグのセット(set_flg,iset_flg)で複数のタスクが
96起床される可能性が生じる.多くのタスクを同時に待ち解除した場合,カーネ
97ル内での割込み禁止時間が長くなるため,使用にあたっては注意が必要である.
98
99(2) アラームハンドラ
100
101アラームハンドラの機能を実装する.アラームハンドラ機能のために実装する
102静的APIおよびサービスコールは次の通りである.
103
104 CRE_ALM アラームハンドラの生成(静的API)
105 sta_alm アラームハンドラの動作開始
106 ista_alm アラームハンドラの動作開始(非タスクコンテキスト用)
107 stp_alm アラームハンドラの動作停止
108 istp_alm アラームハンドラの動作停止(非タスクコンテキスト用)
109
110(3) 割込みサービスルーチン
111
112スタンダードプロファイルでは,割込みハンドラと割込みサービスルーチンの
113いずれかをサポートすればよいことになっている.JSPカーネルでは割込みハン
114ドラのみを実装しているが,ASPカーネルではその両者を実装する.
115
116割込みサービスルーチンの仕様については,TOPPERS標準割込み処理モデルの規
117定に準拠する.割込みサービスルーチンを追加するサービスコールとして,次
118の静的APIを実装する.この静的APIの仕様については,TOPPERS標準割込み処理
119モデルにおいて,μITRON4.0仕様に対して拡張を加えている.
120
121 ATT_ISR 割込みサービスルーチンの追加(静的API)
122
123(4) 割込み管理機能
124
125スタンダードプロファイルに含まれない割込み管理機能として,次のサービス
126コールを実装する.JSPカーネルでは,これらのサービスコールを実装するかど
127うかはターゲット依存となっているが,ASPカーネルでは,TOPPERS標準割込み
128処理モデルの規定に準拠して,ターゲット非依存に実装する.
129
130 dis_int 割込みの禁止
131 ena_int 割込みの許可
132 chg_ipm 割込み優先度マスクの変更
133 get_ipm 割込み優先度マスクの参照
134
135(5) オブジェクトの状態参照機能
136
137主にデバッグ時向けの機能として,オブジェクトの状態参照機能を実装する.
138具体的には,次のサービスコールを実装する.
139
140 ref_tsk タスクの状態参照
141 ref_tex タスク例外処理の状態参照
142 ref_sem セマフォの状態参照
143 ref_flg イベントフラグの状態参照
144 ref_dtq データキューの状態参照
145 ref_mbx メールボックスの状態参照
146 ref_mpf 固定長メモリプールの状態参照
147 ref_cyc 周期ハンドラの状態参照
148 ref_alm アラームハンドラの状態参照
149
150○μITRON4.0仕様に対する変更
151
152(1) ITRON標準データ型の見直し
153
154サイズの決まった整数型(B,H, Wなど)などについて,C99に準拠した型の名
155称(int8_t,int16_t,int32_tなど)やそれと相性が良い名称に変更する.
156ITRON標準データ型(B,H, Wなど)を必要とするアプリケーションのために,
157itron.hを用意する.
158
159(2) 非タスクコンテキストからのext_tsk
160
161非タスクコンテキストからext_tskが呼ばれた場合,E_CTXエラーを返すものと
162する.これにともなって,ext_tskをリターンする可能性があるものとし,返り
163値の型をERとする.
164
165(3) CPU例外ハンドラで行える操作
166
167CPU例外ハンドラで行える操作については,TOPPERS標準割込み処理モデルに準
168拠することとし,JSPカーネルの仕様を踏襲せず,μITRON4.0仕様にも従わない.
169そのためのサービスコールとして,次のサービスコールを実装する.
170
171 xsns_dpn CPU例外発生時のディスパッチ保留状態の参照
172 xsns_xpn CPU例外発生時のタスク例外処理保留状態の参照
173
174(4) カーネルの用いる管理領域の分離
175
176μITRON4.0/PX仕様において導入されたμITRON4.0仕様に対する変更として,カー
177ネルの用いる管理領域の分離に関する仕様を一部採用する.
178
179まず,固定長メモリプールの実装において,カーネルの用いる管理領域を分離
180することに伴い,固定長メモリプールを生成する静的API(CRE_MPF)のパラメー
181タに,固定長メモリプール管理領域の先頭番地(mpfmb)を追加する.
182
183また,これにあわせて,データキューを生成する静的API(CRE_DTQ)の最後の
184パラメータの名称を,データキュー管理領域の先頭番地(dtqmb)に変更する.
185
186なお,メールボックスは,μITRON4.0仕様との互換性のために残している機能
187と位置付け,カーネルの用いる管理領域の分離は行わない.そのため,メール
188ボックスを生成する静的API(CRE_MBX)に対する変更はない.
189
190(5) 処理単位とメモリ領域のデータ型の見直し
191
192処理単位のエントリ番地のデータ型を,パラメータが反映されないFP型ではな
193く,処理単位毎の専用のデータ型とする.例えば,タスクのエントリ番地のデー
194タ型をTASK型,タスク例外処理ルーチンのデータ型をTEXRTN型とする.
195
196また,スタック領域と固定長メモリプール領域のデータ型を,それぞれSTK_T型
197とMPF_T型とする.
198
199(6) 値が0の定数(オブジェクト属性等)の見直し
200
201コーディングミスを防ぐために,値が0の定数の扱いを見直す.オブジェクト属
202性(TA_TFIFO等)については,値が0のものはデフォルト扱いして廃止し,定義
203をitron.hに移す.値が0のサービスコールの動作モード(TWF_ANDW)やオブジェ
204クトの状態(TTEX_ENA等)については,値を変更する.
205
206(7) 強制待ち要求ネストの廃止
207
208強制待ち要求をネストする機能を廃止する.言い換えると,強制待ち要求ネス
209ト数の最大値を1に固定する.これに伴い,frsm_tskは廃止し,itron.hにおい
210てfrsm_tskをrsm_tskにマクロ定義する.また,TMAX_SUSCNTの定義をitron.hに
211移す.
212
213(8) システム時刻の設定機能の廃止
214
215set_tim(システム時刻の設定)を廃止する.
216
217(9) 周期ハンドラの仕様変更
218
219sta_cycを呼び出した後,最初に周期ハンドラが起動される時刻を変更する.
220μITRON4.0仕様では,sta_cycを呼び出してから周期ハンドラの起動周期で指定
221した相対時間後としているが,ASPカーネルでは,起動位相で指定した相対時間
222後とする.
223
224(10) タスク例外処理ルーチンの実行開始条件の変更
225
226割込み優先度マスク全解除状態でない場合には,タスク例外処理ルーチンの実
227行が開始されないという仕様に変更した.
228
229○JSPカーネルにおける独自の拡張機能
230
231JSPカーネルにおける独自の拡張機能の中で,以下の機能を実装する.
232
233(1) 性能評価用システム時刻参照機能
234
235性能評価用システム時刻参照機能とは,ASPカーネル上で動作するタスクやASP
236カーネル自身の性能を計測するための,システム時刻をμ秒単位で読み出す機
237能である.この機能のためのサービスコールは次の通りである(JSPカーネルと
238は名称を変更した).
239
240 get_utm 性能評価用システム時刻の参照
241
242JSPカーネルからの仕様変更として,get_utmは任意のコンテキストから呼び出
243すことができるものする.また,性能評価用システム時刻の型(SYSUTM)を,
244ターゲット非依存部でulong_tに定義する.
245
246(2) 終了処理ルーチン機能
247
248ASPカーネルでは,システムの終了時に呼び出される終了処理ルーチンを登録す
249るための機能をサポートする.この機能のための静的APIは次の通りである.
250
251 ATT_TER 終了処理ルーチンの追加(静的API)
252
253(3) カーネル動作状態の参照
254
255カーネル上で動作するタスクから呼び出される関数が,カーネルの初期化完了
256前や終了処理開始後にも呼び出される可能性がある場合には,その中でカーネ
257ルのサービスコールを呼び出せるかを判別することが必要となる.この機能の
258ためのサービスコールは次の通りである(JSPカーネルとは名称を変更した).
259
260 sns_ker カーネル非動作状態の参照
261
262○ASPカーネルにおける独自の拡張機能
263
264(1) 割込み要求ラインの属性の設定
265
266割込み要求ラインの属性を設定する機能として,TOPPERS標準割込み処理モデル
267で規定された次の静的APIを実装する.
268
269 CFG_INT 割込み要求ラインの属性の設定(静的API)
270
271(2) 同期・通信オブジェクトの再初期化機能
272
273同期・通信オブジェクトを初期状態に戻すための機能として,次のサービスコー
274ルを実装する.
275
276 ini_sem セマフォの再初期化
277 ini_flg イベントフラグの再初期化
278 ini_dtq データキューの再初期化
279 ini_mbx メールボックスの再初期化
280 ini_mpf 固定長メモリプールの再初期化
281
282同期・通信オブジェクトの再初期化の際に,その同期・通信オブジェクトに対
283して待ち状態となっていたタスクはすべて待ち解除される.待ち解除されたタ
284スクに対しては,E_DLTを返す.E_DLTは,スタンダードプロファイルでは使用
285していないエラーコードである.
286
287そのため,これらのサービスコールにより,複数のタスクが起床される可能性
288が生じる.多くのタスクを同時に待ち解除した場合,カーネル内での割込み禁
289止時間が長くなるため,使用にあたっては注意が必要である.
290
291同期・通信オブジェクトを再初期化する際に,アプリケーション側との整合性
292を保つのはアプリケーションの責任である.具体的には,固定長メモリプール
293を再初期化する際には,そこから獲得済みのメモリブロックをそれ以降使わな
294いようにしなければならない.また,メールボックスを再初期化する際には,
295メールボックスに送信されたメッセージ領域を回収しなければならない.
296
297(3) 優先度データキューの新設
298
299優先度付きのデータキューの機能を新設する.優先度付きデータキュー機能の
300ために実装する静的APIおよびサービスコールは次の通りである.
301
302 CRE_PDQ 優先度データキューの生成
303 snd_pdq 優先度データキューへの送信
304 psnd_pdq 優先度データキューへの送信(ポーリング)
305 ipsnd_pdq 優先度データキューへの送信(ポーリング,非タスクコンテキスト)
306 tsnd_pdq 優先度データキューへの送信(タイムアウトあり)
307 rcv_pdq 優先度データキューからの受信
308 prcv_pdq 優先度データキューからの受信(ポーリング)
309 trcv_pdq 優先度データキューからの受信(タイムアウトあり)
310 ini_pdq 優先度データキューの再初期化
311 ref_pdq 優先度データキューの状態参照
312
313ここで,優先度データキューに蓄積されたデータの数が多い場合,優先度デー
314タキューへのデータの送信を行うサービスコール(snd_pdq,psnd_pdq,
315ipsnd_pdq,tsnd_pdq)の処理時間が長くなり,カーネル内での割込み禁止時間
316が長くなるため,使用にあたっては注意が必要である.
317
318(4) 自タスクの拡張情報の参照
319
320自タスクの拡張情報を参照するためのサービスコールを新設する.ライブラリ
321等の中で用いることを想定している.
322
323 get_inf 自タスクの拡張情報の参照
324
325(5) カーネルの終了
326
327致命的なエラーが起こった場合などにカーネルを終了させるためのサービスコー
328ルを新設する.この機能は,μITRON4.0仕様の機能分類では,システム構成管
329理機能に分類する(JSPカーネルでは,kernel_exitという名称で,実質的にこ
330の機能を用意していた).
331
332 ext_ker カーネルの終了
333
334ASPカーネルでは,このサービスコールからリターンすることはないが,保護機
335能を持ったカーネルではエラーリターンする可能性があるため,返り値の型を
336ERとする.
337
338これに伴って,JSPカーネルのkernel_startを,sta_kerに名称変更する.ただ
339し,sta_kerはサービスコールとは見なさないことにする.
340
341(6) 非タスクコンテキスト用のスタック領域の設定
342
343非タスクコンテキスト用のスタック領域の先頭番地とサイズを指定するための
344静的APIを新設する.また,この静的APIにより,非タスクコンテキスト用のス
345タック領域のサイズのみを指定することもできる.
346
347 DEF_ICS 非タスクコンテキスト用のスタック領域の定義
348
349○JSPカーネルにおける実装定義/実装依存規定からの変更
350
351μITRON4.0仕様で実装定義または実装依存とされている仕様の中で,以下のも
352のについてJSPカーネルから変更する.
353
354(1) アプリケーション向けのインクルードファイルの構成の整理
355
356カーネルを呼び出すアプリケーションからはkernel.hを,SILを呼び出すアプリ
357ケーションからはsil.hをインクルードすればよいものとし,t_services.hと
358s_services.hは廃止する.
359
360また,kernel.hとsil.hの共通部分としてt_stddef.hを用意し,カーネルとSIL
361のいずれも呼び出さないアプリケーションからは,t_stddef.hをインクルード
362すればよいものとする.itron.hは,μITRON4.0仕様との互換性が必要な場合に
363インクルードするものとする.
364
365(2) 割込み処理/例外処理関連の型の定義の変更
366
367割込みハンドラ番号の型(INHNO),割込み番号の型(INTNO),CPU例外ハンド
368ラ番号の型(EXCNO)を,ターゲット非依存部で,いずれもuint_t型に定義する.
369
370(3) 処理単位の実行開始/リターン時のシステム状態の規定
371
372処理単位の実行開始/リターン時のシステム状態について,μITRON4.0仕様に
373おいて実装依存であった点を厳密に規定し,ターゲットによる違いが生じない
374ようにする.
375
376(4) isig_timの扱いの変更
377
378システム時刻を更新する機構をカーネル内部に持つ扱いとし,サービスコール
379としてのisig_timは廃止する.
380
381(5) カーネルの用いる領域の指定方法
382
383JSPカーネルでは,カーネルの用いる領域はすべて自動割付けであったが,ASP
384カーネルでは,タスクのスタック領域と固定長メモリプールの固定長メモリプー
385ル領域については,静的APIで先頭番地を指定することもできるものとする(自
386動割付けもサポートする).
387
388(6) カーネル管理外の割込みの扱いの規定
389
390JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを,
391ASPカーネルでは,TOPPERS標準割込み処理モデルの規定に準拠して,可能な範
392囲で標準化する.ただし,NMI以外にカーネル管理外の割込みを設けるかや,ど
393の割込み優先度より高いものをカーネル管理外とするかは,ターゲット毎に定
394める.
395
396○システムコンフィギュレーション処理の見直し
397
398システムコンフィギュレーション処理を全面的に見直し,システムコンフィギュ
399レーションファイル中におけるC言語のプリプロセッサディレクティブの扱いと
400静的APIのパラメータの分類を変更した.
401
402○拡張パッケージのサポート
403
404ASPカーネルでは,いくつかの拡張機能を実装するために,次の拡張パッケージ
405をサポートしている.
406
407・ミューテックス機能拡張パッケージ(優先度継承ミューテックスを除く)
408・オーバランハンドラ機能拡張パッケージ
409・タスク優先度拡張パッケージ
410・制約タスク拡張パッケージ
411・動的生成機能拡張パッケージ
412
413○TOPPERS組込みコンポーネントシステム(TECS)の導入
414
415デバイスドライバやシステムログ機能との接続にTOPPERS組込みコンポーネント
416システム(TECS)を導入する.また,カーネルオブジェクトをTECSのコンポー
417ネントとして扱えるようにする.
418
419なお,Release 1.7の時点では,TECSに対応するための修正は,TECSの配布パッ
420ケージに含まれており,ASPカーネルの配布パッケージには含まれていない.
421
422以上
Note: See TracBrowser for help on using the repository browser.