source: atk2-sc3-1.4.0-ntisr/doc/user.txt

Last change on this file was 172, checked in by ertl-ishikawa, 8 years ago

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

  • Property svn:executable set to *
File size: 21.4 KB
RevLine 
[172]1
2 TOPPERS/ATK2-SC3
3 ユーザーズマニュアル
4
5このドキュメントは,TOPPERS/ATK2-SC3を使用するために必
6要な事項
7を説明
8するものである.
9
10----------------------------------------------------------------------
11TOPPERS ATK2
12 Toyohashi Open Platform for Embedded Real-Time Systems
13 Automotive Kernel Version 2
14
15Copyright (C) 2011-2015 by Center for Embedded Computing Systems
16 Graduate School of Information Science, Nagoya Univ., JAPAN
17Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
18Copyright (C) 2011-2013 by Spansion LLC, USA
19Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
20Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
21Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
22Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
23Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
24Copyright (C) 2011-2015 by Witz Corporation
25Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
26Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
27Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
28Copyright (C) 2015 by SUZUKI MOTOR CORPORATION
29
30上記著作権者
31は,以下の (1)〜(3)の条件を満たす場合に限り,本ドキュメ
32ント(本ドキュメントを改変したものを含む.以下同じ)を使用・複製・改
33変・再é…
34å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
35(1) 本ドキュメントを利用する場合には,上記の著作権表示,この利用条件
36 および下記の無保証規定が,そのままの形でドキュメント中に含まれて
37 いること.
38(2) 本ドキュメントを改変する場合には,ドキュメントを改変した旨の記述
39 を,改変後のドキュメント中に含めること.ただし,改変後のドキュメ
40 ントが,TOPPERSプロジェクト指定の開発成果物である場合には,この限
41 りではない.
42(3) 本ドキュメントの利用により直接的または間接的に生じるいかなる損害
43 からも,上記著作権者
44およびTOPPERSプロジェクトをå…
45è²¬ã™ã‚‹ã“と.また,
46 本ドキュメントのユーザまたはエンドユーザからのいかなる理由に基づ
47 く請求からも,上記著作権者
48およびTOPPERSプロジェクトをå…
49è²¬ã™ã‚‹ã“と.
50
51本ドキュメントは,AUTOSAR(AUTomotive Open System ARchitecture)仕様
52に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するものではな
53い.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利用する
54者
55に対して,AUTOSARパートナーになることを求めている.
56
57本ドキュメントは,無保証で提供されているものである.上記著作権者
58およ
59びTOPPERSプロジェクトは,本ドキュメントに関して,特定の使用目的に対す
60る適合性も含めて,いかなる保証も行わない.また,本ドキュメントの利用
61により直接的または間接的に生じたいかなる損害に関しても,その責任を負
62わない.
63
64$Id: user.txt 425 2015-12-07 08:06:19Z witz-itoyo $
65----------------------------------------------------------------------
66
67○目次
68
69◎0.本マニュアルの位置づけ
701.TOPPERS/ATK2-SC3の概要
71 ○1.1 TOPPERS/ATK2-SC3の位置付け
72 1.2 TOPPERS/ATK2-SC3の仕様
73 1.3 既知の問題
74 1.4 Cygwin環境における注意事項
75
762.ターゲット依存部
77 2.1 ターゲット依存部の概要
783.クイックスタートガイド
79 3.1 開発環境の準備
80 3.2 ジェネレータの構築
81 3.3 XMLスキーマのå…
82¥æ‰‹
83 3.4 サンプルプログラムの構築と実行
84 3.5 カーネルを関数単位でライブラリ化する方法
85 3.6 アプリケーションとカーネルを別々
86に構築する方法
87 3.7 カウンタの循環チェックの省略
88 3.8 Rte_Type.hの用意
894.ディレクトリ構成・ファイル構成
90 4.1 é…
91å¸ƒãƒ‘ッケージのディレクトリ構成
92 ○4.2 ターゲット非依存部のファイル構成
935.コンフィギュレーションスクリプトの使い方
946.Makefileの修正方法
95 6.1 Makefileの変数定義
96 6.2 コンパイルオプション
97○7.ジェネレータの使い方
987.1 コンフィギュレーションファイル(arxml)
998.システムモジュール
100 8.1 システムログ機能
101 8.1.1 低レベル出力
102 8.1.2 ログ情
103報の種別
104 8.1.3 ログ情
105報の重要度
106 8.1.4 ログ情
107報のデータ構造
108 8.1.5 システムログ機能のサービスコール
109 8.1.6 システムログ機能のためのライブラリ関数とマクロ
110 ○8.1.7 システムログ機能のその他のサービス
111 8.2 シリアルインタフェースドライバ
112 8.2.1 シリアルインタフェースドライバのサービスコール
113 8.3 カーネル起動メッセージの出力
1149.サポートライブラリ
115 9.1 基本的なライブラリ関数
116 9.2 キュー操作ライブラリ関数
117 9.3 システムログ出力用ライブラリ関数
118 9.4 実行時間分布集計モジュール
11910.使用上の注意とヒント
120 10.1 タイマドライバの組込み
121 10.2 ASSERTマクロの処理
122 10.3 システムログ機能の扱い
123 10.4 オブジェクトIDの管理
124 10.5 トレースログ記録のサンプルコードの使用方法
125 10.6 システムの起動時の初期化処理
126 10.7 想定するプログラミング言語
127 10.8 ユーザスタック領域定義
128 ○10.9 スタックサイズを見積もる注意点
129 10.10 スタートアップ/シャットダウンフック無効時の注意点
130 ◎10.11 メモリ保護機能
131 ◎10.12 システムサービスの呼出し方法
132 ◎10.13 スタックについて
133 ◎10.13.1 タスク
134 ◎10.13.2 C2ISR
135 ◎10.13.3 信頼フック
136 ◎10.13.4 非信頼フック
137 ◎10.14 本カーネル実装
138の機能レベル
139 ◎10.15 タスク間でのスタック領域のå…
140±æœ‰
141 10.16 システムタイマの使用方法
14211.参考情
143å ±
144 11.1 利用条件と利用報告
145 11.2 保証・適用性・サポート
146 11.3 バグレポート
147 11.4 ウェブサイト
148 11.5 TOPPERSユーザーズメーリングリスト
149 11.6 TOPPERSプロジェクトのメンバ向けのサービス
150 11.7 TOPPERSプロジェクトへの参加
151
152○がついている項
153目はATK2-SC1から変更があった箇所を,◎はATK2-SC3で新規
154に追加された箇所を示す.
155
156
1570.本マニュアルの位置づけ
158TOPPERS/ATK2-SC3は,TOPPERS/ATK2-SC1をベースとしているため,多くの項
159目
160はTOPPERS/ATK2-SC1と同一である.本ドキュメントでは,TOPPERS/ATK2-SC1と
161異なる点について説明する.そのため,まずTOPPERS/ATK2-SC1のユーザーズマ
162ニュアルを参ç…
163§ã®å¾Œï¼Œæœ¬ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’参ç…
164§ã™ã‚‹ã“と.
165
166
1671.TOPPERS/ATK2-SC3の概要
168
1691.1 TOPPERS/ATK2-SC3の位置付け
170
171TOPPERS/ATK2-SC3は,TOPPERS/ATK2-SC1に対して,AUTOSAR OS仕様のSC3をベ
172ースとしてメモリ保護などのアクセス保護機能を追加したリアルタイムカーネ
173ルである.
174
1751.2 TOPPERS/ATK2-SC3の仕様
176
177ATK2-SC1から変更なし.
178
1791.3 既知の問題
180
181ATK2-SC1から変更なし.
182
1831.4 Cygwin環境における注意事項
184
185
186ATK2-SC1から変更なし.
187
188
1892.ターゲット依存部
190
1912.1 ターゲット依存部の概要
192
193ATK2-SC1から変更なし.
194
195
1963.クイックスタートガイド
197
1983.1 開発環境の準備
199
200ATK2-SC1から変更なし.
201
2023.2 ジェネレータの構築
203
204ATK2-SC1から変更なし.
205
2063.3 XMLスキーマのå…
207¥æ‰‹
208
209ATK2-SC1から変更なし.
210
2113.4 サンプルプログラムの構築と実行
212
213ATK2-SC1から変更なし.
214
2153.5 カーネルを関数単位でライブラリ化する方法
216
217ATK2-SC1から変更なし.
218
2193.6 アプリケーションとカーネルを別々
220に構築する方法
221
222ATK2-SC1から変更なし.
223
2243.7 カウンタの循環チェックの省略
225
226ATK2-SC1から変更なし.
227
2283.8 Rte_Type.hの用意
229
230ATK2-SC1から変更なし.
231
232
2334.ディレクトリ構成・ファイル構成
234
2354.1 é…
236å¸ƒãƒ‘ッケージのディレクトリ構成
237
238ATK2-SC1から変更なし.
239
2404.2 ターゲット非依存部のファイル構成
241
242 include/
243 svc_funccall.h システムサービス直接呼び出し(ソフトウェア割込みによる呼出しと区別)ための定義
244
245 kernel/
246 kernel_common.tf コンフィギュレーション各パスå…
247±é€šå®šç¾©ã®éžä¾å­˜éƒ¨ãƒ†ãƒ³ãƒ—レートファイル
248 kernel_mem.tf コンフィギュレーションパス2用の非依存部テンプレートファイル
249 kernel_mem2.tf コンフィギュレーションパス3,パス4用の非依存部テンプレートファイル
250 memory.h メモリオブジェクト管理機能関連の定義
251 memory.c メモリオブジェクト管理機能の内
252部関数
253 osap.h OSアプリケーション機能関連の定義
254 osap.c OSアプリケーション機能の内
255部関数
256 svc.def サービスコール定義ファイル(サービスコールインタフェース生成ツール用)
257 svc_table.c システムサービスのソフトウェア割込みによる呼出すための起動番地テーブル
258 ioc.tf IOC向けジェネレータのパス2のテンプレートファイル
259 ioc_impl.h IOC実装
260用標準ヘッダファイル
261 ioc_manage.c IOC機能
262
263 sysmod/
264 chkobj.c 非信頼OSアプリケーションのオブジェクトアクセス可否をチェックするためのシステムサービス定義
265
266 library/
267 ATK2-SC1から変更なし.
268
269 arch/gcc/
270 ldscript.tf リンカスクリプトの生成のテンプレートファイル
271 tool_svc.h システムサービスソフトウェア割込みによる呼出し(直接呼び出しと区別)ための定義
272
273 arch/logtrace/
274 ATK2-SC1から変更なし.
275
276 utils/
277 gensvc_atk サービスコールインタフェース生成ツール
278
279 sample/
280 sample1.h サンプルプログラム(1)に関する定義(信頼OSアプリケーション)
281 sample1.c サンプルプログラム(1)(信頼OSアプリケーション)
282 sample2.h サンプルプログラム(2)に関する定義(非信頼OSアプリケーション)
283 sample2.c サンプルプログラム(2)(非信頼OSアプリケーション)
284 sample1.arxml サンプルプログラム(1)(2)のコンフィギュレーションファイル(信頼/非信頼OSアプリケーション)
285
286 doc/
287 ATK2-SC1から変更なし.
288
289
2905.コンフィギュレーションスクリプトの使い方
291
292ATK2-SC1から変更なし.
293
294
2956.Makefileの修正方法
296
2976.1 Makefileの変数定義
298
299ATK2-SC1から変更なし.
300
3016.2 コンパイルオプション
302
303ATK2-SC1から変更なし.
304
305
3067.ジェネレータの使い方
307
308ジェネレータ(cfg)は,4つのパスで構成される.
309
310 -p[--pass]<パス番号>
311 パス番号を指定する.1〜4のいずれか.
312
313 -r[--rom-image]<ロードモジュール名>
314 ロードモジュールをSレコードフォーマットの形に変換したファイルの
315 名称を指定する.パス3,パス4でのみ有効.
316
3177.1 コンフィギュレーションファイル(arxml)
318
319ATK2-SC1から変更なし.
320
321
3228.システムモジュール
323
3248.1 システムログ機能
325
326ATK2-SC1から変更なし.
327
3288.1.1 低レベル出力
329
330ATK2-SC1から変更なし.
331
3328.1.2 ログ情
333報の種別
334
335ATK2-SC1から変更なし.
336
3378.1.3 ログ情
338報の重要度
339
340ATK2-SC1から変更なし.
341
3428.1.4 ログ情
343報のデータ構造
344
345ATK2-SC1から変更なし.
346
3478.1.5 システムログ機能のサービスコール
348
349ATK2-SC1から変更なし.
350
3518.1.6 システムログ機能のためのライブラリ関数とマクロ
352
353ATK2-SC1から変更なし.
354
3558.1.7 システムログ機能のその他のサービス
356
357(3)システムログ機能使用する/しない場合の設定
358システムログ機能は,ターゲット追加システムサービスとして位置付け,使用
359する場合,Makefileに以下のコンパイルオプションで記述する.
360
361CDEFS := $(CDEFS) -DUSE_KERNEL_LIBRARY_SYSLOG
362
363コンパイルオプションである-DUSE_KERNEL_LIBRARY_SYSLOGは,カーネルレベ
364ルでのシステムログ機能を使用する/しない設定である.
365-DUSE_KERNEL_LIBRARY_SYSLOGが指定された場合,カーネルにシステムログ機
366能が追加され,各アプリに使用できる.-DUSE_KERNEL_LIBRARY_SYSLOGが指定さ
367れない場合,カーネルにシステムログ機能が無くなり,各アプリに使用できな
368い.
369
370また,各アプリ(ソースファイル)にシステムログ機能を使用する/しない設定を
371個別にしたい場合は,抑止したいソースファイルにおいて,"t_syslog.h"をイン
372クルードする前に,TOPPERS_OMIT_SYSLOGマクロを定義する.
373
3748.2 シリアルインタフェースドライバ
375
3768.2.1 シリアルインタフェースドライバのサービスコール
377
378ATK2-SC1から変更なし.
379
3808.3 カーネル起動メッセージの出力
381
382ATK2-SC1から変更なし.
383
3849.サポートライブラリ
385
3869.1 基本的なライブラリ関数
387
388ATK2-SC1から変更なし.
389
3909.2 キュー操作ライブラリ関数
391
392ATK2-SC1から変更なし.
393
3949.3 システムログ出力用ライブラリ関数
395
396ATK2-SC1から変更なし.
397
3989.4 実行時間分布集計モジュール
399
400ATK2-SC1から変更なし.
401
402
40310.使用上の注意とヒント
404
40510.1 タイマドライバの組込み
406
407ATK2-SC1から変更なし.
408
40910.2 ASSERTマクロの処理
410
411ATK2-SC1から変更なし.
412
41310.3 システムログ機能の扱い
414
415ATK2-SC1から変更なし.
416
41710.4 オブジェクトIDの管理
418
419ATK2-SC1から変更なし.
420
42110.5 トレースログ記録のサンプルコードの使用方法
422
423ATK2-SC1から変更なし.
424
42510.6 システムの起動時の初期化処理
426
427ATK2-SC1から変更なし.
428
42910.7 想定するプログラミング言語
430
431ATK2-SC1から変更なし.
432
43310.8 ユーザスタック領域定義
434
435ATK2-SC1から変更なし.
436
43710.9 スタックサイズを見積もる注意点
438
439本カーネルは,C2ISR/信頼フック用スタックは,合わせて1つのスタックで確
440保され,非信頼フック用スタックは,システムに1つ確保される.
441
44210.10 スタートアップ/シャットダウンフック無効時の注意点
443
444ATK2-SC1から変更なし.
445
44610.11 メモリ保護機能
447
448システムには,信頼OSアプリケーションと非信頼OSアプリケーションが存在す
449る.信頼OSアプリケーションに属する処理単位は,プロセッサの特権モードで
450実行され,å…
451¨ã¦ã®OSオブジェクトに対して,å…
452¨ã¦ã®ç¨®åˆ¥ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’行うこと
453が許可される.非信頼OSアプリケーションに属する処理単位は,プロセッサの
454非特権モードで実行され,どのOSオブジェクトに対してどの種別のアクセスを
455行えるかを制限することができる.カーネル自体は,信頼OSアプリケーション
456と同様な振る舞いをする.
457
458信頼OSアプリケーションは,ハードウェアへのアクセスやシステムサービスの
459使用に制限がなく,非信頼OSアプリケーションは,ハードウェアへのアクセス
460やシステムサービスの使用が制限されるため,信頼OSアプリケーションに属す
461る処理単位は,それなりに信頼されるように作成する必
462要がある.
463
46410.12 システムサービスの呼出し方法
465
466本カーネルでは,システムサービスは,ソフトウェア割込みによって呼出すの
467が基本である.システムサービス呼出しを通常の方法で記述した場合,ソフト
468ウェア割込みによって呼出すことが生成される.
469
470一般に,ソフトウェア割込みによるシステムサービス呼出しはオーバヘッドが
471大きい.そのため,信頼OSアプリケーションに属する処理単位からは,関数呼
472出しによってシステムサービスを呼出すことで,オーバヘッドを削減すること
473ができる.そこで,信頼OSアプリケーションに属する処理単位から関数呼出し
474によってシステムサービスを呼出せるように,機能が用意されている.
475
476信頼OSアプリケーションに属する処理単位が実行する関数のみを含んだソース
477ファイルでは,カーネルヘッダファイル(Os.h)をインクルードする前に,マ
478クロを定義することで,システムサービス呼出しを通常の方法で記述した場合
479に,関数呼出しによって呼出すコードが生成される(「次世代車載システム向
480けRTOS外部仕様書」を参ç…
481§).
482
483gensvc_atkツールの使い方の補足:
484gensvc_atkツールは,サービスコールインタフェース生成プログラムであり,
485サービスコール定義ファイル(svc.def)を読み込んで,ソフトウェア割込み
486によるサービスコール呼出すための一部ソースファイルを生成できる.以下の
487ファイルをカレントディレクトリに生成され,それぞれのディレクトリへの移
488動は手動で行うこと.
489
490実行例:
491 gensvc_atk ../kernel/svc.def
492 (svc.devの記述方法は,svc.dev参ç…
493§ï¼‰
494
495生成ファイル:
496 svc_table.c → kernel/ に置く
497 kernel_fncode.h → include/ に置く
498 svc_call.h → include/ に置く
499 tool_svc.h→ arch/gcc/ に置く
500
50110.13 スタックについて
502
503本カーネルのスタックには,信頼タスク(信頼OSアプリケーションに属するタ
504スク)用スタック,非信頼タスク(非信頼OSアプリケーションに属するタスク
505)用スタック,非信頼タスク用システムスタック,C2ISR用スタック,信頼フ
506ック(信頼OSアプリケーションに属するフック)用スタックと非信頼フック
507(非信頼OSアプリケーションに属するフック)用スタックがある.
508
50910.13.1 タスク
510
511本カーネルでは,非信頼タスクにおいて,非信頼タスク用スタックと非信頼タ
512スク用システムスタックの2本を確保される.基本的に自タスクの非信頼タス
513ク用スタックを使用するが,システムサービス及び信頼関数を呼出す際に非信
514頼タスク用システムスタックを使用する.
515
516一方,信頼タスクにおいて,タスク用スタックとシステム用スタックを合せて
5171本で確保される.
518
51910.13.2 C2ISR
520
521本カーネルは,機能レベル2しか対応していないため,信頼C2ISR(信頼OSアプ
522リケーションに属するC2ISR)しかない.C2ISR実行時に使用するスタックは,
523C2ISR用スタックを使用する.
524
525本カーネルでは,C2ISR用スタックとカーネル自身用スタックと後述信頼フッ
526クに対して,メモリ保護を行わないため,合せて1本のスタックを確保される.
527
52810.13.3 信頼フック
529
530本カーネルでは,信頼フック(システムフックを含む)実行時に,信頼フック
531用スタックを使用する.前節の理由で,C2ISR用スタックとカーネル自身用ス
532タックと合せて1本のスタックを確保される.
533
53410.13.4 非信頼フック
535
536本カーネルでは,非信頼フック実行時に,非信頼フック用スタックを使用す
537る.
538
539上記の説明のように,スタックを見積もる時に,スタック使用対象を確認し
540て,見積もればよい.また,各スタックのデフォルト値は,ターゲットによっ
541て,定義されているため,ターゲット依存設計書を参ç…
542§ã™ã‚‹ï¼Ž
543
54410.14 本カーネル実装
545の機能レベル
546
547本カーネルは,メモリ保護の機能レベル2及び保護違反時処理の機能レベル2を
548実装
549している.機能レベルについては,「次世代車載システム向けRTOS外部仕
550様書」2.3.2機能レベルを参ç…
551§ã™ã‚‹ï¼Ž
552
55310.15 タスク間でのスタック領域のå…
554±æœ‰
555
556本カーネルでは,同優å…
557ˆåº¦åŸºæœ¬ã‚¿ã‚¹ã‚¯ã®ã‚¹ã‚¿ãƒƒã‚¯è‡ªå‹•çš„にå…
558±æœ‰ã‚’サポートして
559いる.更に同じOSアプリケーションに所属するユーザスタックも1つのメモリ
560オブジェクトとしてé…
561ç½®ã™ã‚‹ï¼Žãªã®ã§ï¼Œã‚¿ã‚¹ã‚¯ã®ãƒ¦ãƒ¼ã‚¶ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸãŒï¼ŒåŒã˜
562OSアプリケーションに属する他のタスクのユーザスタック領域と重なっていて
563も,エラーとならない.
564
565この機能を実装
566した制限として,CheckTaskMemoryAccessが正しくエラーフッ
567クを上がらない場合がある.å…
568·ä½“的には,自タスクのスタック領域の境界をま
569たぐメモリ領域に対してCheckTaskMemoryAccessを発行した場合に,引数のエ
570ラーコードにE_OS_ILLEGAL_ADDRESSを上がるべきところを,エラーフックが上
571がらない場合がある.
572
57310.16 システムタイマの使用方法
574
575ATK2-SC1から変更なし.
576
577
57811.参考情
579å ±
580
58111.1 利用条件と利用報告
582
583ATK2-SC1から変更なし.
584
58511.2 保証・適用性・サポート
586
587ATK2-SC1から変更なし.
588
58911.3 バグレポート
590
591ATK2-SC1から変更なし.
592
59311.4 ウェブサイト
594
595ATK2-SC1から変更なし.
596
59711.5 TOPPERSユーザーズメーリングリスト
598
599ATK2-SC1から変更なし.
600
60111.6 TOPPERSプロジェクトのメンバ向けのサービス
602
603ATK2-SC1から変更なし.
604
60511.7 TOPPERSプロジェクトへの参加
606
607ATK2-SC1から変更なし.
608
609
610
611以上
Note: See TracBrowser for help on using the repository browser.