source: atk2-sc3-1.4.0-ntisr/kernel/kernel_opt.tf

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: 10.7 KB
Line 
1$
2$ TOPPERS ATK2
3$ Toyohashi Open Platform for Embedded Real-Time Systems
4$ Automotive Kernel Version 2
5$
6$ Copyright (C) 2011-2015 by Center for Embedded Computing Systems
7$ Graduate School of Information Science, Nagoya Univ., JAPAN
8$ Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
9$ Copyright (C) 2011-2013 by Spansion LLC, USA
10$ Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
11$ Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12$ Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
13$ Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
14$ Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
15$ Copyright (C) 2011-2015 by Witz Corporation
16$ Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
17$ Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
18$ Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
19$ Copyright (C) 2015 by SUZUKI MOTOR CORPORATION
20$
21$ 上記著作権者
22は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
23$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
24$ 変・再é…
25å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
26$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
27$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
28$ スコード中に含まれていること.
29$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
30$ 用できる形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
33$ 者
34マニュアルなど)に,上記の著作権表示,この利用条件および下記
35$ の無保証規定を掲載すること.
36$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
37$ 用できない形で再é…
38å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
39$ と.
40$ (a) 再é…
41å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
42マニュアルなど)に,上記の著
43$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
44$ (b) 再é…
45å¸ƒã®å½¢æ…
46‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
47$ 報告すること.
48$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
49$ 害からも,上記著作権者
50およびTOPPERSプロジェクトをå…
51è²¬ã™ã‚‹ã“と.
52$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
53$ 由に基づく請求からも,上記著作権者
54およびTOPPERSプロジェクトを
55$ å…
56è²¬ã™ã‚‹ã“と.
57$
58$ 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
59$ 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
60$ はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
61$ 用する者
62に対して,AUTOSARパートナーになることを求めている.
63$
64$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者
65お
66$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
67$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
68$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
69$ の責任を負わない.
70$
71$ $Id: kernel_opt.tf 425 2015-12-07 08:06:19Z witz-itoyo $
72$
73
74$
75$ パス2からの情
76報の読込み
77$
78$INCLUDE "cfg2_out.tf"$
79$INCLUDE "kernel/kernel_common.tf"$
80
81$
82$ データセクションのLMAからVMAへのコピー
83$
84$COPY_LMA()$
85
86$ =====================================================================
87$ kernel_mem3.cのå…
88±é€šéƒ¨åˆ†ã®ç”Ÿæˆ
89$ =====================================================================
90
91$FILE "kernel_mem3.c"$
92/* kernel_mem3.c */$NL$
93#include "kernel/kernel_int.h"$NL$
94#include "Os_Lcfg.h"$NL$
95#ifndef TOPPERS_EMPTY_LABEL$NL$
96#define TOPPERS_EMPTY_LABEL(x, y) x y[0]$NL$
97#endif$NL$
98$NL$
99
100/*$NL$
101$SPC$* Include Directives (#include)$NL$
102$SPC$*/$NL$
103$NL$
104$INCLUDES$
105$NL$
106
107$ =====================================================================
108$ シンボルと仮メモリオブジェクト初期化ブロックの読込み
109$ =====================================================================
110
111$
112$ シンボルと仮メモリオブジェクト初期化ブロックの読込み
113$
114$ MO.BASEADDR[moid]:メモリオブジェクトのå…
115ˆé ­ç•ªåœ°
116$ MO.LIMITADDR[moid]:メモリオブジェクトの上限番地
117
118$IF !OMIT_STANDARD_MEMINIB$
119 $MO_MEMTOP_LIST = {}$
120 $memtop_table = SYMBOL("memtop_table")$
121 $offset = 0$
122 $FOREACH moid MO_START_LIST$
123 $IF MO.LINKER[moid]$
124 $MO.BASEADDR[moid] = START_SYMBOL(MO.MLABEL[moid])$
125 $MO.LIMITADDR[moid] = LIMIT_SYMBOL(MO.MLABEL[moid])$
126 $ELSE$
127 $MO.BASEADDR[moid] = PEEK(memtop_table + offset, sizeof_void_ptr)$
128 $offset = offset + sizeof_void_ptr$
129 $MO.LIMITADDR[moid] = (MO.BASEADDR[moid] + MO.SIZE[moid]) & ((1 << sizeof_void_ptr * 8) - 1)$
130 $END$
131 $END$
132$END$
133
134$ =====================================================================
135$ 仮のメモリ構成・初期化ファイルの生成
136$ =====================================================================
137
138$
139$ 仮メモリオブジェクト初期化ブロックの生成
140$
141$IF ISFUNCTION("GENERATE_MEMINIB_TABLE")$
142$ // ターゲット依存部のメモリオブジェクト初期化ブロック生成処理を呼ぶ
143 $GENERATE_MEMINIB_TABLE()$
144$ELIF !OMIT_STANDARD_MEMINIB$
145 $IF LENGTH(OPTIMIZE_MEMINIB)$
146$ // アドレス0を置く領域
147 $tsize_meminib = 1$
148 $FOREACH moid MO_START_LIST$
149$ // サイズが0でないメモリオブジェクトのå…
150ˆé ­ç•ªåœ°ã‚’置く領域
151 $IF MO.BASEADDR[moid] != MO.LIMITADDR[moid]$
152 $tsize_meminib = tsize_meminib + 1$
153 $END$
154 $IF !MO.LINKER[moid]$
155$ // リンカがé…
156ç½®ã—ないメモリオブジェクトは最終番地も必
157要
158 $tsize_meminib = tsize_meminib + 1$
159 $ELIF (MO.SEFLAG[MO.MOEND[moid]] & 0x80) != 0$
160$ // メモリリージョンの最後のメモリオブジェクトは最終番地も必
161要
162 $tsize_meminib = tsize_meminib + 1$
163 $END$
164 $END$
165
166$ // ターゲット依存でtsize_meminibを補正する場合
167 $IF ISFUNCTION("CALC_TSIZE_MEMINIB")$
168 $CALC_TSIZE_MEMINIB()$
169 $END$
170 $END$
171
172 const uint32 tnum_meminib = $tsize_meminib$U;$NL$
173 $NL$
174
175 void *const memtop_table[$tsize_meminib$] = {
176 $IF LENGTH(MO_START_LIST_NOLINKER)$
177 $NL$
178 $JOINEACH moid MO_START_LIST_NOLINKER ",\n"$
179 $TAB$(void *)($MO.BASE[moid]$)
180 $END$$NL$
181 $ELSE$
182 $SPC$0$SPC$
183 $END$
184 };$NL$
185 $NL$
186
187 const MEMINIB meminib_table[$tsize_meminib$] =
188 $SPC${{ TA_NULL, 0U, 0U, 0U }};$NL$
189 $NL$
190$END$
191
192$
193$ 仮dataセクション初期化ブロックの生成
194$
195$IF LENGTH(OPTIMIZE_DATASEC_LIST) && !OMIT_IDATA && LENGTH(DATASEC_LIST)$
196$ // 仮dataセクション初期化ブロックのサイズの適正化処理
197$ // サイズが0でないdataセクションのリスト(MO_DATASEC_LIST)を作成
198 $MO_DATASEC_LIST = {}$
199 $FOREACH moid DATASEC_LIST$
200 $IF MO.BASEADDR[moid] != MO.LIMITADDR[moid]$
201 $MO_DATASEC_LIST = APPEND(MO_DATASEC_LIST, moid)$
202 $END$
203 $END$
204
205$ // パス4に引き渡す情
206å ±
207 $DATASEC_LIST = MO_DATASEC_LIST$
208 $DATASEC_LIST_OPTIMIZED = 1$
209$END$
210
211$
212$ // dataセクションの数とdataセクション初期化ブロック
213$
214$IF !OMIT_STANDARD_DATASECINIB$
215 /*$NL$
216 $SPC$* Data Section Management Functions$NL$
217 $SPC$*/$NL$
218 $NL$
219
220$ // dataセクションの数
221 #define TNUM_DATASEC $IF !OMIT_IDATA$$LENGTH(DATASEC_LIST)$$ELSE$0$END$$NL$
222 $NL$
223
224 $IF ISFUNCTION("DEFINE_CONST_VAR")$
225 $DEFINE_CONST_VAR("const uint32", "tnum_datasec")$ = TNUM_DATASEC;$NL$
226 $ELSE$
227 const uint32 tnum_datasec = TNUM_DATASEC;$NL$
228 $END$
229 $NL$
230
231$ // dataセクション初期化ブロック
232 $IF !OMIT_IDATA && LENGTH(DATASEC_LIST)$
233 $IF ISFUNCTION("DEFINE_CONST_VAR")$
234 $DEFINE_CONST_VAR("const DATASECINIB", "datasecinib_table[TNUM_DATASEC]")$ =
235 $ELSE$
236 const DATASECINIB datasecinib_table[TNUM_DATASEC] =
237 $END$
238 $SPC${{ 0U, 0U, 0U }};$NL$
239 $ELSE$
240 TOPPERS_EMPTY_LABEL(const DATASECINIB, datasecinib_table);$NL$
241 $NL$
242 $END$$NL$
243$END$
244
245$
246$ 仮bssセクション初期化ブロックの生成
247$
248$IF LENGTH(OPTIMIZE_BSSSEC_LIST) && LENGTH(BSSSEC_LIST)$
249$ // 仮bssセクション初期化ブロックのサイズの適正化処理
250$ // サイズが0でないbssセクションのリスト(MO_BSSSEC_LIST)を作成
251 $MO_BSSSEC_LIST = {}$
252 $FOREACH moid BSSSEC_LIST$
253 $IF MO.BASEADDR[moid] != MO.LIMITADDR[moid]$
254 $MO_BSSSEC_LIST = APPEND(MO_BSSSEC_LIST, moid)$
255 $END$
256 $END$
257
258$ // パス4に引き渡す情
259å ±
260 $BSSSEC_LIST = MO_BSSSEC_LIST$
261 $BSSSEC_LIST_OPTIMIZED = 1$
262$END$
263
264$
265$ // bssセクションの数とbssセクション初期化ブロック
266$
267$IF !OMIT_STANDARD_BSSSECINIB$
268 /*$NL$
269 $SPC$* BSS Section Management Functions$NL$
270 $SPC$*/$NL$
271 $NL$
272
273$ // bssセクション初期化ブロック
274 $IF LENGTH(BSSSEC_LIST)$
275 const uint32 tnum_bsssec = $LENGTH(BSSSEC_LIST)$U;$NL$
276 const BSSSECINIB bsssecinib_table[$LENGTH(BSSSEC_LIST)$] =
277 $SPC${{ 0U, 0U }};$NL$
278 $ELSE$
279 const uint32 _kernel_tnum_bsssec = 0U;$NL$
280 TOPPERS_EMPTY_LABEL(const BSSSECINIB, bsssecinib_table);$NL$
281 $END$$NL$
282$END$
283
284$ ターゲット依存部で必
285要なMPUINFOBを出力する
286$GENERATE_TARGET_MPUINFOB()$
287
288$ タスクスタック領域をextern宣言する(kernel_common.tf)
289$GENERATE_EXPORT_TSK_STK()$
290
291$ タスクをextern宣言する(kernel_common.tf)
292$EXTERN_TSK()$
293
294$ OSAP管理ブロックをextern宣言する(kernel_common.tf)
295$EXTERN_OSAPCB()$
296
297$ タスク管理ブロックをextern宣言する(kernel_common.tf)
298$EXTERN_TCB()$
299
300$ タスク初期化ブロックを出力する(kernel_common.tf)
301$GENERATE_TINIB_TABLE()$
302
303$ OSアプリケーション初期化ブロックを出力する(kernel_common.tf)
304$GENERATE_OSAPINIB_TABLE()$
305
306$ =====================================================================
307$ パス4に渡す情
308報の生成
309$ =====================================================================
310
311$FILE "cfg3_out.tf"$
312$$ cfg3_out.tf$NL$
313$NL$
314
315$ tsize_meminibの出力
316$IF !OMIT_STANDARD_MEMINIB$
317 $$tsize_meminib = $tsize_meminib$$$$NL$
318 $NL$
319$END$
320
321$ DATASEC_LIST,MO_DATASEC_LIST,DATASEC_LIST_OPTIMIZEDの出力
322$$DATASEC_LIST = { $DATASEC_LIST$ }$$$NL$
323$IF LENGTH(DATASEC_LIST_OPTIMIZED)$
324 $$MO_DATASEC_LIST = { $MO_DATASEC_LIST$ }$$$NL$
325 $$DATASEC_LIST_OPTIMIZED = $DATASEC_LIST_OPTIMIZED$$$$NL$
326$END$
327$NL$
328
329$ BSSSEC_LIST,MO_BSSSEC_LIST,BSSSEC_LIST_OPTIMIZEDの出力
330$$BSSSEC_LIST = { $BSSSEC_LIST$ }$$$NL$
331$IF LENGTH(BSSSEC_LIST_OPTIMIZED)$
332 $$MO_BSSSEC_LIST = { $MO_BSSSEC_LIST$ }$$$NL$
333 $$BSSSEC_LIST_OPTIMIZED = $BSSSEC_LIST_OPTIMIZED$$$$NL$
334$END$
335$NL$
Note: See TracBrowser for help on using the repository browser.