source: atk2-sc3_fl850f1l/kernel/kernel_opt.tf@ 117

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

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

File size: 9.3 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$
20$ 上記著作権者は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ
21$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
22$ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
23$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
24$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25$ スコード中に含まれていること.
26$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
27$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
28$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
29$ の無保証規定を掲載すること.
30$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
31$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
32$ と.
33$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
34$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
35$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
36$ 報告すること.
37$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
39$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40$ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
41$ 免責すること.
42$
43$ 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
44$ 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
45$ はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
46$ 用する者に対して,AUTOSARパートナーになることを求めている.
47$
48$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
49$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52$ の責任を負わない.
53$
54$ $Id: kernel_opt.tf 187 2015-06-25 03:39:04Z t_ishikawa $
55$
56
57$
58$ パス2からの情報の読込み
59$
60$INCLUDE "cfg2_out.tf"$
61$INCLUDE "kernel/kernel_common.tf"$
62
63$
64$ データセクションのLMAからVMAへのコピー
65$
66$COPY_LMA()$
67
68$ =====================================================================
69$ kernel_mem3.cの共通部分の生成
70$ =====================================================================
71
72$FILE "kernel_mem3.c"$
73/* kernel_mem3.c */$NL$
74#include "kernel/kernel_int.h"$NL$
75#include "Os_Lcfg.h"$NL$
76#ifndef TOPPERS_EMPTY_LABEL$NL$
77#define TOPPERS_EMPTY_LABEL(x, y) x y[0]$NL$
78#endif$NL$
79$NL$
80
81/*$NL$
82$SPC$* Include Directives (#include)$NL$
83$SPC$*/$NL$
84$NL$
85$INCLUDES$
86$NL$
87
88$ =====================================================================
89$ シンボルと仮メモリオブジェクト初期化ブロックの読込み
90$ =====================================================================
91
92$
93$ シンボルと仮メモリオブジェクト初期化ブロックの読込み
94$
95$ MO.BASEADDR[moid]:メモリオブジェクトの先頭番地
96$ MO.LIMITADDR[moid]:メモリオブジェクトの上限番地
97
98$IF !OMIT_STANDARD_MEMINIB$
99 $MO_MEMTOP_LIST = {}$
100 $memtop_table = SYMBOL("memtop_table")$
101 $offset = 0$
102 $FOREACH moid MO_START_LIST$
103 $IF MO.LINKER[moid]$
104 $MO.BASEADDR[moid] = START_SYMBOL(MO.MLABEL[moid])$
105 $MO.LIMITADDR[moid] = LIMIT_SYMBOL(MO.MLABEL[moid])$
106 $ELSE$
107 $MO.BASEADDR[moid] = PEEK(memtop_table + offset, sizeof_void_ptr)$
108 $offset = offset + sizeof_void_ptr$
109 $MO.LIMITADDR[moid] = (MO.BASEADDR[moid] + MO.SIZE[moid]) & ((1 << sizeof_void_ptr * 8) - 1)$
110 $END$
111 $END$
112$END$
113
114$ =====================================================================
115$ 仮のメモリ構成・初期化ファイルの生成
116$ =====================================================================
117
118$
119$ 仮メモリオブジェクト初期化ブロックの生成
120$
121$IF ISFUNCTION("GENERATE_MEMINIB_TABLE")$
122$ // ターゲット依存部のメモリオブジェクト初期化ブロック生成処理を呼ぶ
123 $GENERATE_MEMINIB_TABLE()$
124$ELIF !OMIT_STANDARD_MEMINIB$
125 $IF LENGTH(OPTIMIZE_MEMINIB)$
126$ // アドレス0を置く領域
127 $tsize_meminib = 1$
128 $FOREACH moid MO_START_LIST$
129$ // サイズが0でないメモリオブジェクトの先頭番地を置く領域
130 $IF MO.BASEADDR[moid] != MO.LIMITADDR[moid]$
131 $tsize_meminib = tsize_meminib + 1$
132 $END$
133 $IF !MO.LINKER[moid]$
134$ // リンカが配置しないメモリオブジェクトは最終番地も必要
135 $tsize_meminib = tsize_meminib + 1$
136 $ELIF (MO.SEFLAG[MO.MOEND[moid]] & 0x80) != 0$
137$ // メモリリージョンの最後のメモリオブジェクトは最終番地も必要
138 $tsize_meminib = tsize_meminib + 1$
139 $END$
140 $END$
141
142$ // ターゲット依存でtsize_meminibを補正する場合
143 $IF ISFUNCTION("CALC_TSIZE_MEMINIB")$
144 $CALC_TSIZE_MEMINIB()$
145 $END$
146 $END$
147
148 const uint32 tnum_meminib = $tsize_meminib$U;$NL$
149 $NL$
150
151 void *const memtop_table[$tsize_meminib$] = {
152 $IF LENGTH(MO_START_LIST_NOLINKER)$
153 $NL$
154 $JOINEACH moid MO_START_LIST_NOLINKER ",\n"$
155 $TAB$(void *)($MO.BASE[moid]$)
156 $END$$NL$
157 $ELSE$
158 $SPC$0$SPC$
159 $END$
160 };$NL$
161 $NL$
162
163 const MEMINIB meminib_table[$tsize_meminib$] =
164 $SPC${{ TA_NULL, 0U, 0U, 0U }};$NL$
165 $NL$
166$END$
167
168$
169$ dataセクション初期化ブロックの生成
170$
171$IF LENGTH(OPTIMIZE_DATASEC_LIST) && !OMIT_IDATA && LENGTH(DATASEC_LIST)$
172$ // dataセクション初期化ブロックのサイズの適正化処理
173$ // サイズが0でないdataセクションのリスト(MO_DATASEC_LIST)を作成
174 $MO_DATASEC_LIST = {}$
175 $FOREACH moid DATASEC_LIST$
176 $IF MO.BASEADDR[moid] != MO.LIMITADDR[moid]$
177 $MO_DATASEC_LIST = APPEND(MO_DATASEC_LIST, moid)$
178 $END$
179 $END$
180
181$ // パス4に引き渡す情報
182 $DATASEC_LIST = MO_DATASEC_LIST$
183 $DATASEC_LIST_OPTIMIZED = 1$
184$END$
185
186$
187$ // dataセクションの数とdataセクション初期化ブロック
188$
189$IF !OMIT_STANDARD_DATASECINIB$
190 /*$NL$
191 $SPC$* Data Section Management Functions$NL$
192 $SPC$*/$NL$
193 $NL$
194
195$ // dataセクションの数
196 #define TNUM_DATASEC $IF !OMIT_IDATA$$LENGTH(DATASEC_LIST)$$ELSE$0$END$$NL$
197 $NL$
198
199 $IF ISFUNCTION("DEFINE_CONST_VAR")$
200 $DEFINE_CONST_VAR("const uint32", "tnum_datasec")$ = TNUM_DATASEC;$NL$
201 $ELSE$
202 const uint32 tnum_datasec = TNUM_DATASEC;$NL$
203 $END$
204 $NL$
205
206$ // dataセクション初期化ブロック
207 $IF !OMIT_IDATA && LENGTH(DATASEC_LIST)$
208 $IF ISFUNCTION("DEFINE_CONST_VAR")$
209 $DEFINE_CONST_VAR("const DATASECINIB", "datasecinib_table[TNUM_DATASEC]")$ =
210 $ELSE$
211 const DATASECINIB datasecinib_table[TNUM_DATASEC] =
212 $END$
213 $SPC${{ 0U, 0U, 0U }};$NL$
214 $ELSE$
215 TOPPERS_EMPTY_LABEL(const DATASECINIB, datasecinib_table);$NL$
216 $NL$
217 $END$$NL$
218$END$
219
220$
221$ 仮bssセクション初期化ブロックの生成
222$
223$IF LENGTH(OPTIMIZE_BSSSEC_LIST) && LENGTH(BSSSEC_LIST)$
224$ // 仮bssセクション初期化ブロックのサイズの適正化処理
225$ // サイズが0でないbssセクションのリスト(MO_BSSSEC_LIST)を作成
226 $MO_BSSSEC_LIST = {}$
227 $FOREACH moid BSSSEC_LIST$
228 $IF MO.BASEADDR[moid] != MO.LIMITADDR[moid]$
229 $MO_BSSSEC_LIST = APPEND(MO_BSSSEC_LIST, moid)$
230 $END$
231 $END$
232
233$ // パス4に引き渡す情報
234 $BSSSEC_LIST = MO_BSSSEC_LIST$
235 $BSSSEC_LIST_OPTIMIZED = 1$
236$END$
237
238$
239$ // bssセクションの数とbssセクション初期化ブロック
240$
241$IF !OMIT_STANDARD_BSSSECINIB$
242 /*$NL$
243 $SPC$* BSS Section Management Functions$NL$
244 $SPC$*/$NL$
245 $NL$
246
247$ // bssセクション初期化ブロック
248 $IF LENGTH(BSSSEC_LIST)$
249 const uint32 tnum_bsssec = $LENGTH(BSSSEC_LIST)$U;$NL$
250 const BSSSECINIB bsssecinib_table[$LENGTH(BSSSEC_LIST)$] =
251 $SPC${{ 0U, 0U }};$NL$
252 $ELSE$
253 const uint32 _kernel_tnum_bsssec = 0U;$NL$
254 TOPPERS_EMPTY_LABEL(const BSSSECINIB, bsssecinib_table);$NL$
255 $END$$NL$
256$END$
257
258$ ターゲット依存部で必要なMPUINFOBを出力する
259$GENERATE_TARGET_MPUINFOB()$
260
261$ タスクスタック領域をextern宣言する(kernel_common.tf)
262$GENERATE_EXPORT_TSK_STK()$
263
264$ タスクをextern宣言する(kernel_common.tf)
265$EXTERN_TSK()$
266
267$ OSAP管理ブロックをextern宣言する(kernel_common.tf)
268$EXTERN_OSAPCB()$
269
270$ タスク管理ブロックをextern宣言する(kernel_common.tf)
271$EXTERN_TCB()$
272
273$ タスク初期化ブロックを出力する(kernel_common.tf)
274$GENERATE_TINIB_TABLE()$
275
276$ OSアプリケーション初期化ブロックを出力する(kernel_common.tf)
277$GENERATE_OSAPINIB_TABLE()$
278
279$ =====================================================================
280$ パス4に渡す情報の生成
281$ =====================================================================
282
283$FILE "cfg3_out.tf"$
284$$ cfg3_out.tf$NL$
285$NL$
286
287$ tsize_meminibの出力
288$IF !OMIT_STANDARD_MEMINIB$
289 $$tsize_meminib = $tsize_meminib$$$$NL$
290 $NL$
291$END$
292
293$ DATASEC_LIST,MO_DATASEC_LIST,DATASEC_LIST_OPTIMIZEDの出力
294$$DATASEC_LIST = { $DATASEC_LIST$ }$$$NL$
295$IF LENGTH(DATASEC_LIST_OPTIMIZED)$
296 $$MO_DATASEC_LIST = { $MO_DATASEC_LIST$ }$$$NL$
297 $$DATASEC_LIST_OPTIMIZED = $DATASEC_LIST_OPTIMIZED$$$$NL$
298$END$
299$NL$
300
301$ BSSSEC_LIST,MO_BSSSEC_LIST,BSSSEC_LIST_OPTIMIZEDの出力
302$$BSSSEC_LIST = { $BSSSEC_LIST$ }$$$NL$
303$IF LENGTH(BSSSEC_LIST_OPTIMIZED)$
304 $$MO_BSSSEC_LIST = { $MO_BSSSEC_LIST$ }$$$NL$
305 $$BSSSEC_LIST_OPTIMIZED = $BSSSEC_LIST_OPTIMIZED$$$$NL$
306$END$
307$NL$
Note: See TracBrowser for help on using the repository browser.