source: asp3_wo_tecs/trunk/doc/asp_spec.txt@ 306

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

3.1.0を反映

File size: 35.1 KB
Line 
1
2 TOPPERS/ASP3カーネルの仕様概要
3
4 対応バージョン: Release 3.1
5 最終更新: 2016年4月3日
6
7このドキュメントは,TOPPERS/ASP3カーネル(TOPPERS/ASPカーネル Release
83.X)の仕様概要について説明したものである.μITRON4.0仕様のスタンダード
9プロファイルに対する拡張および変更箇所を中心に説明するが,TOPPERS/JSPカー
10ネルおよびTOPPERS/ASPカーネルRelease 1.Xからの変更箇所もわかるように説
11明する.
12
13なお,TOPPERS/ASP3カーネルの詳細な仕様については,「TOPPERS第3世代カー
14ネル(ITRON系)統合仕様書」を参ç…
15§ã™ã‚‹ã“と.
16
17----------------------------------------------------------------------
18 TOPPERS/ASP Kernel
19 Toyohashi Open Platform for Embedded Real-Time Systems/
20 Advanced Standard Profile Kernel
21
22 Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
23 Graduate School of Information Science, Nagoya Univ., JAPAN
24
25 上記著作権者
26は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
27 ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
28 変・再é…
29å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
30 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
31 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
32 スコード中に含まれていること.
33 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
34 用できる形で再é…
35å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
36å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
37 者
38マニュアルなど)に,上記の著作権表示,この利用条件および下記
39 の無保証規定を掲載すること.
40 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
41 用できない形で再é…
42å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
43 と.
44 (a) 再é…
45å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
46マニュアルなど)に,上記の著
47 作権表示,この利用条件および下記の無保証規定を掲載すること.
48 (b) 再é…
49å¸ƒã®å½¢æ…
50‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
51 報告すること.
52 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
53 害からも,上記著作権者
54およびTOPPERSプロジェクトをå…
55è²¬ã™ã‚‹ã“と.
56 また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
57 由に基づく請求からも,上記著作権者
58およびTOPPERSプロジェクトを
59 å…
60è²¬ã™ã‚‹ã“と.
61
62 本ソフトウェアは,無保証で提供されているものである.上記著作権者
63お
64 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
65 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
66 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
67 の責任を負わない.
68
69 $Id: asp_spec.txt 747 2016-05-13 08:18:21Z ertl-hiro $
70----------------------------------------------------------------------
71
72○目次
73
74・前提となる文章
75・このドキュメントの読み方
76・仕様の概略
77・スタンダードプロファイル外の機能の一部導å…
78¥
79 (1-1) イベントフラグの複数タスク待
80ち
81 (1-2) ミューテックス
82 (1-3) アラームハンドラ
83 (1-4) 割込みサービスルーチン
84 (1-5) 割込み管理機能
85 (1-6) オブジェクトの状æ…
86‹å‚ç…
87§
88・スタンダードプロファイルの機能の一部廃止
89 (2-1) タスク例外処理機能
90 (2-2) メールボックス
91・独自の拡張機能
92 (3-1) タスク終了要求機能
93 (3-2) 優å…
94ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼
95 (3-3) システム時刻の調整
96 (3-4) 同期・通信オブジェクトの再初期化
97 (3-5) 周期通知機能とアラーム通知機能
98 (3-6) タスクとスケジューリング状æ…
99‹ã®å‚ç…
100§
101 (3-7) 起動要求をキューイングしないタスク
102 (3-8) 自タスクの拡張情
103報の参ç…
104§
105 (3-9) 高分解能タイマの参ç…
106§
107 (3-10) カーネル動作状æ…
108‹ã®å‚ç…
109§
110 (3-11) カーネルの終了
111 (3-12) 割込み要求ラインの属性の設定
112 (3-13) 非タスクコンテキスト用のスタック領域の設定
113 (3-14) 終了処理ルーチン
114・μITRON4.0仕様に対する修正
115 (4-1) 非タスクコンテキストから呼び出せるサービスコールの名称
116 (4-2) ITRON標準データ型
117 (4-3) 値が0の定数(オブジェクト属性等)
118 (4-4) カーネルの用いる管理領域の分離と指定方法
119 (4-5) 処理単位とメモリ領域のデータ型
120 (4-6) 割込み処理/例外処理関連の型の定義
121 (4-7) 時間管理関連のデータ型と時間単位
122 (4-8) 処理単位の実行開始/リターン時のシステム状æ…
123‹
124 (4-9) カーネル管理外の割込みの扱いの規定
125 (4-10) CPU例外ハンドラで行える操作
126 (4-11) 非タスクコンテキストからのext_tsk
127 (4-12) 強制待
128ち要求ネストの廃止
129 (4-13) システム時刻の更新機構の扱い
130 (4-14) システム時刻の設定機能のパラメータの変更
131 (4-15) 周期ハンドラの仕様変更
132 (4-16) 静的APIのパラメータの省略
133 (4-17) アプリケーション向けのインクルードファイルの構成
134・システムコンフィギュレーション処理の見直し
135・拡張パッケージのサポート
136・TOPPERS組込みコンポーネントシステム(TECS)の導å…
137¥
138
139○前提となる文書
140
141[1] トロン協会: μITRON4.0仕様,Ver.4.02.00,2004年.
142
143[2] トロン協会: μITRON4.0仕様 保護機能拡張(μITRON4.0/PX仕様),
144 Ver.1.00.00,2002年.
145
146[3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル
147 Release 1.4.3対応,最終更新: 2007年4月23日.
148
149[4] TOPPERSプロジェクト: TOPPERS新世代カーネル統合仕様書,Release
150 1.7.1,最終更新: 2015年5月30日.
151
152[5] TOPPERSプロジェクト: TOPPERS/ASPカーネル ユーザーズマニュアル,
153 Release 1.9.2,最終更新: 2015年2月8日.
154
155[6] TOPPERSプロジェクト: TOPPERS第3世代カーネル(ITRON系)統合仕様書,
156 Release 3.0.0,最終更新: 2016年2月7日.
157
158○このドキュメントの読み方
159
160このドキュメントでは,TOPPERS/ASP3カーネル(TOPPERS/ASPカーネル
161Release 3.X.以下,ASP3カーネル)の仕様の概要について,μITRON4.0仕様の
162スタンダードプロファイルに対してどのような拡張および変更を行ったかとい
163う観点から記述する.また,TOPPERS/JSPカーネル(以下,JSPカーネル)およ
164びTOPPERS/ASPカーネル Release 1.X(以下,ASP1カーネル)との違いについて
165も記述する.
166
167JSPカーネルの仕様は,基本的にはμITRON4.0仕様のスタンダードプロファイル
168に準拠している.μITRON4.0仕様のスタンダードプロファイルに関する記述は,
169明示的に記述しない限り,JSPカーネルにも当てはまる.
170
171ASP1カーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルよりは,
172ASP3カーネルの仕様に近い.そこで,このドキュメントで単に「ASPカーネルで
173は」と記述した場合には,ASP1カーネルとASP3カーネルの両方に当てはまるこ
174とを示す.ASP1カーネルまたはASP3カーネルのいずれかにしか当てはまらない
175場合には,明示的に「ASP1カーネルでは」「ASP3カーネルでは」と記述する.
176
177○仕様の概略
178
179ASPカーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルをベースに,
180様々
181な拡張および変更を加えたものである.
182
183ASPカーネルでは,μITRON4.0仕様で実装
184定義の仕様が多く残っていた割込み処
185理機能について,TOPPERS標準割込み処理モデルに従って,ターゲット定義の仕
186様が最小限になるように規定している.
187
188μITRON4.0仕様では,実装
189独自に用意する静的APIおよびサービスコールの名称
190には,å…
191ˆé ­ã«ãã‚Œãžã‚Œ"V"および"v"の文字を付加するものとしているが,ASPカー
192ネルではこの規定は採用していない.
193
194また,μITRON4.0仕様およびASP1カーネルでは,サービスコール名が"i"で始ま
195るサービスコールを,非タスクコンテキスト専用のサービスコールと呼び,名
196前の通り,非タスクコンテキストのみから呼び出すことができるものとしてい
197るが,ASP3カーネルではこの仕様は採用しておらず,非タスクコンテキストか
198らもタスクコンテキストと同じ名称のサービスコールを呼び出すことにしてい
199る.これに伴い,ASP3カーネルでは,名称が"i"で始まるサービスコールは,
200"i"を取ったサービスコールにマクロ定義している.
201
202○スタンダードプロファイル外の機能の一部導å…
203¥
204
205μITRON4.0仕様には規定されているが,スタンダードプロファイルに含まれな
206い(または,含まれるとは限らない)機能として,ASPカーネルでは,次の機能
207を実装
208している.
209
210(1-1) イベントフラグの複数タスク待
211ち
212
213イベントフラグに対する複数タスク待
214ちの機能(TA_WMUL属性のイベントフラグ)
215を実装
216している.
217
218これにより,イベントフラグのセット(set_flg)で複数のタスクが起床される
219可能性が生じる.多くのタスクを同時に待
220ち解除した場合,カーネル内
221での割
222込み禁止時間が長くなるため,使用にあたっては注意が必
223要である.
224
225(1-2) ミューテックス
226
227ASP3カーネルでは,ミューテックスの機能(優å…
228ˆåº¦ç¶™æ‰¿å±žæ€§ã‚’除く)を実装
229し
230ている.ただし,ミューテックスのロック解除は,ロックしたのと逆順で行わ
231なければならないものと制限している.また,chg_priにおいて,対象タスクが
232同じ優å…
233ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã®ä¸­ã§æœ€ä½Žã®å„ªå…
234ˆé †ä½ã¨ãªã‚‹æ¡ä»¶ã‚’変更している.
235
236ミューテックス機能のために実装
237している静的APIおよびサービスコールは次の
238通りである.
239
240 CRE_MTX ミューテックスの生成(静的API)
241 loc_mtx ミューテックスのロック
242 ploc_mtx ミューテックスのロック(ポーリング)
243 tloc_mtx ミューテックスのロック(タイムアウト付き)
244 unl_mtx ミューテックスのロック解除
245
246なお,ASP1カーネルでは,ミューテックスの機能をミューテックス機能拡張パッ
247ケージでサポートしている.ASP1カーネルのミューテックス機能拡張パッケー
248ジには,ロック解除順に関する制限はない.
249
250(1-3) アラームハンドラ
251
252アラームハンドラ(ASP3カーネルでは,アラーム通知)の機能を実装
253している.
254アラームハンドラ機能のために実装
255している静的APIおよびサービスコールは次
256の通りである.
257
258 CRE_ALM アラームハンドラの生成(静的API)
259 sta_alm アラームハンドラの動作開始
260 stp_alm アラームハンドラの動作停止
261
262(1-4) 割込みサービスルーチン
263
264μITRON4.0仕様のスタンダードプロファイルでは,割込みハンドラと割込みサー
265ビスルーチンのいずれかをサポートすればよいことになっている.JSPカーネル
266では割込みハンドラのみを実装
267しているが,ASPカーネルではその両者
268を実装
269し
270ている.
271
272割込みサービスルーチンの仕様については,TOPPERS標準割込み処理モデルの規
273定に準拠している.ASP3カーネルでは,割込みサービスルーチンを登録するサー
274ビスコールとして,次の静的APIを実装
275している.
276
277 CRE_ISR 割込みサービスルーチンの生成(静的API)
278
279なお,ASP1カーネルでは,割込みサービスルーチンを登録するための静的APIと
280して,ATT_ISRを実装
281している.ASP1カーネルのATT_ISRでは,μITRON4.0仕様
282のATT_ISRに対して,割込みサービスルーチン優å…
283ˆåº¦ã®ãƒ‘ラメータを追加してい
284るが,ASP3カーネルのCRE_ISRもこのパラメータを持っている.
285
286(1-5) 割込み管理機能
287
288μITRON4.0仕様のスタンダードプロファイルに含まれない割込み管理機能とし
289て,次のサービスコールを実装
290している.JSPカーネルでは,これらのサービス
291コールを実装
292するかどうかはターゲット依存となっているが,ASPカーネルでは,
293TOPPERS標準割込み処理モデルの規定に準拠して,ターゲット非依存に実装
294して
295いる.
296
297 dis_int 割込みの禁止
298 ena_int 割込みの許可
299 chg_ipm 割込み優å…
300ˆåº¦ãƒžã‚¹ã‚¯ã®å¤‰æ›´
301 get_ipm 割込み優å…
302ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç…
303§
304
305ASP3カーネルでは,dis_intとena_intは,CPUロック状æ…
306‹ã§ã‚‚,非タスクコンテ
307キストからも呼び出せるものとしている.ASP1カーネルでは,CPUロック状æ…
308‹ã‹
309らは呼び出せるが,非タスクコンテキストからは呼び出せない.
310
311(1-6) オブジェクトの状æ…
312‹å‚ç…
313§
314
315デバッグ時向けの機能として,オブジェクトの状æ…
316‹å‚ç…
317§æ©Ÿèƒ½ã‚’実装
318している.
319å…
320·ä½“的には,次のサービスコールを実装
321している.
322
323 ref_tsk タスクの状æ…
324‹å‚ç…
325§
326 ref_sem セマフォの状æ…
327‹å‚ç…
328§
329 ref_flg イベントフラグの状æ…
330‹å‚ç…
331§
332 ref_dtq データキューの状æ…
333‹å‚ç…
334§
335 ref_mtx ミューテックスの状æ…
336‹å‚ç…
337§
338 ref_mpf 固定長メモリプールの状æ…
339‹å‚ç…
340§
341 ref_cyc 周期ハンドラの状æ…
342‹å‚ç…
343§
344 ref_alm アラームハンドラの状æ…
345‹å‚ç…
346§
347
348○スタンダードプロファイルの機能の一部廃止
349
350μITRON4.0仕様のスタンダードプロファイルに含まれる機能の中で,ASP3カー
351ネルでは次の機能は実装
352していない.なお,ASP1カーネルでは,これらの機能
353を実装
354している.
355
356(2-1) タスク例外処理機能
357
358ASP3カーネルでは,実装
359が複雑化するのに対して,使用頻度が低いことから,
360タスク例外処理機能は実装
361していない.å…
362·ä½“的には,μITRON4.0仕様のスタン
363ダードプロファイルに含まれる静的APIおよびサービスコールの中で,次の静的
364APIおよびサービスコールを実装
365していない.
366
367 DEF_TEX タスク例外処理ルーチンの定義(静的API)
368 ras_tex タスク例外処理の要求
369 dis_tex タスク例外処理の禁止
370 ena_tex タスク例外処理の許可
371 sns_tex タスク例外処理禁止状æ…
372‹ã®å‚ç…
373§
374
375ASP1カーネルでは,上に加えて,次のサービスコールも実装
376しているが,ASP3
377カーネルでは実装
378していない.
379
380 ref_tex タスク例外処理の状æ…
381‹å‚ç…
382§
383
384なお,ASP3カーネルでは,タスク例外処理機能を廃止する代わりに,後述のタ
385スク終了要求機能を実装
386している.
387
388(2-2) メールボックス
389
390ASP3カーネルでは,保護機能対応カーネルとの互換性を重視し,メールボック
391スの機能は実装
392していない.å…
393·ä½“的には,μITRON4.0仕様のスタンダードプロ
394ファイルに含まれる静的APIおよびサービスコールの中で,次の静的APIおよび
395サービスコールを実装
396していない.
397
398 CRE_MBX メールボックスの生成(静的API)
399 snd_mbx メールボックスへの送信
400 rcv_mbx メールボックスからの受信
401 prcv_mbx メールボックスからの受信(ポーリング)
402 trcv_mbx メールボックスからの受信(タイムアウトあり)
403
404ASP1カーネルでは,上に加えて,次のサービスコールも実装
405しているが,ASP3
406カーネルでは実装
407していない.
408
409 ref_mbx メールボックスの状æ…
410‹å‚ç…
411§
412
413なお,メールボックスの機能は,データキューおよび優å…
414ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®æ©Ÿ
415能で代替することができる.
416
417○独自の拡張機能
418
419ASPカーネルでは,μITRON4.0仕様に対する独自の拡張機能として,次の機能を
420実装
421している.
422
423(3-1) タスク終了要求機能
424
425ASP3カーネルでは,タスク例外処理機能に代えて,タスク終了要求機能を追加
426している.å…
427·ä½“的には,次のサービスコールを実装
428している.
429
430 ras_ter タスクの終了要求
431 dis_ter タスク終了の禁止
432 ena_ter タスク終了の許可
433 sns_ter タスク終了禁止状æ…
434‹ã®å‚ç…
435§
436
437また,ref_tskで参ç…
438§ã§ãã‚‹æƒ…
439報に,タスク終了要求状æ…
440‹ï¼ˆraster)とタスク終
441了禁止状æ…
442‹ã‹å¦ã‹ï¼ˆdister)を追加している.
443
444タスクに対して終了要求が出された場合,待
445ち状æ…
446‹ã«å…
447¥ã‚‹ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“スコー
448ルから,E_RASTERが返る可能性がある.E_RASTERは,μITRON4.0仕様やASP1カー
449ネルでは定義していないエラーコードである.
450
451(3-2) 優å…
452ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼
453
454優å…
455ˆåº¦ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®æ©Ÿèƒ½ã‚’追加している.優å…
456ˆåº¦ä»˜ããƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿ
457能のために実装
458している静的APIおよびサービスコールは次の通りである.
459
460 CRE_PDQ 優å…
461ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®ç”Ÿæˆ
462 snd_pdq 優å…
463ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡
464 psnd_pdq 優å…
465ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆãƒãƒ¼ãƒªãƒ³ã‚°ï¼‰
466 tsnd_pdq 優å…
467ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚り)
468 rcv_pdq 優å…
469ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—ä¿¡
470 prcv_pdq 優å…
471ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—信(ポーリング)
472 trcv_pdq 優å…
473ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—信(タイムアウトあり)
474 ref_pdq 優å…
475ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®çŠ¶æ…
476‹å‚ç…
477§
478
479ここで,優å…
480ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã«è“„積されたデータの数が多い場合,優å…
481ˆåº¦ãƒ‡ãƒ¼
482タキューへのデータの送信を行うサービスコール(snd_pdq,psnd_pdq,
483tsnd_pdq)の処理時間が長くなり,カーネル内
484での割込み禁止時間が長くなる
485ため,使用にあたっては注意が必
486要である.
487
488(3-3) システム時刻の調整
489
490ASP3カーネルでは,システム時刻を調整するための機能を追加している.この
491機能のためのサービスコールは次の通りである.
492
493 adj_tim システム時刻の調整
494
495(3-4) 同期・通信オブジェクトの再初期化
496
497同期・通信オブジェクトを初期状æ…
498‹ã«æˆ»ã™ãŸã‚ã®æ©Ÿèƒ½ã¨ã—て,次のサービスコー
499ルを実装
500している.
501
502 ini_sem セマフォの再初期化
503 ini_flg イベントフラグの再初期化
504 ini_dtq データキューの再初期化
505 ini_pdq 優å…
506ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å†åˆæœŸåŒ–
507 ini_mtx ミューテックスの再初期化
508 ini_mpf 固定長メモリプールの再初期化
509
510同期・通信オブジェクトの再初期化の際に,その同期・通信オブジェクトに対
511して待
512ち状æ…
513‹ã¨ãªã£ã¦ã„たタスクはすべて待
514ち解除される.待
515ち解除されたタ
516スクに対しては,E_DLTを返す.E_DLTは,μITRON4.0仕様のスタンダードプロ
517ファイルでは使用していないエラーコードである.
518
519そのため,これらのサービスコールにより,複数のタスクが起床される可能性
520が生じる.多くのタスクを同時に待
521ち解除した場合,カーネル内
522での割込み禁
523止時間が長くなるため,使用にあたっては注意が必
524要である.
525
526同期・通信オブジェクトを再初期化する際に,アプリケーション側との整合性
527を保つのはアプリケーションの責任である.例えば,固定長メモリプールを再
528初期化する際には,そこから獲得済みのメモリブロックをそれ以降使わないよ
529うにしなければならない.
530
531(3-5) 周期通知機能とアラーム通知機能
532
533ASP3カーネルでは,周期ハンドラ機能とアラームハンドラ機能を拡張し,周期
534通知機能とアラーム通知機能を実装
535している.
536
537これによって,次の静的APIのパラメータと機能を変更している.
538
539 CRE_CYC 周期通知の生成
540 CRE_ALM アラーム通知の生成
541
542(3-6) タスクとスケジューリング状æ…
543‹ã®å‚ç…
544§
545
546ASP3カーネルでは,タスクとスケジューリング状æ…
547‹ã‚’参ç…
548§ã™ã‚‹ãŸã‚ã®æ©Ÿèƒ½ã¨ã—
549て,次のサービスコールを実装
550している.
551
552 get_tst タスク状æ…
553‹ã®å‚ç…
554§
555 get_lod 実行できるタスクの数の参ç…
556§
557 get_nth 指定した優å…
558ˆé †ä½ã®ã‚¿ã‚¹ã‚¯IDの参ç…
559§
560
561(3-7) 起動要求をキューイングしないタスク
562
563ASP3カーネルでは,起動要求をキューイングしないタスクを表すタスク属性と
564して,TA_NOACTQUEを追加している.
565
566(3-8) 自タスクの拡張情
567報の参ç…
568§
569
570ライブラリ等の中で用いることを想定して,自タスクの拡張情
571報を参ç…
572§ã™ã‚‹ãŸ
573めのサービスコールを追加している.
574
575 get_inf 自タスクの拡張情
576報の参ç…
577§
578
579(3-9) 高分解能タイマの参ç…
580§
581
582ASP3カーネルでは,カーネル上で動作するタスクやカーネル自身の性能評価に
583用いることを目的に,高分解能タイマを参ç…
584§ã™ã‚‹ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールを追加
585している.
586
587 fch_hrt 高分解能タイマの参ç…
588§
589
590なお,ASP1カーネルでは,性能評価に用いるためのサービスコールとして,
591get_utm(性能評価用システム時刻参ç…
592§ï¼‰ã‚’サポートしている.またJSPカーネ
593ルでは,同じ目的のサービスコールとして,vxget_timをサポートしている.
594
595(3-10) カーネル動作状æ…
596‹ã®å‚ç…
597§
598
599カーネル上で動作するタスクから呼び出される関数が,カーネルの初期化完了
600前や終了処理開始後にも呼び出される可能性がある場合には,その中でカーネ
601ルのサービスコールを呼び出せるかを判別することが必
602要となる.この機能の
603ためのサービスコールは次の通りである.
604
605 sns_ker カーネル非動作状æ…
606‹ã®å‚ç…
607§
608
609なお,JSPカーネルでは,独自の拡張機能としてこの機能をサポートしているが,
610サービスコールの名称はvsns_iniとしている.
611
612(3-11) カーネルの終了
613
614致命的なエラーが起こった場合などにカーネルを終了させるためのサービスコー
615ルを追加している.
616
617 ext_ker カーネルの終了
618
619ASPカーネルではこのサービスコールからリターンすることはないが,保護機能
620を持ったカーネルではエラーリターンする可能性があるため,返り値の型をER
621としている.
622
623JSPカーネルでは,kernel_exitという名称で,実質的にこの機能を用意してい
624る.また,カーネルの実行を開始する関数を,JSPカーネルではkernel_startと
625いう名称としていたのを,ASPカーネルではsta_kerに名称変更した.sta_kerは,
626サービスコールとは見なさないことにしている.
627
628(3-12) 割込み要求ラインの属性の設定
629
630割込み要求ラインの属性を設定する機能として,TOPPERS標準割込み処理モデル
631で規定された次の静的APIを実装
632している.
633
634 CFG_INT 割込み要求ラインの属性の設定(静的API)
635
636(3-13) 非タスクコンテキスト用のスタック領域の設定
637
638非タスクコンテキスト用のスタック領域のå…
639ˆé ­ç•ªåœ°ã¨ã‚µã‚¤ã‚ºã‚’指定するための
640静的APIを新設している.また,この静的APIにより,非タスクコンテキスト用
641のスタック領域のサイズのみを指定することもできる.
642
643 DEF_ICS 非タスクコンテキスト用のスタック領域の設定
644
645(3-14) 終了処理ルーチン
646
647システムの終了時に呼び出される終了処理ルーチンを登録するための機能をサ
648ポートしている.この機能のための静的APIは次の通りである.
649
650 ATT_TER 終了処理ルーチンの追加(静的API)
651
652なお,JSPカーネルでは,独自の拡張機能としてこの機能をサポートしているが,
653静的APIの名称はVATT_TERとしている.
654
655○μITRON4.0仕様に対する変更
656
657ASPカーネルでは,μITRON4.0仕様での規定に対して,次の変更を行っている.
658
659(4-1) 非タスクコンテキストから呼び出せるサービスコールの名称
660
661ASP3カーネルでは,非タスクコンテキスト専用のサービスコールの概念を廃止
662し,非タスクコンテキストからも,タスクコンテキストと同じ名称のサービス
663コールを呼び出すことにしている.これに伴い,名称が"i"で始まるサービスコー
664ルは,"i"を取ったサービスコールにマクロ定義している.
665
666(4-2) 標準データ型
667
668ITRON標準データ型の中で,C90やC99にそれに相当するものがある場合には,
669C90やC99に準拠した型の名称に変更している.例えば,サイズの決まった整数
670型(B,H,Wなど)はC99に準拠した型の名称(int8_t,int16_t,int32_tなど)
671に,VP_INTはC99準拠のintptr_tに,INTとUINTはC99の型名と相性が良いint_t
672とuint_tに,BOOLをbool_tに,それぞれ変更した.VPは,void *と等価である
673ため,用意しないことにした.逆に,いくつかのデータ型を新たに用いること
674にした.さらにASP3カーネルでは,SIZEはC90準拠のsize_tに変更した.
675
676なお,ITRON標準データ型(B,H,Wなど)を必
677要とするアプリケーションのた
678めに,itron.hを用意している.
679
680(4-3) 値が0の定数(オブジェクト属性等)
681
682コーディングミスを防ぐために,値が0の定数の扱いを見直した.オブジェクト
683属性(TA_TFIFO等)については,値が0のものはデフォルト扱いして廃止し,定
684義をitron.hに移した.値が0のサービスコールの動作モード(TWF_ANDW)やオ
685ブジェクトの状æ…
686‹ï¼ˆTCYC_STP等)については,値を変更した.
687
688(4-4) カーネルの用いる管理領域の分離と指定方法
689
690μITRON4.0/PX仕様において導å…
691¥ã•ã‚ŒãŸÎ¼ITRON4.0仕様に対する変更として,カー
692ネルの用いる管理領域の分離に関する仕様を一部採用している.
693
694まず,固定長メモリプールにおいて,カーネルの用いる管理領域を分離するこ
695とに伴い,固定長メモリプールを生成する静的API(CRE_MPF)のパラメータに,
696固定長メモリプール管理領域のå…
697ˆé ­ç•ªåœ°ï¼ˆmpfmb)を追加している.
698
699また,これに整合させるために,データキューを生成する静的API(CRE_DTQ)
700の最後のパラメータの名称を,データキュー管理領域のå…
701ˆé ­ç•ªåœ°ï¼ˆdtqmb)に変
702更している.
703
704JSPカーネルでは,カーネルの用いる領域はすべて自動割付けのみをサポートし
705ているが,ASPカーネルでは,タスクのスタック領域と固定長メモリプールの固
706定長メモリプール領域については,静的APIでå…
707ˆé ­ç•ªåœ°ã‚’指定することもできる
708ものとしている(自動割付けもサポートしている).
709
710(4-5) 処理単位とメモリ領域のデータ型
711
712処理単位のエントリ番地のデータ型を,パラメータが反映されないFP型ではな
713く,処理単位毎の専用のデータ型としている.例えば,タスクのメインルーチ
714ンのå…
715ˆé ­ç•ªåœ°ã®ãƒ‡ãƒ¼ã‚¿åž‹ã‚’TASK型,割込みサービスルーチンのå…
716ˆé ­ç•ªåœ°ã®ãƒ‡ãƒ¼
717タ型をISR型としている.
718
719また,スタック領域と固定長メモリプール領域のå…
720ˆé ­ç•ªåœ°ã®ãƒ‡ãƒ¼ã‚¿åž‹ã‚’,それ
721ぞれSTK_T型とMPF_T型としている.
722
723(4-6) 割込み処理/例外処理関連の型の定義
724
725割込みハンドラ番号の型(INHNO),割込み番号の型(INTNO),CPU例外ハンド
726ラ番号の型(EXCNO)を,ターゲット非依存部で,いずれもuint_t型に定義して
727いる.
728
729(4-7) 時間管理関連のデータ型と時間単位
730
731ASP3カーネルでは,システム時刻(SYSTIM型),相対時間(RELTIM型),タイ
732ムアウト時間(TMO型)の時間単位を,マイクロ秒に変更した.また,SYSTIMの
733サイズは64ビット(ただし,64ビットの整数型がサポートされていないターゲッ
734トでは32ビット),RELTIMとTMOのサイズは32ビットと規定した.さらに,TMO
735は符号無し整数型に変更した.
736
737μITRON4.0仕様のスタンダードプロファイルとASP1カーネルでは,これらの時
738間の時間単位はミリ秒である.また,サイズは実装
739定義(最低の長さは規定さ
740れている)となっている.
741
742(4-8) 処理単位の実行開始/リターン時のシステム状æ…
743‹
744
745処理単位の実行開始/リターン時のシステム状æ…
746‹ã«ã¤ã„て,μITRON4.0仕様に
747おいて実装
748依存であった点を厳密に規定し,ターゲットによる違いが生じない
749ようにしている.
750
751ASP1カーネルとASP3カーネルでは,割込みサービスルーチンとタイムイベント
752ハンドラの実行開始/リターン時の割込み優å…
753ˆåº¦ãƒžã‚¹ã‚¯ã®æ‰±ã„が異なっている.
754
755(4-9) カーネル管理外の割込みの扱いの規定
756
757JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを,
758ASPカーネルでは,TOPPERS標準割込み処理モデルの規定に準拠して,可能な範
759囲で標準化している.ただし,NMI以外にカーネル管理外の割込みを設けるかや,
760どの割込み優å…
761ˆåº¦ã‚ˆã‚Šé«˜ã„ものをカーネル管理外とするかは,ターゲット毎に
762定めることとしている.
763
764(4-10) CPU例外ハンドラで行える操作
765
766CPU例外ハンドラで行える操作については,TOPPERS標準割込み処理モデルに準
767拠することとし,μITRON4.0仕様には従っていない.そのためのサービスコー
768ルとして,次のサービスコールを実装
769している.
770
771 xsns_dpn CPU例外発生時のディスパッチ保留状æ…
772‹ã®å‚ç…
773§
774
775ASP1カーネルでは,上に加えて,CPU例外発生時のタスク例外処理保留状æ…
776‹ã‚’参
777ç…
778§ã™ã‚‹ã‚µãƒ¼ãƒ“スコール(xsns_xpn)も実装
779しているが,ASP3カーネルでは,タ
780スク例外処理機能の廃止に伴って廃止した.
781
782(4-11) 非タスクコンテキストからのext_tsk
783
784非タスクコンテキストからext_tskが呼ばれた場合,E_CTXエラーを返すものと
785した.これにともなって,ext_tskをリターンする可能性があるものとし,返り
786値の型をERとした.
787
788(4-12) 強制待
789ち要求ネストの廃止
790
791強制待
792ち要求をネストする機能を廃止した.言い換えると,強制待
793ち要求ネス
794ト数の最大値を1に固定した.これに伴い,frsm_tskは廃止し,itron.hにおい
795てfrsm_tskをrsm_tskにマクロ定義している.ref_tskで参ç…
796§ã§ãã‚‹æƒ…
797報から,
798強制待
799ち要求ネスト数(suscnt)を削除した.また,TMAX_SUSCNTの定義を
800itron.hに移した.
801
802(4-13) システム時刻の更新機構の扱い
803
804システム時刻を更新する機構をカーネル内
805部に持つ扱いとし,サービスコール
806としてのisig_timは廃止した.
807
808(4-14) システム時刻の設定機能のパラメータの変更
809
810ASP3カーネルでは,set_tim(システム時刻の設定)のパラメータを,システム
811時刻へのポインタを渡す仕様から,システム時刻そのものを渡す仕様に変更し
812た.
813
814なお,ASP1カーネルでは,set_timはサポートしていない.
815
816(4-15) 周期ハンドラの仕様変更
817
818sta_cycを呼び出した後,最初に周期ハンドラ(ASP3カーネルでは周期通知)が
819起動される時刻を変更した.μITRON4.0仕様では,sta_cycを呼び出してから周
820期ハンドラの起動周期で指定した相対時間後としているが,ASPカーネルでは,
821起動位相で指定した相対時間後としている.
822
823(4-16) 静的APIのパラメータの省略
824
825ASP3カーネルでは,静的APIのパラメータの中で,NULLを指定すると自動割付け
826になるメモリ領域のå…
827ˆé ­ç•ªåœ°ã¨ï¼ŒNULLしか指定できない管理領域のå…
828ˆé ­ç•ªåœ°ã¯ï¼Œ
829記述を省略できるものとした.また,優å…
830ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ä»¥å¤–のミュー
831テックスを生成するCRE_MTXで,上限優å…
832ˆåº¦ï¼ˆceilpri)の記述を省略できるも
833のとした.
834
835(4-17) アプリケーション向けのインクルードファイルの構成
836
837カーネルを呼び出すアプリケーションからはkernel.hを,SILを呼び出すアプリ
838ケーションからはsil.hをインクルードすればよいものとしている.
839
840また,kernel.hとsil.hのå…
841±é€šéƒ¨åˆ†ã¨ã—てt_stddef.hを用意し,カーネルとSIL
842のいずれも呼び出さないアプリケーションからは,t_stddef.hをインクルード
843すればよいものとしている.itron.hは,μITRON4.0仕様との互換性が必
844要な場
845合にインクルードするものとしている.
846
847JSPカーネルにおけるt_services.hとs_services.hは廃止した.
848
849○システムコンフィギュレーション処理の見直し
850
851システムコンフィギュレーション処理をå…
852¨é¢çš„に見直し,システムコンフィギュ
853レーションファイル中におけるC言語のプリプロセッサディレクティブの扱いと
854静的APIのパラメータの分類を変更した.
855
856○拡張パッケージのサポート
857
858ASP3カーネルでは,いくつかの拡張機能を実装
859するために,次の拡張パッケー
860ジをサポートしている.
861
862・ドリフト調整機能拡張パッケージ
863・メッセージバッファ機能拡張パッケージ
864・オーバランハンドラ機能拡張パッケージ
865・タスク優å…
866ˆåº¦æ‹¡å¼µãƒ‘ッケージ
867・制約タスク拡張パッケージ
868・サブ優å…
869ˆåº¦æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージ
870・動的生成機能拡張パッケージ
871
872ASP1カーネルでは,これらの拡張パッケージ以外に,ミューテックス機能拡張
873パッケージもサポートしているが,ASP3カーネルでは,ミューテックスは標準
874でサポートしていることから,拡張パッケージとしては廃止した.ASP1カーネ
875ルでは,ドリフト調整機能拡張パッケージとサブ優å…
876ˆåº¦æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージは
877サポートしていない.
878
879○TOPPERS組込みコンポーネントシステム(TECS)の導å…
880¥
881
882デバイスドライバやシステムログ機能などのシステムサービスを,TOPPERS組込
883みコンポーネントシステム(TECS)を用いて実装
884している.また,カーネルオ
885ブジェクトをTECSのコンポーネントとして扱えるようにしている.
886
887なお,ASP1カーネルでは,TECSに対応するための修正は,TECSのé…
888å¸ƒãƒ‘ッケー
889ジに含まれており,ASP1カーネルのé…
890å¸ƒãƒ‘ッケージには含まれていない.
891
892以上
Note: See TracBrowser for help on using the repository browser.