source: atk2-sc3_fl850f1l/doc/user.txt@ 165

Last change on this file since 165 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 15.6 KB
Line 
1
2 TOPPERS/ATK2-SC3
3 ユーザーズマニュアル
4
5このドキュメントは,TOPPERS/ATK2-SC3を使用するために必要な事項を説明
6するものである.
7
8----------------------------------------------------------------------
9TOPPERS ATK2
10 Toyohashi Open Platform for Embedded Real-Time Systems
11 Automotive Kernel Version 2
12
13Copyright (C) 2011-2015 by Center for Embedded Computing Systems
14 Graduate School of Information Science, Nagoya Univ., JAPAN
15Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
16Copyright (C) 2011-2013 by Spansion LLC, USA
17Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
18Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
19Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
20Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
21Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
22Copyright (C) 2011-2015 by Witz Corporation
23Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
24Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
25Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
26
27上記著作権者は,以下の (1)〜(3)の条件を満たす場合に限り,本ドキュメ
28ント(本ドキュメントを改変したものを含む.以下同じ)を使用・複製・改
29変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
30(1) 本ドキュメントを利用する場合には,上記の著作権表示,この利用条件
31 および下記の無保証規定が,そのままの形でドキュメント中に含まれて
32 いること.
33(2) 本ドキュメントを改変する場合には,ドキュメントを改変した旨の記述
34 を,改変後のドキュメント中に含めること.ただし,改変後のドキュメ
35 ントが,TOPPERSプロジェクト指定の開発成果物である場合には,この限
36 りではない.
37(3) 本ドキュメントの利用により直接的または間接的に生じるいかなる損害
38 からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
39 本ドキュメントのユーザまたはエンドユーザからのいかなる理由に基づ
40 く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
41
42本ドキュメントは,AUTOSAR(AUTomotive Open System ARchitecture)仕様
43に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するものではな
44い.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利用する
45者に対して,AUTOSARパートナーになることを求めている.
46
47本ドキュメントは,無保証で提供されているものである.上記著作権者およ
48びTOPPERSプロジェクトは,本ドキュメントに関して,特定の使用目的に対す
49る適合性も含めて,いかなる保証も行わない.また,本ドキュメントの利用
50により直接的または間接的に生じたいかなる損害に関しても,その責任を負
51わない.
52
53$Id: user.txt 187 2015-06-25 03:39:04Z t_ishikawa $
54----------------------------------------------------------------------
55
56○目次
57
58◎0.本マニュアルの位置づけ
591.TOPPERS/ATK2-SC3の概要
60 ○1.1 TOPPERS/ATK2-SC3の位置付け
61 1.2 TOPPERS/ATK2-SC3の仕様
62 1.3 既知の問題
63 1.4 Cygwin環境における注意事項
642.ターゲット依存部
65 2.1 ターゲット依存部の概要
663.クイックスタートガイド
67 3.1 開発環境の準備
68 3.2 ジェネレータの構築
69 3.3 XMLスキーマの入手
70 3.4 サンプルプログラムの構築と実行
71 3.5 カーネルを関数単位でライブラリ化する方法
72 3.6 アプリケーションとカーネルを別々に構築する方法
73 3.7 カウンタの循環チェックの省略
74 3.8 Rte_Type.hの用意
754.ディレクトリ構成・ファイル構成
76 4.1 配布パッケージのディレクトリ構成
77 ○4.2 ターゲット非依存部のファイル構成
785.コンフィギュレーションスクリプトの使い方
796.Makefileの修正方法
80 6.1 Makefileの変数定義
81 6.2 コンパイルオプション
82○7.ジェネレータの使い方
837.1 コンフィギュレーションファイル(arxml)
848.システムモジュール
85 8.1 システムログ機能
86 8.1.1 低レベル出力
87 8.1.2 ログ情報の種別
88 8.1.3 ログ情報の重要度
89 8.1.4 ログ情報のデータ構造
90 8.1.5 システムログ機能のサービスコール
91 8.1.6 システムログ機能のためのライブラリ関数とマクロ
92 ○8.1.7 システムログ機能のその他のサービス
93 8.2 シリアルインタフェースドライバ
94 8.2.1 シリアルインタフェースドライバのサービスコール
95 8.3 カーネル起動メッセージの出力
969.サポートライブラリ
97 9.1 基本的なライブラリ関数
98 9.2 キュー操作ライブラリ関数
99 9.3 システムログ出力用ライブラリ関数
100 9.4 実行時間分布集計モジュール
10110.使用上の注意とヒント
102 10.1 タイマドライバの組込み
103 10.2 ASSERTマクロの処理
104 10.3 システムログ機能の扱い
105 10.4 オブジェクトIDの管理
106 10.5 トレースログ記録のサンプルコードの使用方法
107 10.6 システムの起動時の初期化処理
108 10.7 想定するプログラミング言語
109 10.8 ユーザスタック領域定義
110 ○10.9 スタックサイズを見積もる注意点
111 10.10 スタートアップ/シャットダウンフック無効時の注意点
112 ◎10.11 メモリ保護機能
113 ◎10.12 システムサービスの呼出し方法
114 ◎10.13 スタックについて
115 ◎10.13.1 タスク
116 ◎10.13.2 C2ISR
117 ◎10.13.3 信頼フック
118 ◎10.13.4 非信頼フック
119 ◎10.14 本カーネル実装の機能レベル
120 ◎10.15 タスク間でのスタック領域の共有
121 10.16 システムタイマの使用方法
12211.参考情報
123 11.1 利用条件と利用報告
124 11.2 保証・適用性・サポート
125 11.3 バグレポート
126 11.4 ウェブサイト
127 11.5 TOPPERSユーザーズメーリングリスト
128 11.6 TOPPERSプロジェクトのメンバ向けのサービス
129 11.7 TOPPERSプロジェクトへの参加
130
131○がついている項目はATK2-SC1から変更があった箇所を,◎はATK2-SC3で新規
132に追加された箇所を示す.
133
134
1350.本マニュアルの位置づけ
136TOPPERS/ATK2-SC3は,TOPPERS/ATK2-SC1をベースとしているため,多くの項目
137はTOPPERS/ATK2-SC1と同一である.本ドキュメントでは,TOPPERS/ATK2-SC1と
138異なる点について説明する.そのため,まずTOPPERS/ATK2-SC1のユーザーズマ
139ニュアルを参照の後,本ドキュメントを参照すること.
140
141
1421.TOPPERS/ATK2-SC3の概要
143
1441.1 TOPPERS/ATK2-SC3の位置付け
145
146TOPPERS/ATK2-SC3は,TOPPERS/ATK2-SC1に対して,AUTOSAR OS仕様のSC3をベ
147ースとしてメモリ保護などのアクセス保護機能を追加したリアルタイムカーネ
148ルである.
149
1501.2 TOPPERS/ATK2-SC3の仕様
151
152ATK2-SC1から変更なし.
153
1541.3 既知の問題
155
156ATK2-SC1から変更なし.
157
1581.4 Cygwin環境における注意事項
159
160ATK2-SC1から変更なし.
161
162
1632.ターゲット依存部
164
1652.1 ターゲット依存部の概要
166
167ATK2-SC1から変更なし.
168
169
1703.クイックスタートガイド
171
1723.1 開発環境の準備
173
174ATK2-SC1から変更なし.
175
1763.2 ジェネレータの構築
177
178ATK2-SC1から変更なし.
179
1803.3 XMLスキーマの入手
181
182ATK2-SC1から変更なし.
183
1843.4 サンプルプログラムの構築と実行
185
186ATK2-SC1から変更なし.
187
1883.5 カーネルを関数単位でライブラリ化する方法
189
190ATK2-SC1から変更なし.
191
1923.6 アプリケーションとカーネルを別々に構築する方法
193
194ATK2-SC1から変更なし.
195
1963.7 カウンタの循環チェックの省略
197
198ATK2-SC1から変更なし.
199
2003.8 Rte_Type.hの用意
201
202ATK2-SC1から変更なし.
203
204
2054.ディレクトリ構成・ファイル構成
206
2074.1 配布パッケージのディレクトリ構成
208
209ATK2-SC1から変更なし.
210
2114.2 ターゲット非依存部のファイル構成
212
213 include/
214 svc_funccall.h システムサービス直接呼び出し(ソフトウェア割込みによる呼出しと区別)ための定義
215
216 kernel/
217 kernel_common.tf コンフィギュレーション各パス共通定義の非依存部テンプレートファイル
218 kernel_mem.tf コンフィギュレーションパス2用の非依存部テンプレートファイル
219 kernel_mem2.tf コンフィギュレーションパス3,パス4用の非依存部テンプレートファイル
220 memory.h メモリオブジェクト管理機能関連の定義
221 memory.c メモリオブジェクト管理機能の内部関数
222 osap.h OSアプリケーション機能関連の定義
223 osap.c OSアプリケーション機能の内部関数
224 svc.def サービスコール定義ファイル(サービスコールインタフェース生成ツール用)
225 svc_table.c システムサービスのソフトウェア割込みによる呼出すための起動番地テーブル
226 ioc.tf IOC向けジェネレータのパス2のテンプレートファイル
227 ioc_impl.h IOC実装用標準ヘッダファイル
228 ioc_manage.c IOC機能
229
230 sysmod/
231 chkobj.c 非信頼OSアプリケーションのオブジェクトアクセス可否をチェックするためのシステムサービス定義
232
233 library/
234 ATK2-SC1から変更なし.
235
236 arch/gcc/
237 ldscript.tf リンカスクリプトの生成のテンプレートファイル
238 tool_svc.h システムサービスソフトウェア割込みによる呼出し(直接呼び出しと区別)ための定義
239
240 arch/logtrace/
241 ATK2-SC1から変更なし.
242
243 utils/
244 gensvc_atk サービスコールインタフェース生成ツール
245
246 sample/
247 sample1.h サンプルプログラム(1)に関する定義(信頼OSアプリケーション)
248 sample1.c サンプルプログラム(1)(信頼OSアプリケーション)
249 sample2.h サンプルプログラム(2)に関する定義(非信頼OSアプリケーション)
250 sample2.c サンプルプログラム(2)(非信頼OSアプリケーション)
251 sample1.arxml サンプルプログラム(1)(2)のコンフィギュレーションファイル(信頼/非信頼OSアプリケーション)
252
253 doc/
254 ATK2-SC1から変更なし.
255
256
2575.コンフィギュレーションスクリプトの使い方
258
259ATK2-SC1から変更なし.
260
261
2626.Makefileの修正方法
263
2646.1 Makefileの変数定義
265
266ATK2-SC1から変更なし.
267
2686.2 コンパイルオプション
269
270ATK2-SC1から変更なし.
271
272
2737.ジェネレータの使い方
274
275ジェネレータ(cfg)は,4つのパスで構成される.
276
277 -p[--pass]<パス番号>
278 パス番号を指定する.1〜4のいずれか.
279
280 -r[--rom-image]<ロードモジュール名>
281 ロードモジュールをSレコードフォーマットの形に変換したファイルの
282 名称を指定する.パス3,パス4でのみ有効.
283
2847.1 コンフィギュレーションファイル(arxml)
285
286ATK2-SC1から変更なし.
287
288
2898.システムモジュール
290
2918.1 システムログ機能
292
293ATK2-SC1から変更なし.
294
2958.1.1 低レベル出力
296
297ATK2-SC1から変更なし.
298
2998.1.2 ログ情報の種別
300
301ATK2-SC1から変更なし.
302
3038.1.3 ログ情報の重要度
304
305ATK2-SC1から変更なし.
306
3078.1.4 ログ情報のデータ構造
308
309ATK2-SC1から変更なし.
310
3118.1.5 システムログ機能のサービスコール
312
313ATK2-SC1から変更なし.
314
3158.1.6 システムログ機能のためのライブラリ関数とマクロ
316
317ATK2-SC1から変更なし.
318
3198.1.7 システムログ機能のその他のサービス
320
321(3)システムログ機能使用する/しない場合の設定
322システムログ機能は,ターゲット追加システムサービスとして位置付け,使用
323する場合,Makefileに以下のコンパイルオプションで記述する.
324
325CDEFS := $(CDEFS) -DUSE_KERNEL_LIBRARY_SYSLOG
326
327コンパイルオプションである-DUSE_KERNEL_LIBRARY_SYSLOGは,カーネルレベ
328ルでのシステムログ機能を使用する/しない設定である.
329-DUSE_KERNEL_LIBRARY_SYSLOGが指定された場合,カーネルにシステムログ機
330能が追加され,各アプリに使用できる.-DUSE_KERNEL_LIBRARY_SYSLOGが指定さ
331れない場合,カーネルにシステムログ機能が無くなり,各アプリに使用できな
332い.
333
334また,各アプリ(ソースファイル)にシステムログ機能を使用する/しない設定を
335個別にしたい場合は,抑止したいソースファイルにおいて,"t_syslog.h"をイン
336クルードする前に,TOPPERS_OMIT_SYSLOGマクロを定義する.
337
3388.2 シリアルインタフェースドライバ
339
3408.2.1 シリアルインタフェースドライバのサービスコール
341
342ATK2-SC1から変更なし.
343
3448.3 カーネル起動メッセージの出力
345
346ATK2-SC1から変更なし.
347
3489.サポートライブラリ
349
3509.1 基本的なライブラリ関数
351
352ATK2-SC1から変更なし.
353
3549.2 キュー操作ライブラリ関数
355
356ATK2-SC1から変更なし.
357
3589.3 システムログ出力用ライブラリ関数
359
360ATK2-SC1から変更なし.
361
3629.4 実行時間分布集計モジュール
363
364ATK2-SC1から変更なし.
365
366
36710.使用上の注意とヒント
368
36910.1 タイマドライバの組込み
370
371ATK2-SC1から変更なし.
372
37310.2 ASSERTマクロの処理
374
375ATK2-SC1から変更なし.
376
37710.3 システムログ機能の扱い
378
379ATK2-SC1から変更なし.
380
38110.4 オブジェクトIDの管理
382
383ATK2-SC1から変更なし.
384
38510.5 トレースログ記録のサンプルコードの使用方法
386
387ATK2-SC1から変更なし.
388
38910.6 システムの起動時の初期化処理
390
391ATK2-SC1から変更なし.
392
39310.7 想定するプログラミング言語
394
395ATK2-SC1から変更なし.
396
39710.8 ユーザスタック領域定義
398
399ATK2-SC1から変更なし.
400
40110.9 スタックサイズを見積もる注意点
402
403本カーネルは,C2ISR/信頼フック用スタックは,合わせて1つのスタックで確
404保され,非信頼フック用スタックは,システムに1つ確保される.
405
40610.10 スタートアップ/シャットダウンフック無効時の注意点
407
408ATK2-SC1から変更なし.
409
41010.11 メモリ保護機能
411
412システムには,信頼OSアプリケーションと非信頼OSアプリケーションが存在す
413る.信頼OSアプリケーションに属する処理単位は,プロセッサの特権モードで
414実行され,全てのOSオブジェクトに対して,全ての種別のアクセスを行うこと
415が許可される.非信頼OSアプリケーションに属する処理単位は,プロセッサの
416非特権モードで実行され,どのOSオブジェクトに対してどの種別のアクセスを
417行えるかを制限することができる.カーネル自体は,信頼OSアプリケーション
418と同様な振る舞いをする.
419
420信頼OSアプリケーションは,ハードウェアへのアクセスやシステムサービスの
421使用に制限がなく,非信頼OSアプリケーションは,ハードウェアへのアクセス
422やシステムサービスの使用が制限されるため,信頼OSアプリケーションに属す
423る処理単位は,それなりに信頼されるように作成する必要がある.
424
42510.12 システムサービスの呼出し方法
426
427本カーネルでは,システムサービスは,ソフトウェア割込みによって呼出すの
428が基本である.システムサービス呼出しを通常の方法で記述した場合,ソフト
429ウェア割込みによって呼出すことが生成される.
430
431一般に,ソフトウェア割込みによるシステムサービス呼出しはオーバヘッドが
432大きい.そのため,信頼OSアプリケーションに属する処理単位からは,関数呼
433出しによってシステムサービスを呼出すことで,オーバヘッドを削減すること
434ができる.そこで,信頼OSアプリケーションに属する処理単位から関数呼出し
435によってシステムサービスを呼出せるように,機能が用意されている.
436
437信頼OSアプリケーションに属する処理単位が実行する関数のみを含んだソース
438ファイルでは,カーネルヘッダファイル(Os.h)をインクルードする前に,マ
439クロを定義することで,システムサービス呼出しを通常の方法で記述した場合
440に,関数呼出しによって呼出すコードが生成される(「次世代車載システム向
441けRTOS外部仕様書」を参照).
442
443gensvc_atkツールの使い方の補足:
444gensvc_atkツールは,サービスコールインタフェース生成プログラムであり,
445サービスコール定義ファイル(svc.def)を読み込んで,ソフトウェア割込み
446によるサービスコール呼出すための一部ソースファイルを生成できる.以下の
447ファイルをカレントディレクトリに生成され,それぞれのディレクトリへの移
448動は手動で行うこと.
449
450実行例:
451 gensvc_atk ../kernel/svc.def
452 (svc.devの記述方法は,svc.dev参照)
453
454生成ファイル:
455 svc_table.c → kernel/ に置く
456 kernel_fncode.h → include/ に置く
457 svc_call.h → include/ に置く
458 tool_svc.h→ arch/gcc/ に置く
459
46010.13 スタックについて
461
462本カーネルのスタックには,信頼タスク(信頼OSアプリケーションに属するタ
463スク)用スタック,非信頼タスク(非信頼OSアプリケーションに属するタスク
464)用スタック,非信頼タスク用システムスタック,C2ISR用スタック,信頼フ
465ック(信頼OSアプリケーションに属するフック)用スタックと非信頼フック
466(非信頼OSアプリケーションに属するフック)用スタックがある.
467
46810.13.1 タスク
469
470本カーネルでは,非信頼タスクにおいて,非信頼タスク用スタックと非信頼タ
471スク用システムスタックの2本を確保される.基本的に自タスクの非信頼タス
472ク用スタックを使用するが,システムサービス及び信頼関数を呼出す際に非信
473頼タスク用システムスタックを使用する.
474
475一方,信頼タスクにおいて,タスク用スタックとシステム用スタックを合せて
4761本で確保される.
477
47810.13.2 C2ISR
479
480本カーネルは,機能レベル2しか対応していないため,信頼C2ISR(信頼OSアプ
481リケーションに属するC2ISR)しかない.C2ISR実行時に使用するスタックは,
482C2ISR用スタックを使用する.
483
484本カーネルでは,C2ISR用スタックとカーネル自身用スタックと後述信頼フッ
485クに対して,メモリ保護を行わないため,合せて1本のスタックを確保される.
486
48710.13.3 信頼フック
488
489本カーネルでは,信頼フック(システムフックを含む)実行時に,信頼フック
490用スタックを使用する.前節の理由で,C2ISR用スタックとカーネル自身用ス
491タックと合せて1本のスタックを確保される.
492
49310.13.4 非信頼フック
494
495本カーネルでは,非信頼フック実行時に,非信頼フック用スタックを使用す
496る.
497
498上記の説明のように,スタックを見積もる時に,スタック使用対象を確認し
499て,見積もればよい.また,各スタックのデフォルト値は,ターゲットによっ
500て,定義されているため,ターゲット依存設計書を参照する.
501
50210.14 本カーネル実装の機能レベル
503
504本カーネルは,メモリ保護の機能レベル2及び保護違反時処理の機能レベル2を
505実装している.機能レベルについては,「次世代車載システム向けRTOS外部仕
506様書」2.3.2機能レベルを参照する.
507
50810.15 タスク間でのスタック領域の共有
509
510本カーネルでは,同優先度基本タスクのスタック自動的に共有をサポートして
511いる.更に同じOSアプリケーションに所属するユーザスタックも1つのメモリ
512オブジェクトとして配置する.なので,タスクのユーザスタック領域が,同じ
513OSアプリケーションに属する他のタスクのユーザスタック領域と重なっていて
514も,エラーとならない.
515
516この機能を実装した制限として,CheckTaskMemoryAccessが正しくエラーフッ
517クを上がらない場合がある.具体的には,自タスクのスタック領域の境界をま
518たぐメモリ領域に対してCheckTaskMemoryAccessを発行した場合に,引数のエ
519ラーコードにE_OS_ILLEGAL_ADDRESSを上がるべきところを,エラーフックが上
520がらない場合がある.
521
52210.16 システムタイマの使用方法
523
524ATK2-SC1から変更なし.
525
526
52711.参考情報
528
52911.1 利用条件と利用報告
530
531ATK2-SC1から変更なし.
532
53311.2 保証・適用性・サポート
534
535ATK2-SC1から変更なし.
536
53711.3 バグレポート
538
539ATK2-SC1から変更なし.
540
54111.4 ウェブサイト
542
543ATK2-SC1から変更なし.
544
54511.5 TOPPERSユーザーズメーリングリスト
546
547ATK2-SC1から変更なし.
548
54911.6 TOPPERSプロジェクトのメンバ向けのサービス
550
551ATK2-SC1から変更なし.
552
55311.7 TOPPERSプロジェクトへの参加
554
555ATK2-SC1から変更なし.
556
557
558
559以上
Note: See TracBrowser for help on using the repository browser.