source: rtos_arduino/trunk/asp_1.9.2/kernel/kernel_check.tf@ 136

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

ライブラリとOS及びベーシックなサンプルの追加.

File size: 7.8 KB
Line 
1$ ======================================================================
2$
3$ TOPPERS/ASP Kernel
4$ Toyohashi Open Platform for Embedded Real-Time Systems/
5$ Advanced Standard Profile Kernel
6$
7$ Copyright (C) 2008-2013 by Embedded and Real-Time Systems Laboratory
8$ Graduate School of Information Science, Nagoya Univ., JAPAN
9$
10$ 上記著作権者
11は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
12$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13$ 変・再é…
14å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
15$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17$ スコード中に含まれていること.
18$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19$ 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22$ 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24$ の無保証規定を掲載すること.
25$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26$ 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28$ と.
29$ (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
33$ (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36$ 報告すること.
37$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38$ 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42$ 由に基づく請求からも,上記著作権者
43およびTOPPERSプロジェクトを
44$ å…
45è²¬ã™ã‚‹ã“と.
46$
47$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52$ の責任を負わない.
53$
54$ @(#) $Id: kernel_check.tf 2526 2013-09-16 01:32:30Z ertl-hiro $
55$
56$ =====================================================================
57
58$
59$ データセクションのLMAからVMAへのコピー
60$
61$FOREACH lma LMA.ORDER_LIST$
62 $start_data = SYMBOL(LMA.START_DATA[lma])$
63 $end_data = SYMBOL(LMA.END_DATA[lma])$
64 $start_idata = SYMBOL(LMA.START_IDATA[lma])$
65 $IF !LENGTH(start_data)$
66 $ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_DATA[lma])$$END$
67 $ELIF !LENGTH(end_data)$
68 $ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.END_DATA[lma])$$END$
69 $ELIF !LENGTH(start_idata)$
70 $ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_IDATA[lma])$$END$
71 $ELSE$
72 $BCOPY(start_idata, start_data, end_data - start_data)$
73 $END$
74$END$
75
76$
77$ 関数のå…
78ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
79$
80$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
81$ // タスクとタスク例外処理ルーチンのå…
82ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
83 $tinib = SYMBOL("_kernel_tinib_table")$
84 $FOREACH tskid TSK.ID_LIST$
85 $task = PEEK(tinib + offsetof_TINIB_task, sizeof_FP)$
86 $IF CHECK_FUNC_ALIGN && (task & (CHECK_FUNC_ALIGN - 1)) != 0$
87 $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
88 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
89 "task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
90 $END$
91 $IF CHECK_FUNC_NONNULL && task == 0$
92 $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
93 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
94 "task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
95 $END$
96 $texrtn = PEEK(tinib + offsetof_TINIB_texrtn, sizeof_FP)$
97 $IF CHECK_FUNC_ALIGN && (texrtn & (CHECK_FUNC_ALIGN - 1)) != 0$
98 $ERROR DEF_TEX.TEXT_LINE[tskid]$E_PAR:
99 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
100 "texrtn", TSK.TEXRTN[tskid], tskid, "DEF_TEX")$$END$
101 $END$
102 $tinib = tinib + sizeof_TINIB$
103 $END$
104
105$ // 周期ハンドラのå…
106ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
107 $cycinib = SYMBOL("_kernel_cycinib_table")$
108 $FOREACH cycid CYC.ID_LIST$
109 $cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, sizeof_FP)$
110 $IF CHECK_FUNC_ALIGN && (cychdr & (CHECK_FUNC_ALIGN - 1)) != 0$
111 $ERROR CYC.TEXT_LINE[cycid]$E_PAR:
112 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
113 "cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
114 $END$
115 $IF CHECK_FUNC_NONNULL && cychdr == 0$
116 $ERROR CYC.TEXT_LINE[cycid]$E_PAR:
117 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
118 "cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
119 $END$
120 $cycinib = cycinib + sizeof_CYCINIB$
121 $END$
122
123$ // アラームハンドラのå…
124ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
125 $alminib = SYMBOL("_kernel_alminib_table")$
126 $FOREACH almid ALM.ID_LIST$
127 $almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, sizeof_FP)$
128 $IF CHECK_FUNC_ALIGN && (almhdr & (CHECK_FUNC_ALIGN - 1)) != 0$
129 $ERROR ALM.TEXT_LINE[almid]$E_PAR:
130 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
131 "almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
132 $END$
133 $IF CHECK_FUNC_NONNULL && almhdr == 0$
134 $ERROR ALM.TEXT_LINE[almid]$E_PAR:
135 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
136 "almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
137 $END$
138 $alminib = alminib + sizeof_ALMINIB$
139 $END$
140$END$
141
142$
143$ スタック領域のå…
144ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
145$
146$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
147$ // タスクのスタック領域のå…
148ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
149 $tinib = SYMBOL("_kernel_tinib_table")$
150 $FOREACH tskid TSK.ID_LIST$
151 $IF USE_TSKINICTXB$
152 $stk = GET_STK_TSKINICTXB(tinib)$
153 $ELSE$
154 $stk = PEEK(tinib + offsetof_TINIB_stk, sizeof_void_ptr)$
155 $END$
156 $IF CHECK_STACK_ALIGN && (stk & (CHECK_STACK_ALIGN - 1)) != 0$
157 $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
158 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
159 "stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
160 $END$
161 $IF CHECK_STACK_NONNULL && stk == 0$
162 $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
163 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
164 "stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
165 $END$
166 $tinib = tinib + sizeof_TINIB$
167 $END$
168
169$ // 非タスクコンテキスト用のスタック領域のå…
170ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
171 $istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
172 $IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
173 $ERROR ICS.TEXT_LINE[1]$E_PAR:
174 $FORMAT(_("%1% `%2%\' in %3% is not aligned"),
175 "istk", ICS.ISTK[1], "DEF_ICS")$$END$
176 $END$
177 $IF CHECK_STACK_NONNULL && istk == 0$
178 $ERROR ICS.TEXT_LINE[1]$E_PAR:
179 $FORMAT(_("%1% `%2%\' in %3% is null"),
180 "istk", ICS.ISTK[1], "DEF_ICS")$$END$
181 $END$
182$END$
183
184$
185$ 固定長メモリプール領域のå…
186ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
187$
188$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
189$ // 固定長メモリプール領域のå…
190ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
191 $mpfinib = SYMBOL("_kernel_mpfinib_table")$
192 $FOREACH mpfid MPF.ID_LIST$
193 $mpf = PEEK(mpfinib + offsetof_MPFINIB_mpf, sizeof_void_ptr)$
194 $IF CHECK_MPF_ALIGN && (mpf & (CHECK_MPF_ALIGN - 1)) != 0$
195 $ERROR MPF.TEXT_LINE[mpfid]$E_PAR:
196 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
197 "mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
198 $END$
199 $IF CHECK_MPF_NONNULL && mpf == 0$
200 $ERROR MPF.TEXT_LINE[mpfid]$E_PAR:
201 $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
202 "mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
203 $END$
204 $mpfinib = mpfinib + sizeof_MPFINIB$
205 $END$
206$END$
Note: See TracBrowser for help on using the repository browser.