1 |
|
---|
2 | TOPPERS/SSPJ[l
|
---|
3 | RtBM
|
---|
4 | [^dl
|
---|
5 |
|
---|
6 | Îo[W: Release 1.3.0
|
---|
7 | ÅIXV: 2014N 5 19ú
|
---|
8 |
|
---|
9 | ±ÌhL
|
---|
10 | gÍCTOPPERS/SSPJ[lÌRtBM
|
---|
11 | [^ªWIɶ
|
---|
12 | ¬·×«t@CÌàeÉ¢ÄðൽàÌÅ éD^[Qbg˶ɶ¬
|
---|
13 | ·éàeÉ¢ÄÍC±ÌhL
|
---|
14 | gÌÍÍOÅ éD
|
---|
15 |
|
---|
16 | ----------------------------------------------------------------------
|
---|
17 | TOPPERS/SSP Kernel
|
---|
18 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
19 | Smallet Set Profile Kernel
|
---|
20 |
|
---|
21 | Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
|
---|
22 | Graduate School of Information Science, Nagoya Univ., JAPAN
|
---|
23 | Copyright (C) 2012-2015 by Naoki Saito
|
---|
24 | Nagoya Municipal Industrial Research Institute, JAPAN
|
---|
25 |
|
---|
26 | ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
|
---|
27 | Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü
|
---|
28 | ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD
|
---|
29 | (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
|
---|
30 | \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
|
---|
31 | XR[hÉÜÜêĢ鱯D
|
---|
32 | (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg
|
---|
33 | pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL
|
---|
34 | gip
|
---|
35 | Ò}j
|
---|
36 | AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
|
---|
37 | Ì³ÛØKèðfÚ·é±ÆD
|
---|
38 | (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg
|
---|
39 | pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
|
---|
40 | ÆD
|
---|
41 | (a) Äzzɺ¤hL
|
---|
42 | gipÒ}j
|
---|
43 | AÈÇjÉCãLÌ
|
---|
44 | ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
|
---|
45 | (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
|
---|
46 | ñ·é±ÆD
|
---|
47 | (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹
|
---|
48 | Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
|
---|
49 | ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé
|
---|
50 | RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð
|
---|
51 | ÆÓ·é±ÆD
|
---|
52 |
|
---|
53 | {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
|
---|
54 | æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
|
---|
55 | ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF
|
---|
56 | AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»
|
---|
57 | ÌÓCðíÈ¢D
|
---|
58 |
|
---|
59 | $Id: configurator.txt 659 2015-05-19 09:45:26Z nmir-saito $
|
---|
60 | ----------------------------------------------------------------------
|
---|
61 |
|
---|
62 | Ú
|
---|
63 |
|
---|
64 | E¶¬·ét@CÌíÞ
|
---|
65 | EÃIAPIê
|
---|
66 | EJ[l\¬Eú»wb_t@Cikernel_cfg.hj
|
---|
67 | (1) Å趬ª
|
---|
68 | (2) IuWFNgÌè`
|
---|
69 | (3) IuWFNgÌIDÔÌè`
|
---|
70 | EJ[l\¬Eú»t@Cikernel_cfg.cj
|
---|
71 | (1) Å趬ª
|
---|
72 | (2) CN[hfBNeBui#includejÌ
|
---|
73 | (3) IuWFNgÌIDÔðÛ·éÏÌè`
|
---|
74 | (4) g[XO}NÌftHgè`
|
---|
75 | (5) eJ[lIuWFNgÉÖ·éè`
|
---|
76 | (5-1) ^XNÉÖ·éè`
|
---|
77 | (5-2) CxgtOÉÖ·éè`
|
---|
78 | (5-3) f[^L
|
---|
79 | [ÉÖ·éè`
|
---|
80 | (5-4) üúnhÉÖ·éè`
|
---|
81 | (5-5) A[nhÉÖ·éè`
|
---|
82 | (6) ÝÉÖ·éè`
|
---|
83 | (6-1) ÝvCÉÖ·éè`
|
---|
84 | (6-2) ÝT[rX[`ÉÖ·éè`
|
---|
85 | (6-3) ÝnhÉÖ·éè`
|
---|
86 | (7) CPUáOÉÖ·éè`
|
---|
87 | (8) ¤LX^bNÌæÉÖ·éè`
|
---|
88 | (9) ^CCxgÇÉÖ·éè`
|
---|
89 | (10)eW
|
---|
90 | [Ìú»ÖÌè`
|
---|
91 | (11)ú»[`ÌÀsÖÌè`
|
---|
92 | (12)I¹[`ÌÀsÖÌè`
|
---|
93 |
|
---|
94 | ¶¬·ét@CÌíÞ
|
---|
95 |
|
---|
96 | SSPJ[lÌRtBM
|
---|
97 | [^ÍCVXeRtBM
|
---|
98 | [Vt@C
|
---|
99 | ðµÄCJ[l\¬Eú»t@Cikernel_cfg.cjÆ\¬Eú
|
---|
100 | »wb_t@Cikernel_cfg.hj𶬷éDܽCRtBM
|
---|
101 | [^Ì
|
---|
102 | ÌrÉCKvÈÔt@C𶬷éD
|
---|
103 |
|
---|
104 |
|
---|
105 | ÃIAPIê
|
---|
106 |
|
---|
107 | SSPJ[lÌRtBM
|
---|
108 | [^ª·éÃIAPIÍÌÊèD
|
---|
109 |
|
---|
110 | (1) ^XNÇ@\
|
---|
111 | CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
|
---|
112 | PRI itskpri, SIZE stksz, STK_T *stk })
|
---|
113 | DEF_EPR (ID tskid, { PRI exepri })
|
---|
114 |
|
---|
115 | (2) ¯úEÊM@\
|
---|
116 | CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
|
---|
117 | CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
|
---|
118 |
|
---|
119 | ¦ dtqmb ª NULL ÅÈ¢êÍT|[gµÈ¢D
|
---|
120 |
|
---|
121 | (3) ÔÇ@\
|
---|
122 | CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr,
|
---|
123 | RELTIM cyctim, RELTIM cycphs })
|
---|
124 | CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })
|
---|
125 |
|
---|
126 | (4) ÝÇ@\
|
---|
127 | CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
|
---|
128 | ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
|
---|
129 | DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr })
|
---|
130 |
|
---|
131 | (5) CPUáOÇ@\
|
---|
132 | DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
|
---|
133 |
|
---|
134 | (6) VXe\‚@\
|
---|
135 | DEF_ICS({ SIZE istksz, STK_T *istk })
|
---|
136 | DEF_STK({ SIZE stksz, STK_T *stk })
|
---|
137 | ATT_INI({ ATR iniatr, intptr_t exinf, INIRTN inirtn })
|
---|
138 | ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
|
---|
139 |
|
---|
140 | ±êçÌÃIAPIÌp[^ÌàCID^Ìp[^ÍIuWFNg¯Ê¼C
|
---|
141 | |C^^iTASKCCYCHDRCALMHDRCISRCINTHDRCEXCHDRCINIRTNCTERRTNC
|
---|
142 | STK_T *j¨æÑ intptr_t ^Ìp[^ÍêÊè®p[^Æ·éD
|
---|
143 | »Ì¼Ìp[^ÍC®è®p[^Æ·éD
|
---|
144 |
|
---|
145 |
|
---|
146 | J[l\¬Eú»wb_t@Cikernel_cfg.hj
|
---|
147 |
|
---|
148 | J[l\¬Eú»wb_t@Cikernel_cfg.hjÉÍCÌè`𶬷éD
|
---|
149 |
|
---|
150 | (1) Å趬ª
|
---|
151 |
|
---|
152 | kernel_cfg.hª¡ñCN[h³êéÌðh®½ßÌLq𶬷éDï
|
---|
153 | ÌIÉÍCt@CÌæªÉÌs𶬷éD
|
---|
154 |
|
---|
155 | #ifndef TOPPERS_KERNEL_CFG_H
|
---|
156 | #define TOPPERS_KERNEL_CFG_H
|
---|
157 |
|
---|
158 | ܽCt@CÌöÉÌs𶬷éD
|
---|
159 |
|
---|
160 | #endif /* TOPPERS_KERNEL_CFG_H */
|
---|
161 |
|
---|
162 | (2) IuWFNgÌè`
|
---|
163 |
|
---|
164 | J[lªT|[g·éIuWFNgÌð}Nè`·évvZbTfB
|
---|
165 | NeBui#definej𶬷éDïÌIÉÍCÌæ¤ÈLq𶬷éD
|
---|
166 |
|
---|
167 | #define TNUM_TSKID <^XNÌ>
|
---|
168 | #define TNUM_FLGID <CxgtOÌ>
|
---|
169 | #define TNUM_DTQID <f[^L
|
---|
170 | [Ì>
|
---|
171 | #define TNUM_CYCID <üúnhÌ>
|
---|
172 | #define TNUM_ALMID <A[nhÌ>
|
---|
173 |
|
---|
174 | (3) IuWFNgÌIDÔÌè`
|
---|
175 |
|
---|
176 | RtBM
|
---|
177 | [^ªIDÔðèt¯½IuWFNg̼OðCèt¯½
|
---|
178 | IDÔÉ}Nè`·évvZbTfBNeBui#definej𶬷éD
|
---|
179 | á¦ÎCÌæ¤ÈLq𶬷éD
|
---|
180 |
|
---|
181 | #define TASK1 1
|
---|
182 | #define TASK2 2
|
---|
183 | #define ALM1 1
|
---|
184 |
|
---|
185 | **************************************************************************
|
---|
186 | SSPJ[lÌêCCRE_TSK ɨ¯éN®DæxÌ¢ilƵÄͬ³¢j
|
---|
187 | ÔÉC1©çA±µ½lªIDÔÆµÄ»ê¼êÌ^XNÉèÄçêéD
|
---|
188 | **************************************************************************
|
---|
189 |
|
---|
190 |
|
---|
191 | J[l\¬Eú»t@Cikernel_cfg.cj
|
---|
192 |
|
---|
193 | (1) Å趬ª
|
---|
194 |
|
---|
195 | kernel_cfg.cpÌwb_t@CÆID©®t¯Êt@CðCN[h
|
---|
196 | ·évvZbTfBNeBui#includej𶬷éDïÌIÉÍC
|
---|
197 | Ìs𶬷éD
|
---|
198 |
|
---|
199 | #include "kernel/kernel_int.h"
|
---|
200 | #include "kernel_cfg.h"
|
---|
201 |
|
---|
202 | (2) CN[hfBNeBui#includejÌ
|
---|
203 |
|
---|
204 | VXeRtBM
|
---|
205 | [Vt@CÉÜÜêéC¾êvvZbTÌC
|
---|
206 | N[hfBNeBui#includejƯêÌfBNeBui#includej
|
---|
207 | 𶬷éDá¦ÎC
|
---|
208 |
|
---|
209 | #include "sample1.h"
|
---|
210 |
|
---|
211 | Æ¢¤CN[hfBNeBuÉεÄC
|
---|
212 |
|
---|
213 | #include "sample1.h"
|
---|
214 |
|
---|
215 | Æ¢¤fBNeBu𶬷éD¶¬·éfBNeBuÌÍCVXe
|
---|
216 | RtBM
|
---|
217 | [Vt@CÅÌCN[hfBNeBuÌ
|
---|
218 | Éêv³¹éD
|
---|
219 |
|
---|
220 | (3) IuWFNgÌIDÔðÛ·éÏÌè`
|
---|
221 |
|
---|
222 | RtBM
|
---|
223 | [^ÉηéIvVwèi--external-idjÉæèCRtB
|
---|
224 | M
|
---|
225 | [^ÍÏ𶬷éDÏ¼Í ID Ôðèt¯½IuWFNg¼
|
---|
226 | ÌöÉ "_id" ðtÁµ½¼ÌÆ·éDÏÌ^ÍCconst®«ðtÁµ½ID^
|
---|
227 | ƵCÏÌlÍèt¯½IDÔÆ·éDá¦ÎCÌæ¤ÈLq𶬷éD
|
---|
228 |
|
---|
229 | const ID TASK1_id = 1;
|
---|
230 | const ID TASK2_id = 2;
|
---|
231 | const ID ALM1_id = 1;
|
---|
232 |
|
---|
233 | (4) g[XO}NÌftHgè`
|
---|
234 |
|
---|
235 | kernel_cfg.cÌÅgp·ég[XO}NÌftHgè`𶬷éD
|
---|
236 | ïÌIÉÍCÌs𶬷éD
|
---|
237 |
|
---|
238 | #ifndef LOG_ISR_ENTER
|
---|
239 | #define LOG_ISR_ENTER(intno)
|
---|
240 | #endif /* LOG_ISR_ENTER */
|
---|
241 |
|
---|
242 | #ifndef LOG_ISR_LEAVE
|
---|
243 | #define LOG_ISR_LEAVE(intno)
|
---|
244 | #endif /* LOG_ISR_LEAVE */
|
---|
245 |
|
---|
246 |
|
---|
247 | (5) eJ[lIuWFNgÉÖ·éè`
|
---|
248 |
|
---|
249 | VXeRtBM
|
---|
250 | [Vt@CÉCIuWFNg𶬷éÃI
|
---|
251 | APIuCRE_XXXvªÜÜêéeJ[lIuWFNgÉÖµÄCIuWFNg¶
|
---|
252 | ¬Ì½ßÌè`𶬷éD
|
---|
253 |
|
---|
254 | RtBM
|
---|
255 | [^ÍC¯¶íÞÌIuWFNg𶬷éÃIAPIðWßCe
|
---|
256 | IuWFNgÉIDÔðèt¯éDIDÔÍC¼ÌIuWFNgÌIDÔÆ
|
---|
257 | d¡ªÈCIDÔªA±·éæ¤Éèt¯éD
|
---|
258 |
|
---|
259 | RtBM
|
---|
260 | [^ÍCIuWFNgÉèt¯éIDÔðwè·é½ßÌ
|
---|
261 | IvVi--id-input-filejÀÑÉ IDÔðèt¯½IuWFNg̼O
|
---|
262 | ¨æÑèt¯½IDÔÌgðt@CÉoÍ·é½ßÌIvV
|
---|
263 | i--id-output-filejðÂDµ©µCSSPJ[lÅͱêçÌIvVÌ
|
---|
264 | gpð´¥ÆµÄ ***Ö~*** ·éiRÍãqjD
|
---|
265 |
|
---|
266 | **************************************************************************
|
---|
267 | yRz
|
---|
268 | SSPJ[lÌêCu^XNIDÌêÉÀèvRtBM
|
---|
269 | [^Í
|
---|
270 | --id-input-file Ìwèàeð³·éD»êÍCCRE_TSKÅwèµ½N®Dæ
|
---|
271 | xÌÝèlªDæ³êé½ßÅ éDܽC--id-output-file Åwèµ½t@C
|
---|
272 | ÖÌoÍàeà --id-input-file Åwèµ½^XNIDÌlª»ÌÜÜoͳê
|
---|
273 | éD»ÌoÍàeÍ kernel_cfg.h Öoͳêé^XNIDÌlÆÍ³ÖWÅ éD
|
---|
274 | ]ÁÄC¬ª¶¶é°êª 鱯©çCSSPJ[lÅÍ --id-input-file
|
---|
275 | ¨æÑ --id-output-file IvVðwèµÄÍÈçÈ¢D
|
---|
276 |
|
---|
277 | {ÈçÎC--kernel=ssp ¨æÑ --id-input-file ð¯Éwèµ½êÉ
|
---|
278 | RtBM
|
---|
279 | [VG[Ʒ׫ƱëÅ éDµ©µC±êçÌIvV
|
---|
280 | ÉηéÍSÄRtBM
|
---|
281 | [^àÅÀ{³êCev[gt@C
|
---|
282 | (kernel.tf)ÅÍ·é±ÆªÅ«È¢D»_ÅÍRtBM
|
---|
283 | [^ÌÎ
|
---|
284 | É¢ĢèÅ é½ßbèIÉ±Ìæ¤Èµ¢ÆµÄ¢éD
|
---|
285 | **************************************************************************
|
---|
286 |
|
---|
287 | eJ[lIuWFNgÉÖ·éè`ÌWIÈ\¬ÍCÌÊèÅ éDI
|
---|
288 | uWFNgÉæÁÄáOª éêÉÍCIuWFNgÌÅྷéD
|
---|
289 |
|
---|
290 | (a) ÅåÌIuWFNgIDÌÏÌè`
|
---|
291 |
|
---|
292 | ÅåÌIuWFNgIDðÂÏÌè`𶬷éDïÌIÉÍCIuWFN
|
---|
293 | gÌȪLðuXXX^xxxvÆ·éÆCÌæ¤Ès𶬷éD
|
---|
294 |
|
---|
295 | const ID _kernel_tmax_xxxid = (TMIN_XXXID + TNUM_XXXID - 1);
|
---|
296 |
|
---|
297 | (b) IuWFNgÉKvÈÌæÌè`
|
---|
298 |
|
---|
299 | IuWFNgÉæÁÄÍCIuWFNgÉKvÈÌæÌè`𶬷éD
|
---|
300 | ïÌIÉÍCIuWFNgÌÅྷéD
|
---|
301 |
|
---|
302 | (c) IuWFNgÌú»ubNÌè`
|
---|
303 |
|
---|
304 | IuWFNgÌú»ubNÌè`𶬷éDïÌIÉÍC
|
---|
305 | EIuWFNgÌȪLðuXXX^xxxv
|
---|
306 | E®«ÚÌf[^^ðuYYYv
|
---|
307 | E®«Ú̼Ìðuzzzv
|
---|
308 | Æ·éÆCIuWFNgÌ®«ÚÉÌæ¤Ès𶬷éD
|
---|
309 |
|
---|
310 | const YYY _kernel_xxxinib_zzz[TNUM_XXXID] = {
|
---|
311 | <IuWFNgIDª1ÌIuWFNgÉηé zzz Ìú»îñ>,
|
---|
312 | <IuWFNgIDª2ÌIuWFNgÉηé zzz Ìú»îñ>,
|
---|
313 | cc
|
---|
314 | <IuWFNgIDªTNUM_XXXIDÌIuWFNgÉηé zzz Ìú»îñ>,
|
---|
315 | };
|
---|
316 |
|
---|
317 | IuWFNgÌú»îñÌ`®ÍCIuWFNg¨æÑ®«ÚÉÙÈéD
|
---|
318 | ïÌIÉÍIuWFNgÌÅྷéD
|
---|
319 |
|
---|
320 | (d) IuWFNgÌRg[ubNÌè`
|
---|
321 |
|
---|
322 | IuWFNgÌRg[ubNÌè`𶬷éDïÌIÉÍC
|
---|
323 | EIuWFNgÌȪLðuXXX^xxxv
|
---|
324 | E®«ÚÌf[^^ðuYYYv
|
---|
325 | E®«Ú̼Ìðuzzzv
|
---|
326 | Æ·éÆCIuWFNgÌ®«ÚÉÌæ¤Ès𶬷éD
|
---|
327 |
|
---|
328 | YYY _kernel_xxxcb_zzz[TNUM_XXXID];
|
---|
329 |
|
---|
330 | IuWFNgÌRg[ubNÌ`®ÍCIuWFNg¨æÑ®«ÚÉÙÈéD
|
---|
331 | ïÌIÉÍIuWFNgÌÅྷéD
|
---|
332 |
|
---|
333 |
|
---|
334 | (5-1) ^XNÉÖ·éè`
|
---|
335 |
|
---|
336 | SSPJ[lÍC^XNªêÂàÈ¢P[XÉεĢȢ½ßC^XNÉÖ·é
|
---|
337 | è`ÍK¸¶¬µÈ¯êÎÈçÈ¢D
|
---|
338 |
|
---|
339 | ^XNÌȪLÍuTSKvutskvÅ éD
|
---|
340 | ½¾µC^XNú»ubNÌÏ¼Í _kernel_tinib_<®«Ú¼> Å éD
|
---|
341 | iuTSK^tskvÉã¦ÄuT^tvðp¢Ä¢éjD
|
---|
342 | ^XNRg[ubNͶݵȢD
|
---|
343 |
|
---|
344 | ^XNú»ubNÉÍCuCRE_TSKvÃIAPIÅwè³êéîñÉÁ¦ÄC
|
---|
345 | uDEF_EPRvÃIAPIÅwè³êéîñðÜßéD
|
---|
346 |
|
---|
347 | ȺÅÍCVXeRtBM
|
---|
348 | [Vt@CÉÌÃIAPIªÜÜêÄ
|
---|
349 | ¢éɶ¬·×«îñÉ¢Äq×éD
|
---|
350 |
|
---|
351 | CRE_TSK(tskid, { tskatr, exinf, task, itskpri, stksz, stk });
|
---|
352 | DEF_EPR(tskid, { exepri });
|
---|
353 |
|
---|
354 | ¦ È~Ìú»îñÌzñÉi[³êéÍCN®DæxÌ¢ÆÈéD
|
---|
355 | ¦ ȺÈçC^XNID ªN®DæxÌ¢ÔÅèÄçêé©çÅ éD
|
---|
356 |
|
---|
357 | (5-1-1) ^XNÌú»îñi^XN®«j
|
---|
358 |
|
---|
359 | ^XN®«Ìú»îñÍCÌ`®Æ·éD
|
---|
360 |
|
---|
361 | const ATR _kernel_tinib_tskatr[TNUM_TSKID] = {(tskatr)};
|
---|
362 |
|
---|
363 | (5-1-2) ^XNÌú»îñig£îñj
|
---|
364 |
|
---|
365 | ^XNÌg£îñÌú»îñÍCÌ`®Æ·éD
|
---|
366 |
|
---|
367 | const intptr_t _kernel_tinib_exinf[TNUM_TSKID] = {(intptr_t)(exinf)};
|
---|
368 |
|
---|
369 | (5-1-3) ^XNÌú»îñiN®Ônj
|
---|
370 |
|
---|
371 | ^XNÌN®ÔnÌú»îñÍCÌ`®Æ·éD
|
---|
372 |
|
---|
373 | const TASK _kernel_tinib_task[TNUM_TSKID] = {(task)};
|
---|
374 |
|
---|
375 | (5-1-4) ^XNÌú»îñiÀsDæxj
|
---|
376 |
|
---|
377 | ^XNÌÀsDæxÌú»îñÍCÌ`®Æ·éD
|
---|
378 | iÀÛÉÍüs³ê¸C1sÅoͳêéj
|
---|
379 |
|
---|
380 | const TASK _kernel_tinib_epriority[TNUM_TSKID] = {
|
---|
381 | INT_PRIORITY(ÀsDæx)};
|
---|
382 |
|
---|
383 | ÀsDæxÌlÍ CRE_TSK ÌN®Dæx(itskpri) ¨æÑ
|
---|
384 | DEF_EPR ÌÀsDæx(exepri) ÌÝèlð³ÉZo³êéD
|
---|
385 | Zoû@É¢ÄÍ(5-1-6)Éãq·éD
|
---|
386 |
|
---|
387 | (5-1-5) ready_primap ÌúlÌè`
|
---|
388 |
|
---|
389 | ^XNÉεÄÍCrbg}bv ready_primap Ìúlîñ𶬷éD
|
---|
390 | ^XN®«ÌÝèl©çêÓÉèß鱯ªÅ«é©çÅ éD
|
---|
391 |
|
---|
392 | ïÌIÉÍÈºÌæ¤Èè`𶬷éD
|
---|
393 |
|
---|
394 | const uint_t _kernel_init_rdypri = <ready_primapÌúl>;
|
---|
395 |
|
---|
396 | ±±Å ready_primap ÌúlÍC^XN®«(tskatr)Ìl©çZo³êéD
|
---|
397 |
|
---|
398 | Ï _kernel_init_rdypri ÌerbgÍ»ê¼êÌ^XNÉηéD
|
---|
399 | ^XNIDª1Ì^XNÍźÊrbg(LSB)ÉÎïçêĨèC
|
---|
400 | ^XNIDÌlª1¦éÉ1ÂÊÌrbgª»ê¼êÎïçêéD
|
---|
401 | á¦ÎC^XNIDª4Ì^XNÍźʩç¦Ä4ÔÚÌrbgªÎ·éD
|
---|
402 |
|
---|
403 | ^XN®«ÆµÄ TA_ACT ðÂ^XNÍC»Ì^XNÉηérbgª
|
---|
404 | 1ÉÈéDTA_ACT ð½È¢êÍηérbgª0ÉÈéD
|
---|
405 |
|
---|
406 | (5-1-6) DæxÌ\»
|
---|
407 |
|
---|
408 | DæxÌlÍCRtBM
|
---|
409 | [Vt@CÌ CRE_TSK yÑ DEF_EPR ÉÄ
|
---|
410 | wèµ½lð³ÉCRtBM
|
---|
411 | [^ª©®IÉèÄéD
|
---|
412 | lÌÍÍÍ TMIN_TPRI(=1) ©ç TMAX_TPRI ÌÍÍÌlðÆéD
|
---|
413 |
|
---|
414 | ܽCRtBM
|
---|
415 | [^ÉæèèÄçêéDæxÌlÆÍÊÉCø¦Ì
|
---|
416 | Ï_©çvOÅgp³êéDæxÌà\»ª éD
|
---|
417 | à\»ÌlÍ 0 ©ç (TMAX_TPRI-TMIN_TPRI) ÌÍÍÌlðÆéD
|
---|
418 | DæxÆ»Ìà\»ÆÌÔÉÍ (à\» = Dæx - TMIN_TPRI)ÌÖWª éD
|
---|
419 |
|
---|
420 | ^XNÌN®DæxÍCCRE_TSK Åwèµ½N®DæxÌ¢ÉilƵÄÍ
|
---|
421 | ¬³¢ÉjCTMIN_TPRI(=1) ©çͶÜéA±µ½lªèÄçêéD
|
---|
422 | ÂÜèC^XNÌN®DæxÌlÍ^XNID ɵ¢D
|
---|
423 |
|
---|
424 | ^XNÌÀsDæxÌlÍCȺÌû@ÅZo³êéD
|
---|
425 |
|
---|
426 | iPjY^XNÉε DEF_EPR ÅÀsDæxðè`µÈ¢ê
|
---|
427 |
|
---|
428 | Y^XNÉε DEF_EPR ÅÀsDæxðè`µÈ¢êC
|
---|
429 | N®DæxÌlƯ¶lðÀsDæxÌlÆ·éD
|
---|
430 |
|
---|
431 | iQjY^XNÉε DEF_EPR ÅÀsDæxðè`·éê
|
---|
432 |
|
---|
433 | Y^XNÉε DEF_EPR ÅÀsDæxðè`µ½êC
|
---|
434 | DEF_EPR Åwèµ½ÀsDæxÌÝèlCÀÑÉCSÄÌ^XNÉηé
|
---|
435 | N®DæxÌÝèl¨æÑRtBM
|
---|
436 | [VÊÆµÄ¾çêéN®Dæx
|
---|
437 | ÌlðàÆÉCÀsDæxÌlðZo·éD
|
---|
438 |
|
---|
439 | ÀsDæxÌlðZo·éû@ÍCuÀsÌ^XNªvGvg³êé/³êÈ¢v
|
---|
440 | Æ¢¤ÖWªÛ¶³êéÍÍÅKØÈlªZo³ê鱯ðÓ}µ½àÌÅC
|
---|
441 | ïÌIÈèÍÌæ¤ÉÈéD
|
---|
442 |
|
---|
443 | yÀsDæxÌZoè ¦±êðSÄÌ^XNÉεÄs¤z
|
---|
444 |
|
---|
445 | (1) é^XNðIÔ(T1Æ·é)
|
---|
446 | (2) T1 ÌÀsDæxÌÝèlƯ¶CܽÍC»êæèàá¢(lƵÄÍ
|
---|
447 | å«¢)N®DæxÌÝèlðÂ^XNÌWÌÅCN®DæxÌ
|
---|
448 | ÝèlªÅà¢ilƵÄÍÅଳ¢j^XNðT·(T2)
|
---|
449 | (3) T2 ÌN®DæxÌlð T1 ÌÀsDæxÌlÆ·éD
|
---|
450 |
|
---|
451 | áj
|
---|
452 | CRE_TSK(TASK1, { TA_NULL, 1, task1, 2, 10, NULL });
|
---|
453 | CRE_TSK(TASK2, { TA_NULL, 3, task2, 6, 30, NULL });
|
---|
454 | CRE_TSK(TASK3, { TA_NULL, 5, task3, 4, 50, NULL });
|
---|
455 | CRE_TSK(TASK4, { TA_ACT, 7, task4, 8, 100, NULL });
|
---|
456 |
|
---|
457 | DEF_IPR(TASK1, { 1 } );
|
---|
458 | DEF_IPR(TASK2, { 5 } );
|
---|
459 | DEF_IPR(TASK3, { 3 } );
|
---|
460 | DEF_IPR(TASK4, { 4 } );
|
---|
461 |
|
---|
462 | ÊÍÌæ¤ÉÈéF
|
---|
463 |
|
---|
464 | yN®Dæxz
|
---|
465 | TASK1FÝèl=2 ¨ (èÄçêé)N®Dæx=1
|
---|
466 | TASK2FÝèl=6 ¨ (èÄçêé)N®Dæx=3
|
---|
467 | TASK3FÝèl=4 ¨ (èÄçêé)N®Dæx=2
|
---|
468 | TASK4FÝèl=8 ¨ (èÄçêé)N®Dæx=4
|
---|
469 |
|
---|
470 | N®DæxÌ¢ÉÀÑÖ¦éÆ
|
---|
471 | TASK1FÝèl=2 ¨ N®Dæx=1
|
---|
472 | TASK3FÝèl=4 ¨ N®Dæx=2
|
---|
473 | TASK2FÝèl=6 ¨ N®Dæx=3
|
---|
474 | TASK4FÝèl=8 ¨ N®Dæx=4
|
---|
475 |
|
---|
476 | yÀsDæxz
|
---|
477 | TASK1FÝèl=1
|
---|
478 | TASK3FÝèl=3
|
---|
479 | TASK2FÝèl=5
|
---|
480 | TASK4FÝèl=4
|
---|
481 |
|
---|
482 | E½ßµÉ TASK4 ÌêÌÀsDæxÌlðZoµÄÝéD
|
---|
483 | ETASK4 ÌÀsDæxÌÝèl(4)Ư¶Ü½Í»êæèàá¢N®
|
---|
484 | @DæxÌÝèlðàÂ^XNÌW = {TASK2,TASK3,TASK4}
|
---|
485 | EãL^XNÌWÌÅÅàN®DæxÌÝèlª¢àÌ = TASK3
|
---|
486 | EãL^XNÌN®DæxÌl = 2
|
---|
487 | E]ÁÄTASK4 ÌÀsDæxÌlÍ 2
|
---|
488 |
|
---|
489 | E¯lÉCTASK3 ÌêÍD
|
---|
490 | ETASK3 ÌÀsDæxÌÝèl(3)Ư¶Ü½Í»êæèàá¢N®
|
---|
491 | @DæxÌÝèlðàÂ^XNÌW = {TASK2,TASK3,TASK4}
|
---|
492 | EãL^XNÌWÌÅÅàN®DæxÌÝèlª¢àÌ = TASK3
|
---|
493 | EãL^XNÌN®DæxÌl = 2
|
---|
494 | E]ÁÄTASK3 ÌÀsDæxÌlÍ 2
|
---|
495 |
|
---|
496 | ÀsDæxÉηéú»îñÌ kernel_cfg.c ÖÌÊÍÌæ¤ÉÈéD
|
---|
497 | ÀÛÍ1sÅ\»³êéDܽCzñÖÌi[Í TASK1, TASK3, TASK2,
|
---|
498 | TASK4 ÌÅi[³ê鱯ÉÓ·éD
|
---|
499 | ¿ÈÝÉCINT_PRIORITY }NÍDæxÌlð»Ìà\»ÉÏ··é}NÅ
|
---|
500 | èCtask.h Åè`³êÄ¢éD
|
---|
501 |
|
---|
502 | const uint_t _kernel_tinib_epriority[TNUM_TSKID] =
|
---|
503 | {INT_PRIORITY(1),INT_PRIORITY(2),INT_PRIORITY(3),INT_PRIORITY(2)};
|
---|
504 |
|
---|
505 | (5-1-7) X^bNÌæÝè
|
---|
506 |
|
---|
507 | SSPJ[lÅÍC^XNðÜÞSÄÌPʪ¯¶X^bNÌæð¤p·é
|
---|
508 | æ¤ÉÝv³êÄ¢éD
|
---|
509 | ¤p³êéX^bNÌæÌ±Æðu¤LX^bNÌævÆÄÔD
|
---|
510 | ¤LX^bNÌæÌè`Í DEF_STK ðp¢Äs¤DÚµÍ(9)ðQÆÌ±ÆD
|
---|
511 |
|
---|
512 | RtBM
|
---|
513 | [^ͤLX^bNÌæÌÝmÛµC^XNReLXgêpÌ
|
---|
514 | X^bNÌæÍm۵ȢD
|
---|
515 | ±Ì½ßCCRE_TSK ÅÍæªÔn stk ÆµÄ NULL ÌÝó¯t¯éD
|
---|
516 | NULL ÈOÌlðwèµ½êCG[ÆÈéD
|
---|
517 |
|
---|
518 | ܽCCRE_TSK Åwè·é^XNÌX^bNTCY stksz ÌlÍC
|
---|
519 | DEF_STK ðp¢È¢êÉͤLX^bNÌæÌTCYðè·é½ßÉp¢çêC
|
---|
520 | DEF_STK ðp¢éêÉÍ DEF_STK Åwèµ½¤LX^bNÌæÌTCYð
|
---|
521 | `FbN·é½ßÉp¢çêéD¦ (9-4) àQÆÌ±ÆD
|
---|
522 |
|
---|
523 | S^XNÉæéX^bNgpÊiÌèljÍCCRE_TSK Åwè·é
|
---|
524 | X^bNTCY stksz, ¨æÑN®Dæx itskpriCÈçÑÉ DEF_EPR Å
|
---|
525 | wè·éÀsDæx exepri ©çZo³êéDZoèÉ¢ÄÍßÅྷéD
|
---|
526 |
|
---|
527 | (5-1-8) S^XNÉæéX^bNgpÊÌZoû@
|
---|
528 |
|
---|
529 | S^XNÌX^bNgpÊÉηévZÌî{IÈl¦ûÍC»ê¼êÌDæx²ÆÉC
|
---|
530 | ¯¶DæxðàÂ^XNÌÅÅàX^bNgpʪ嫢àÌðIÑC»êçÌ
|
---|
531 | X^bNgpÊð·×ÄÁZµ½àÌÆl¦é±ÆÅ éDÀÛÉÍvOÉæè
|
---|
532 | »êæèÈÈéP[Xà¶Ýµ¾éªC»ÝÌÀÅÍl¦ûðP»µÄ¢éD
|
---|
533 |
|
---|
534 | SSPJ[lÌdlÅÍCÐÆÂÌN®DæxÉ«o^Â\È^XNÍ
|
---|
535 | XêÂÅ éD»Ì½ßCDEF_EPR ÉæèÀsDæxðÝèµÈ¢êC
|
---|
536 | ·Èí¿CSÄÌ^XNÌÀsDæxª»ê¼êÌN®Dæxɵ¢
|
---|
537 | êCe^XNÌX^bNgpÊðPÉÁZµ½à̪CS^XNÉæé
|
---|
538 | X^bNgpÊÆÈéD
|
---|
539 |
|
---|
540 | »êÉεCDEF_EPR ðp¢ÄÁèÌ^XNÉηéÀsDæxðwèµC
|
---|
541 | Y^XNÀsÌDæxðø«ã°éæ¤ÉÝèµ½êC{ÈçÎv
|
---|
542 | Gvg³êé͸Ìà̪³êÈÈéP[Xª¶¶CÊÆµÄS^XNÌ
|
---|
543 | X^bNgpÊðÈÅ«éêª éD
|
---|
544 |
|
---|
545 | ÀsDæxðl¶µ½uS^XNÉæéX^bNgpÊvÌZoèÍ
|
---|
546 | Ìæ¤ÉÈéi¦j
|
---|
547 | (a) é^XN©çÀsJnµC¼ÌÇÌæ¤È^XNÉvGvg³êé©C
|
---|
548 | »µÄÊIÉǤ¢¤vOÌÀsoHª¶Ýµ¾é©ðSÄñ·éD
|
---|
549 | (b) »ê¼êÌêÌuS^XNÉæéX^bNgpÊvðßéD
|
---|
550 | (c) ß½lÌÌÅålðIÔD
|
---|
551 |
|
---|
552 | ¦ ÀÅÍCsvÈÌȪàsÁÄ¢éªC±±ÅÍî{IÈl¦û
|
---|
553 | ÌÝð¦·D
|
---|
554 |
|
---|
555 | ZoèðïÌIÈáðp¢ÄྷéD
|
---|
556 | áÆµÄæÌ (5-1-6) Ìáðp¢éD
|
---|
557 | ºÌè (a), (b), (c) Íãɰ½eÚÉεĢéD
|
---|
558 |
|
---|
559 | CRE_TSK(TASK1, { TA_NULL, 1, task1, 2, 10, NULL });
|
---|
560 | CRE_TSK(TASK2, { TA_NULL, 3, task2, 6, 30, NULL });
|
---|
561 | CRE_TSK(TASK3, { TA_NULL, 5, task3, 4, 50, NULL });
|
---|
562 | CRE_TSK(TASK4, { TA_ACT, 7, task4, 8, 100, NULL });
|
---|
563 |
|
---|
564 | DEF_IPR(TASK1, { 1 } );
|
---|
565 | DEF_IPR(TASK2, { 5 } );
|
---|
566 | DEF_IPR(TASK3, { 3 } );
|
---|
567 | DEF_IPR(TASK4, { 4 } );
|
---|
568 |
|
---|
569 | (a) é^XN(TASKn, n = 1,2,3,4)ðIð·é.
|
---|
570 | TASKn ÌÀsDæxæèà¢N®Dæx(lƵÄͬ³¢)ðàÂ
|
---|
571 | ^XNÌWðT·D
|
---|
572 | »µÄuvGvg³êé^XN¨vGvg·é^XNvÌgðñ·éD
|
---|
573 |
|
---|
574 | ETASK1 É
|
---|
575 | Ú·éÆC±êðvGvgÂ\È^XNͶݵȢD
|
---|
576 | ETASK2 É
|
---|
577 | Ú·éÆCÀsÍDæx 5 ÉÈèC±êðvGvgÂ\È
|
---|
578 | @^XNÍ TASK1 ¨æÑ TASK3D
|
---|
579 | ETASK3 É
|
---|
580 | Ú·éÆCÀsÍDæx 3 ÉÈèC±êðvGvgÂ\È
|
---|
581 | @^XNÍ TASK1 ¾¯D
|
---|
582 | ETASK4 É
|
---|
583 | Ú·éÆCÀsÍDæx 4 ÉÈèC±êðvGvgÂ\È
|
---|
584 | @^XNÍ TASK1 ¾¯D
|
---|
585 |
|
---|
586 | µ½ªÁı±ÅÍCÌgª¾çêéD
|
---|
587 | TASK2 ¨ TASK1
|
---|
588 | TASK2 ¨ TASK3
|
---|
589 | TASK3 ¨ TASK1
|
---|
590 | TASK4 ¨ TASK1
|
---|
591 |
|
---|
592 | SvGvg³êÈ¢P[XC¨æÑCvGvgµ½^XNª³çÉ
|
---|
593 | ÊÌ^XNÉvGvg³êéP[XÜÅl¶·éÆCÊIÉvOÌ
|
---|
594 | ÀsoHÍÌæ¤ÉÈéÆl¦çêéD
|
---|
595 |
|
---|
596 | ETASK1 ©çnÜéP[XF
|
---|
597 | TASK1 (vGvg³ê¸ÉI¹)
|
---|
598 |
|
---|
599 | ETASK2 ©çnÜéP[XF
|
---|
600 | TASK2
|
---|
601 | TASK2 ¨ TASK1 (TASK2©çÀsJnµÄCTASK1ÉvGvg³ê½)
|
---|
602 | TASK2 ¨ TASK3
|
---|
603 | TASK2 ¨ TASK3 ¨ TASK1
|
---|
604 |
|
---|
605 | ETASK3 ©çnÜéP[XF
|
---|
606 | TASK3
|
---|
607 | TASK3 ¨ TASK1
|
---|
608 |
|
---|
609 | ETASK4 ©çnÜéP[XF
|
---|
610 | TASK4
|
---|
611 | TASK4 ¨ TASK1
|
---|
612 |
|
---|
613 | (b) »ê¼êÌP[XÅX^bNgpÊðvZ·éD
|
---|
614 |
|
---|
615 | ETASK1 ©çnÜéP[XF
|
---|
616 | TASK1F10
|
---|
617 |
|
---|
618 | ETASK2 ©çnÜéP[XF
|
---|
619 | TASK2F30
|
---|
620 | TASK2 ¨ TASK1F30+10
|
---|
621 | TASK2 ¨ TASK3F30+50
|
---|
622 | TASK2 ¨ TASK3 ¨ TASK1F30+50+10
|
---|
623 |
|
---|
624 | ETASK3 ©çnÜéP[XF
|
---|
625 | TASK3F50
|
---|
626 | TASK3 ¨ TASK1F50+10
|
---|
627 |
|
---|
628 | ETASK4 ©çnÜéP[XF
|
---|
629 | TASK4F100
|
---|
630 | TASK4 ¨ TASK1F100+10
|
---|
631 |
|
---|
632 | (c) Åàlªå«ÈéoHðIÔD
|
---|
633 |
|
---|
634 | ±±ÅÍ TASK4 ¨ TASK1 ÌêªÅåÅC©ÏàèlÍ 110
|
---|
635 |
|
---|
636 |
|
---|
637 | (5-1-9) S^XNÉæéX^bNgpÊÌè`
|
---|
638 |
|
---|
639 | RtBM
|
---|
640 | [^ÍCS^XNÉæéX^bNgpÊÌ©Ïàèßöð
|
---|
641 | kernel_cfg.c ÉRgƵÄoÍ·éD
|
---|
642 |
|
---|
643 | /*
|
---|
644 | * Task Stack Size Estimation:
|
---|
645 | *
|
---|
646 | i±±ÉZoÌßöªoͳêéj
|
---|
647 | */
|
---|
648 |
|
---|
649 | »µÄCÌæ¤Ès𶬷éD
|
---|
650 |
|
---|
651 | #define TOPPERS_TSTKSZ <S^XNÉæéX^bNgpÊÌvZl>
|
---|
652 |
|
---|
653 |
|
---|
654 | (5-1-10) G[ð
|
---|
655 |
|
---|
656 | ^XNÉÖ·éG[ðÍÌÊèÅ éD
|
---|
657 |
|
---|
658 | RtBM
|
---|
659 | [^{̪o·éàÌ
|
---|
660 | E^XNªêÂà¶ÝµÈ¢êD
|
---|
661 | E¯¶tskidÉηéCRE_TSKª¡ éêiE_OBJj
|
---|
662 | EDEF_EPRÉηéCRE_TSKªÈ¢êiE_NOEXSj
|
---|
663 | E¯¶tskidÉηéDEF_EPRª¡ éêiE_OBJj
|
---|
664 |
|
---|
665 | pX2Åo·éàÌ
|
---|
666 | Etskatrªi[[TA_ACT]|[TA_RSTR]jÅÈ¢êiE_RSATRj
|
---|
667 | ¦ ^[Qbg˶Å^XN®«ðÇÁÂiTARGET_TSKATRj
|
---|
668 | E(TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
|
---|
669 | E¯¶ itskpri Éηé CRE_TSK ª¡ éê (E_PAR)
|
---|
670 | Estkszª0©C^[Qbgè`ÌŬliTARGET_MIN_STKSZjæèଳ¢ê
|
---|
671 | @iE_PARj
|
---|
672 | Estk ª NULL ÅÈ¢êiE_PARj
|
---|
673 | E(TMIN_TPRI <= exepri && exepri <= TMAX_TPRI) ÅÈ¢êFE_PAR G[
|
---|
674 | E(itskpri < exepri && exepri <= TMAX_TPRI) Å éêFE_ILUSEG[
|
---|
675 |
|
---|
676 | pX3Åo·éàÌ
|
---|
677 | Etask ªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
678 | - ^[Qbg˶ÌliCHECK_FUNC_ALIGNjÌ{ÅÈ¢ê
|
---|
679 | - NULLÌêi^[Qbg˶CCHECK_FUNC_NONNULLj
|
---|
680 |
|
---|
681 |
|
---|
682 | (5-2) CxgtOÉÖ·éè`
|
---|
683 |
|
---|
684 | CxgtOÌȪLÍuFLG^flgvÅ éDȺÅÍCVXeRtB
|
---|
685 | M
|
---|
686 | [Vt@CÉÌÃIAPIªÜÜêÄ¢éɶ¬·×«îñÉÂ
|
---|
687 | ¢Äq×éD
|
---|
688 |
|
---|
689 | CRE_FLG(flgid, { flgatr, iflgptn });
|
---|
690 |
|
---|
691 | (5-2-1) CxgtOÌú»îñiCxgtO®«j
|
---|
692 |
|
---|
693 | CxgtOÌ®«îñÌú»îñÍCÌ`®Æ·éD
|
---|
694 |
|
---|
695 | const ATR _kernel_flginib_atr[TNUM_FLGID] = {(flgatr)};
|
---|
696 |
|
---|
697 | (5-2-2) CxgtOÌú»îñitOp^[úlj
|
---|
698 |
|
---|
699 | CxgtOÌtOp^[Ìú»îñÍCÌ`®Æ·éD
|
---|
700 |
|
---|
701 | const FLGPTN _kernel_flginib_iflgptn[TNUM_FLGID] = {(iflgptn)};
|
---|
702 |
|
---|
703 | (5-2-3) CxgtOÌtOp^[
|
---|
704 |
|
---|
705 | CxgtOÌtOp^[ði[·ézñÍCȺÌ`®Æ·éD
|
---|
706 |
|
---|
707 | FLGPTN _kernel_flgcb_flgptn[TNUM_FLGID];
|
---|
708 |
|
---|
709 | (5-2-4) G[ð
|
---|
710 |
|
---|
711 | CxgtOÉÖ·éG[ðÍÌÊèÅ éD
|
---|
712 |
|
---|
713 | RtBM
|
---|
714 | [^{̪o·éàÌ
|
---|
715 | E¯¶flgidÉηéCRE_FLGª¡ éêiE_OBJj
|
---|
716 |
|
---|
717 | pX2Åo·éàÌ
|
---|
718 | Etskatrªi[[TA_CLR]|[TA_NULL]jÅÈ¢êiE_RSATRj
|
---|
719 | ¦ TA_CLR Æ TA_NULL ð¯Éwèµ½êCTA_CLR ÌÝðwèµ½êÆ¯lÉUé¤
|
---|
720 | Eiflgptn ªFLGPTN Éi[ūȢ(iflgptnÌlªFLGPTN^ÌÅålæèàå«¢)êiE_PARj
|
---|
721 |
|
---|
722 |
|
---|
723 | (5-3) f[^L
|
---|
724 | [ÉÖ·éè`
|
---|
725 |
|
---|
726 | f[^L
|
---|
727 | [ÌȪLÍuDTQ^dtqvÅ éDȺÅÍCVXeRtBM
|
---|
728 |
|
---|
729 | [Vt@CÉÌÃIAPIªÜÜêÄ¢éɶ¬·×«îñÉ¢Ä
|
---|
730 | q×éD
|
---|
731 |
|
---|
732 | CRE_DTQ(dtqid, { dtqatr, dtqcnt, dtqmb });
|
---|
733 |
|
---|
734 | (5-3-1) f[^L
|
---|
735 | [ÉKvÈÌæÌè`
|
---|
736 |
|
---|
737 | f[^L
|
---|
738 | [ÉKvÈÌæÆµÄCf[^L
|
---|
739 | [ÇÌæª éD¶¬
|
---|
740 | ·éf[^L
|
---|
741 | [ÉCKvÈTCYÌf[^L
|
---|
742 | [ÇÌæðè`·éDï
|
---|
743 | ÌIÉÍCãLÌÃIAPIÉεÄCÌè`𶬷éD
|
---|
744 |
|
---|
745 | dtqcntª0ÅÈ¢êÌݶ¬
|
---|
746 | static intptr_t _kernel_dtqmb_<f[^L
|
---|
747 | [¼>[dtqcnt];
|
---|
748 |
|
---|
749 | (5-3-2) f[^L
|
---|
750 | [Ìú»îñ(f[^L
|
---|
751 | [®«)
|
---|
752 |
|
---|
753 | f[^L
|
---|
754 | [Ì®«îñÌú»îñÍCÌ`®Æ·éD
|
---|
755 |
|
---|
756 | const ATR _kernel_dtqinib_atr[TNUM_DTQID] = {(dtqatr)};
|
---|
757 |
|
---|
758 | (5-3-3) f[^L
|
---|
759 | [Ìú»îñ(f[^L
|
---|
760 | [ÇÌæ)
|
---|
761 |
|
---|
762 | f[^L
|
---|
763 | [Ìf[^L
|
---|
764 | [ÇÌæÌú»îñÍCÌ`®Æ·éD
|
---|
765 |
|
---|
766 | intptr_t * const _kernel_dtqinib_data[TNUM_DTQID] = {(_kernel_dtqmb_<f[^L
|
---|
767 | [¼>)};
|
---|
768 |
|
---|
769 | ¦ SSPJ[lÅÍÒ¿óÔðT|[gµÈ¢½ßC¯úÄoµªÀ»Å«È¢D
|
---|
770 | @»Ì½ß dtqcnt ª 0 ÌêCRtBM
|
---|
771 | [VG[(E_PAR)ÆÈéD
|
---|
772 |
|
---|
773 | (5-3-4) f[^L
|
---|
774 | [Ìú»îñ(f[^L
|
---|
775 | [ÌTCY)
|
---|
776 |
|
---|
777 | f[^L
|
---|
778 | [ÌTCYÌú»îñÍCÌ`®Æ·éD
|
---|
779 |
|
---|
780 | const uint8_t _kernel_dtqinib_size[TNUM_DTQID] = {(dtqcnt)};
|
---|
781 |
|
---|
782 | (5-3-5) f[^L
|
---|
783 | [Éi[³êÄ¢évf
|
---|
784 |
|
---|
785 | f[^L
|
---|
786 | [Éi[³êÄ¢évfÌzñÍCÌ`®Æ·éD
|
---|
787 |
|
---|
788 | uint8_t _kernel_dtqcb_count[TNUM_DTQID];
|
---|
789 |
|
---|
790 | (5-3-6) f[^L
|
---|
791 | [ÌæªEövf
|
---|
792 |
|
---|
793 | f[^L
|
---|
794 | [Éi[³êÄ¢éæªvfEövfði[·ézñÍCÌ`®Æ·éD
|
---|
795 |
|
---|
796 | uint8_t _kernel_dtqcb_head[TNUM_DTQID];
|
---|
797 | uint8_t _kernel_dtqcb_tail[TNUM_DTQID];
|
---|
798 |
|
---|
799 | (5-3-7) G[ð
|
---|
800 |
|
---|
801 | f[^L
|
---|
802 | [ÉÖ·éG[ðÍÌÊèÅ éD
|
---|
803 |
|
---|
804 | RtBM
|
---|
805 | [^{̪o·éàÌ
|
---|
806 | E¯¶dtqidÉηéCRE_DTQª¡ éêiE_OBJj
|
---|
807 |
|
---|
808 | pX2Åo·éàÌ
|
---|
809 | EdtqatrªimTA_NULLnjÅÈ¢êiE_RSATRj
|
---|
810 | Edtqcntª 0 Ìê (E_PAR)
|
---|
811 | Edtqmb ª NULL ÅÈ¢êiE_NOSPTj
|
---|
812 |
|
---|
813 |
|
---|
814 | (5-4) üúnhÉÖ·éè`
|
---|
815 |
|
---|
816 | üúnhÌȪLÍuCYC^cycvÅ éDȺÅÍCVXeRtB
|
---|
817 | M
|
---|
818 | [Vt@CÉÌÃIAPIªÜÜêÄ¢éɶ¬·×«îñÉÂ
|
---|
819 | ¢Äq×éD
|
---|
820 |
|
---|
821 | CRE_CYC(cycid, { cycatr, exinf, cychdr, cyctim, cycphs });
|
---|
822 |
|
---|
823 | (5-4-1) üúnhÌú»îñig£îñj
|
---|
824 |
|
---|
825 | üúnhÌg£îñÌú»îñÍCÌ`®Æ·éD
|
---|
826 |
|
---|
827 | const intptr_t _kernel_cycinib_exinf[TNUM_CYCID] = {(intptr_t)(exinf)};
|
---|
828 |
|
---|
829 | (5-4-2) üúnhÌú»îñiN®Ônj
|
---|
830 |
|
---|
831 | üúnhÌAhXÌú»îñÍCÌ`®Æ·éD
|
---|
832 |
|
---|
833 | const CYCHDR _kernel_cycinib_cychdr[TNUM_CYCID] = {(cycdhr)};
|
---|
834 |
|
---|
835 | (5-4-3) üúnhÌú»îñiN®üúj
|
---|
836 |
|
---|
837 | üúnhÌN®üúÌú»îñÍCÌ`®Æ·éD
|
---|
838 |
|
---|
839 | const RELTIM _kernel_cycinib_cyctim[TNUM_CYCID] = {(cyctim)};
|
---|
840 |
|
---|
841 | (5-4-4) üúnhÌú»îñiÊj
|
---|
842 |
|
---|
843 | üúnhÌÊÌú»îñÍCÌ`®Æ·éD
|
---|
844 |
|
---|
845 | const RELTIM _kernel_cycinib_cycphs[TNUM_CYCID] = {(cycphs)};
|
---|
846 |
|
---|
847 | (5-4-5) üúnhÌ®ìóÔ
|
---|
848 |
|
---|
849 | üúnhÌ®ìóÔði[·éÏÍCÌ`®Æ·éD
|
---|
850 |
|
---|
851 | uint_t _kernel_cyccb_cycact;
|
---|
852 |
|
---|
853 | Ï _kernel_cyccb_cycact ÌerbgÍ»ê¼êÌüúnhÉηéD
|
---|
854 | üúnhIDª1Ì^XNÍźÊrbg(LSB)ÉÎïçêĨèC
|
---|
855 | IDÌlª1¦éÉ1ÂÊÌrbgª»ê¼êÎïçêéD
|
---|
856 | á¦ÎCnhIDª4ÌüúnhÍźʩç¦Ä4ÔÚÌrbgª
|
---|
857 | ηéD
|
---|
858 |
|
---|
859 | ®ìµÄ¢éóÔÌüúnhÍC»ÌüúnhÉηérbgª
|
---|
860 | 1ÆÈéD®ìµÄ¢È¢óÔÌüúnhÍηérbgª0ÉÈéD
|
---|
861 |
|
---|
862 | (5-4-6) üúnhÌñN®Ìè`
|
---|
863 |
|
---|
864 | üúnhÌñN®ði[·éÏÍCÌ`®Æ·éD
|
---|
865 |
|
---|
866 | EVTTIM _kernel_cyccb_evttim[TNUM_CYCID];
|
---|
867 |
|
---|
868 | (5-4-7) ^CCxgL
|
---|
869 | [ÌÌItZbgîñÌè`
|
---|
870 |
|
---|
871 | ^CCxgL
|
---|
872 | [ÌÅüúnhpÉèÄçê½ÌæÌæªÊuð
|
---|
873 | ¦·îñðÏÉÛ·éD^CCxgL
|
---|
874 | [ÍzñÅ\»³êĨèC
|
---|
875 | æªÊuÍzñÌæª©çÌItZbgiÂÜèzñÌCfbNXjƵÄ
|
---|
876 | \»³êéDüúnhÉεÄÍ^CCxgL
|
---|
877 | [zñÌæª©çè
|
---|
878 | Äçêé½ßC±ÌlÍíÉ 0 ÆÈéD]ÁÄÏè`ÍCÌ`®ÆÈéD
|
---|
879 |
|
---|
880 | const uint_t _kernel_cycevtid_offset = 0;
|
---|
881 |
|
---|
882 | ^CCxgL
|
---|
883 | [É¢ÄÍ(9-3)ðQÆÌ±ÆD
|
---|
884 |
|
---|
885 | (5-4-8) G[ð
|
---|
886 |
|
---|
887 | üúnhÉÖ·éG[ðÍÌÊèÅ éD
|
---|
888 |
|
---|
889 | RtBM
|
---|
890 | [^{̪o·éàÌ
|
---|
891 | E¯¶cycidÉηéCRE_CYCª¡ éêiE_OBJj
|
---|
892 |
|
---|
893 | pX2Åo·éàÌ
|
---|
894 | EcycatrªimTA_STAnjÅÈ¢êiE_RSATRj
|
---|
895 | E(0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
|
---|
896 | E(0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
|
---|
897 | ExFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
|
---|
898 | ECRE_CYC ÌGgª16Âæè½¢ ¦SSPÀè`
|
---|
899 |
|
---|
900 | pX3Åo·éàÌ
|
---|
901 | EcychdrªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
902 | - ^[Qbg˶ÌliCHECK_FUNC_ALIGNjÌ{ÅÈ¢ê
|
---|
903 | - NULLÌêi^[Qbg˶CCHECK_FUNC_NONNULLj
|
---|
904 |
|
---|
905 | (5-5) A[nhÉÖ·éè`
|
---|
906 |
|
---|
907 | A[nhÌȪLÍuALM^almvÅ éDȺÅÍCVXeR
|
---|
908 | tBM
|
---|
909 | [Vt@CÉÌÃIAPIªÜÜêÄ¢éɶ¬·×«îñ
|
---|
910 | É¢Äq×éD
|
---|
911 |
|
---|
912 | CRE_ALM(ID almid, { almatr, (intptr_t)(exinf), almhdr });
|
---|
913 |
|
---|
914 | (5-5-1) A[nhÌú»îñig£îñj
|
---|
915 |
|
---|
916 | A[nhÌg£îñÌú»îñÍCÌ`®Æ·éD
|
---|
917 |
|
---|
918 | const intptr_t _kernel_alminib_exinf[TNUM_ALMID] = {(intptr_t)(exinf)};
|
---|
919 |
|
---|
920 | (5-5-2) A[nhÌú»îñiN®Ônj
|
---|
921 |
|
---|
922 | A[nhÌN®ÔnÌú»îñÍCÌ`®Æ·éD
|
---|
923 |
|
---|
924 | const ALMHDR _kernel_alminib_almhdr[TNUM_ALMID] = {(almhdr)};
|
---|
925 |
|
---|
926 | (5-5-3) A[nhÌ®ìóÔ
|
---|
927 |
|
---|
928 | A[nhÌ®ìóÔði[·éÏÍCÌ`®Æ·éD
|
---|
929 |
|
---|
930 | uint_t _kernel_almcb_almact;
|
---|
931 |
|
---|
932 | Ï _kernel_almcb_almact ÌerbgÍÂXÌA[nhÉηéD
|
---|
933 | A[nhIDª1Ì^XNÍźÊrbg(LSB)ÉÎïçêĨèC
|
---|
934 | IDÌlª1¦éÉ1ÂÊÌrbgª»ê¼êÎïçêéD
|
---|
935 | á¦ÎCnhIDª4ÌA[nhÍźʩç¦Ä4ÔÚÌrbgª
|
---|
936 | ηéD
|
---|
937 |
|
---|
938 | ®ìµÄ¢éóÔÌA[nhÍC»ÌüúnhÉηérbgª
|
---|
939 | 1ÆÈéD®ìµÄ¢È¢óÔÌüúnhÍηérbgª0ÉÈéD
|
---|
940 |
|
---|
941 | (5-5-4) ^CCxgL
|
---|
942 | [ÌÌItZbgîñÌè`
|
---|
943 |
|
---|
944 | ^CCxgL
|
---|
945 | [ÌÅA[nhpÉèÄçê½ÌæÌæª
|
---|
946 | Êuð¦·îñðÏÉÛ·éD^CCxgL
|
---|
947 | [ÍzñÅ\»³êĨèC
|
---|
948 | æªÊuÍzñÌæª©çÌItZbgiÂÜèzñÌCfbNXjƵÄ
|
---|
949 | \»³êéDA[nhÉεÄÍüúnhpÌæÌÌvf©ç
|
---|
950 | èÄçêé½ßC±ÌlÍíÉüúnhÌÂɵ¢D
|
---|
951 | Ïè`ÍCÌ`®ÆÈéD
|
---|
952 |
|
---|
953 | const uint_t _kernel_almevtid_offset = <üúnhÌÂ>;
|
---|
954 |
|
---|
955 | ^CCxgL
|
---|
956 | [É¢ÄÍ(9-3)ðQÆÌ±ÆD
|
---|
957 |
|
---|
958 | (5-5-5) G[ð
|
---|
959 |
|
---|
960 | A[nhÉÖ·éG[ðÍÌÊèÅ éD
|
---|
961 |
|
---|
962 | RtBM
|
---|
963 | [^{̪o·éàÌ
|
---|
964 | E¯¶almidÉηéCRE_ALMª¡ éêiE_OBJj
|
---|
965 |
|
---|
966 | pX2Åo·éàÌ
|
---|
967 | EalmatrªiTA_NULLjÅÈ¢êiE_RSATRj
|
---|
968 | ECRE_ALM ÌGgª16Âæè½¢ ¦SSPÀè`
|
---|
969 |
|
---|
970 | pX3Åo·éàÌ
|
---|
971 | EalmhdrªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
972 | - ^[Qbg˶ÌliCHECK_FUNC_ALIGNjÌ{ÅÈ¢ê
|
---|
973 | - NULLÌêi^[Qbg˶CCHECK_FUNC_NONNULLj
|
---|
974 |
|
---|
975 | (6) ÝÉÖ·éè`
|
---|
976 |
|
---|
977 | ÝÉֵͬ·éîñÍC^[QbgÉèß鱯ªÅ«éD
|
---|
978 | ^[QbgÉèßÈ¢êÉÍCȺÅq×é^[QbgÉ˶µÈ¢WIÈ
|
---|
979 | îñ𶬷éD^[QbgÉèßéêÉÍC(6-1)Æ(6-3)Éq×éîñͶ
|
---|
980 | ¬µÈ¢i(6-2)Éq×éîñͶ¬·éjD
|
---|
981 |
|
---|
982 | (6-1) ÝvCÉÖ·éè`
|
---|
983 |
|
---|
984 | ÝvCÌ®«ðÝè·éÃIAPIuCFG_INTvÅÝèµ½Ýv
|
---|
985 | CÉÖ·éè`𶬷éDïÌIÉÍÌÊèD
|
---|
986 |
|
---|
987 | ȺÅÍCVXeRtBM
|
---|
988 | [Vt@CÉÌÃIAPIªÜÜê
|
---|
989 | Ä¢éɶ¬·×«îñÉ¢Äq×éD
|
---|
990 |
|
---|
991 | CFG_INT(INTNO intno, { intatr, intpri });
|
---|
992 |
|
---|
993 | (6-1-1) Ýè·éÝvCÌ
|
---|
994 |
|
---|
995 | Ýè·éÝvCÌð}Nè`·évvZbTfBNeB
|
---|
996 | ui#definej𶬷éDܽC»ÌlðÂÏÌè`𶬷éDïÌI
|
---|
997 | ÉÍCÌæ¤Ès𶬷éD
|
---|
998 |
|
---|
999 | #define TNUM_INTNO <Ýè·éÝvCÌ>
|
---|
1000 | const uint_t _kernel_tnum_intno = TNUM_INTNO;
|
---|
1001 |
|
---|
1002 | (6-1-2) ÝvCÌú»îñiÝÔj
|
---|
1003 |
|
---|
1004 | ÝÔÌú»îñÍCÌ`®Æ·éD
|
---|
1005 |
|
---|
1006 | const INTNO _kernel_intinib_intno[TNUM_INTNO] = {(intno)};
|
---|
1007 |
|
---|
1008 | (6-1-3) ÝvCÌú»îñiÝvC®«j
|
---|
1009 |
|
---|
1010 | ÝvC®«Ìú»îñÍCÌ`®Æ·éD
|
---|
1011 |
|
---|
1012 | const ATR _kernel_intinib_intatr[TNUM_INTNO] = {(intatr)};
|
---|
1013 |
|
---|
1014 | (6-1-4) ÝvCÌú»îñiÝvC®«j
|
---|
1015 |
|
---|
1016 | ÝDæxÌú»îñÍCÌ`®Æ·éD
|
---|
1017 |
|
---|
1018 | const PRI _kernel_intinib_intpri[TNUM_INTNO] = {(intpri)};
|
---|
1019 |
|
---|
1020 | (6-1-5) G[ð
|
---|
1021 |
|
---|
1022 | ÝvCÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1023 |
|
---|
1024 | pX2Åo·éàÌ
|
---|
1025 | Eintno ª CFG_INTÉηéÝÔÆµÄ³µÈ¢êiE_PARj
|
---|
1026 | Eintno ª CFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
|
---|
1027 | EintatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
|
---|
1028 | ¦ ^[Qbg˶ÅÝ®«ðÇÁÂiTARGET_INTATRj
|
---|
1029 | EJ[lÇÉÅè³êÄ¢é intno ÉεÄCintpriÉTMIN_INTPRI
|
---|
1030 | @æèଳ¢liÂÜèCDæxƵÄÍ¢ljªwè³ê½êiE_OBJj
|
---|
1031 | EJ[lÇOÉÅè³êÄ¢é intno ÉεÄCintpri É TMIN_INTPRI
|
---|
1032 | @Ư¶©Ü½Í»êæèàå«¢liÂÜèCDæxƵÄͯ¶©Ü½Í
|
---|
1033 | @»êæèá¢ljªwè³ê½êiE_OBJj
|
---|
1034 | Eintpri ª CFG_INT ÉηéÝDæxƵijµÈ¢êiE_PARj
|
---|
1035 |
|
---|
1036 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1037 | Eintatr ªÝ®«ÆµÄÝèūȢlÌêiE_RSATRj
|
---|
1038 | Eintpri ªÝDæxƵÄÝèūȢlÌêiE_PARj
|
---|
1039 | E¯êÌÝDæxµ©ÝèūȢÝvCÉεÄCÙÈé
|
---|
1040 | @ÝDæxðÝèµ½êiE_PARj
|
---|
1041 |
|
---|
1042 | (6-2) ÝT[rX[`ÉÖ·éè`
|
---|
1043 |
|
---|
1044 | (6-2-1) Ýnh̶¬
|
---|
1045 |
|
---|
1046 | VXeRtBM
|
---|
1047 | [Vt@CÉÜÜêéÝT[rX[`
|
---|
1048 | ðÇÁ·éÃIAPIuATT_ISRvÉîëC¯êÌÝÔÉεÄÇÁ³
|
---|
1049 | ê½ÝT[rX[`ðÉÄÑo·Ö𶬷éD
|
---|
1050 |
|
---|
1051 | ïÌIÉÍC¯êÌÝÔÉεÄÝT[rX[`ðÇÁ·é
|
---|
1052 |
|
---|
1053 | ATT_ISR({ isratr_1, exinf_1, intno, isr_1, isrpri_1 });
|
---|
1054 | ATT_ISR({ isratr_2, exinf_2, intno, isr_2, isrpri_2 });
|
---|
1055 | cc
|
---|
1056 | ATT_ISR({ isratr_n, exinf_n, intno, isr_n, isrpri_n });
|
---|
1057 |
|
---|
1058 | Æ¢¤ÃIAPIÉεÄCÌæ¤ÈÖ𶬷éD±±ÅCisrpri_1C
|
---|
1059 | isrpri_2CccCisrpri_nÍCl̬³¢ÉÀ×Ö¦çêÄ¢éàÌÆ·éD
|
---|
1060 | lª¯¶àÌÌÔÅÍCVXeRtBM
|
---|
1061 | [Vt@CÅÌÃI
|
---|
1062 | APIÌÌÊèÉÀñÅ¢éàÌÆ·éD
|
---|
1063 |
|
---|
1064 | static void
|
---|
1065 | _kernel_inthdr_<intno>(void)
|
---|
1066 | {
|
---|
1067 | PRI saved_ipm;
|
---|
1068 |
|
---|
1069 | i_begin_int(intno);
|
---|
1070 | saved_ipm = i_get_ipm();
|
---|
1071 |
|
---|
1072 | LOG_ISR_ENTER(<intno>); /* ISR1ÌÄoµ */
|
---|
1073 | isr_1((intptr_t)(exinf_1));
|
---|
1074 | LOG_ISR_LEAVE(intno);
|
---|
1075 |
|
---|
1076 | if (i_sense_lock()) { /* ISRÌÄoµOÌóÔÉß· */
|
---|
1077 | i_unlock_cpu();
|
---|
1078 | }
|
---|
1079 | i_set_ipm(saved_ipm);
|
---|
1080 |
|
---|
1081 | LOG_ISR_ENTER(<intno>); /* ISR2ÌÄoµ */
|
---|
1082 | isr_2((intptr_t)(exinf_2));
|
---|
1083 | LOG_ISR_LEAVE(intno);
|
---|
1084 |
|
---|
1085 | if (i_sense_lock()) { /* ISRÌÄoµOÌóÔÉß· */
|
---|
1086 | i_unlock_cpu();
|
---|
1087 | }
|
---|
1088 | i_set_ipm(saved_ipm);
|
---|
1089 |
|
---|
1090 | cc
|
---|
1091 |
|
---|
1092 | LOG_ISR_ENTER(<intno>); /* ISRnÌÄoµ */
|
---|
1093 | isr_n((intptr_t)(exinf_n));
|
---|
1094 | LOG_ISR_LEAVE(intno);
|
---|
1095 |
|
---|
1096 | i_end_int(intno);
|
---|
1097 | }
|
---|
1098 |
|
---|
1099 | ±±ÅCISRnÌÄoµÌãÉÄoµOÌóÔÉ߳ȢÌÍCÝnh
|
---|
1100 | ©çÌ^[ÉæèCJ[lª³ÌóÔÉß·½ßÅ éD
|
---|
1101 |
|
---|
1102 | ¯êÌÝÔÉεÄÇÁ³ê½ÝT[rX[`ª1ÂÌÝÌê
|
---|
1103 | ÉÍCÌæ¤ÈÖ𶬷éD
|
---|
1104 |
|
---|
1105 | static void
|
---|
1106 | _kernel_inthdr_<intno>(void)
|
---|
1107 | {
|
---|
1108 | i_begin_int(intno);
|
---|
1109 | LOG_ISR_ENTER(intno);
|
---|
1110 | isr_1((intptr_t)(exinf_1));
|
---|
1111 | LOG_ISR_LEAVE(intno);
|
---|
1112 | i_end_int(intno);
|
---|
1113 | }
|
---|
1114 |
|
---|
1115 | yÛèz±±ÅCLOG_ISR_ENTERCLOG_ISR_LEAVEÌøðǤ·é©ªÛèÆ
|
---|
1116 | µÄcÁÄ¢éDATT_ISRÅo^³ê½ISRÉεÄÍISR IDªt^³êÈ¢½
|
---|
1117 | ßCIDÅISRðæÊ·é±ÆªÅ«È¢DâÞÈÝÔðnµÄ¢éªC
|
---|
1118 | g£îñiexinfjàn·×«©àµêÈ¢D
|
---|
1119 |
|
---|
1120 | (6-2-2) ÝnhÌè`É·é
|
---|
1121 |
|
---|
1122 | ãÌæ¤ÉÝnh𶬵½êÉÍCÉྷéÝnh
|
---|
1123 | ÉÖ·éè`ɨ¢ÄCVXeRtBM
|
---|
1124 | [Vt@CÉÌÃ
|
---|
1125 | IAPIªÜÜêÄ¢éÌÆ¯lÉ·éD
|
---|
1126 |
|
---|
1127 | DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> });
|
---|
1128 |
|
---|
1129 | ±±ÅinhnoÍCintnoÉηéÝnhÔÅ éD
|
---|
1130 |
|
---|
1131 | (6-2-3) G[ð
|
---|
1132 |
|
---|
1133 | ÝT[rX[`ÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1134 |
|
---|
1135 | pX2Åo·éàÌ
|
---|
1136 | Eisratr ªiTA_NULLjÅÈ¢êiE_RSATRj
|
---|
1137 | ¦ ^[Qbg˶ÅÝT[rX[`®«ðÇÁÂiTARGET_ISRATRj
|
---|
1138 | Eintno ª ATT_ISR ÉηéÝÔÆµÄ³µÈ¢êiE_PARj
|
---|
1139 | ¦ intno Éηé inhno ªÈ¢êðÜÞ
|
---|
1140 | E(TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
|
---|
1141 | Eintno Éηé inhno É뵀 DEF_INH ª éêiE_OBJj
|
---|
1142 | Eintno Éηé CFG_INT ªÈ¢êiE_OBJj
|
---|
1143 | Eintno É뵀 CFG_INT ª¶ÝµC©ÂCCFG_INT ÅÝè³ê½ÝDæxª
|
---|
1144 | @TMIN_INTPRI æèଳ¢iÂÜèCDæxƵÄÍ¢jêiE_OBJj
|
---|
1145 | ¦ J[lÇOÌISRÍT|[gµÈ¢½ß
|
---|
1146 |
|
---|
1147 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1148 | EisrªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
1149 |
|
---|
1150 | (6-3) ÝnhÉÖ·éè`
|
---|
1151 |
|
---|
1152 | Ýnhðè`·éÃIAPIuDEF_INHvÅè`µ½Ýnh
|
---|
1153 | iãqÌÝT[rX[`ÌÇÁÉæèRtBM
|
---|
1154 | [^ª¶¬µ½
|
---|
1155 | ÝnhðÜÞjÉÖ·éè`𶬷éDïÌIÉÍÌÊèD
|
---|
1156 |
|
---|
1157 | ȺÅÍCVXeRtBM
|
---|
1158 | [Vt@CÉÌÃIAPIªÜÜê
|
---|
1159 | Ä¢éɶ¬·×«îñÉ¢Äq×éD
|
---|
1160 |
|
---|
1161 | DEF_INH(inhno, { inhatr, inthdr });
|
---|
1162 |
|
---|
1163 | (6-3-1) è`·éÝnhÌ
|
---|
1164 |
|
---|
1165 | è`·éÝnhÌð}Nè`·évvZbTfBNeBu
|
---|
1166 | i#definej𶬷éDܽC»ÌlðÂÏÌè`𶬷éDïÌI
|
---|
1167 | ÉÍCÌæ¤Ès𶬷éD
|
---|
1168 |
|
---|
1169 | #define TNUM_INHNO <è`·éÝnhÌ>
|
---|
1170 | const uint_t _kernel_tnum_inhno = TNUM_INHNO;
|
---|
1171 |
|
---|
1172 | (6-3-2) ÝnhÌoüû
|
---|
1173 |
|
---|
1174 | è`·éÝnhÉCÝnhÌoüû[`𶬷
|
---|
1175 | éDïÌIÉÍCÌæ¤Ès𶬷éD
|
---|
1176 |
|
---|
1177 | INTHDR_ENTRY(inhno, inhno_num, inthdr)
|
---|
1178 |
|
---|
1179 | ±±Åinhno_numÍCinhnoiÝnhÔjðlÅ\»µ½àÌÅC
|
---|
1180 | AZu¾êLqÉgp·é½ßÌàÌÅ éD
|
---|
1181 |
|
---|
1182 | (6-3-3) ÝnhÌú»îñiÝnhÔj
|
---|
1183 |
|
---|
1184 | ÝnhÔÌú»îñÍCÌ`®Æ·éD
|
---|
1185 |
|
---|
1186 | const INHNO _kernel_inhinib_inhno[TNUM_INHNO] = {(inhno)};
|
---|
1187 |
|
---|
1188 | (6-3-4) ÝnhÌú»îñiÝnh®«j
|
---|
1189 |
|
---|
1190 | Ýnh®«Ìú»îñÍCÌ`®Æ·éD
|
---|
1191 |
|
---|
1192 | const ATR _kernel_inhinib_inhatr[TNUM_INHNO] = {(inhatr)};
|
---|
1193 |
|
---|
1194 | (6-3-5) ÝnhÌú»îñiÝnhAhXj
|
---|
1195 |
|
---|
1196 | ÝnhÌAhXÌú»îñÍCÌ`®Æ·éD
|
---|
1197 |
|
---|
1198 | const FP _kernel_inhinib_entry[TNUM_INHNO] = {(inthdr)};
|
---|
1199 |
|
---|
1200 | (6-3-6) G[ð
|
---|
1201 |
|
---|
1202 | ÝnhÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1203 |
|
---|
1204 | pX2Åo·éàÌ
|
---|
1205 | Einhno ª DEF_INH ÉηéÝnhÔÆµÄ³µÈ¢êiE_PARj
|
---|
1206 | Einhno ª DEF_INH ÉæÁÄÝèÏÝÌêiE_OBJj
|
---|
1207 | #Einhno Éηé intno É뵀 ATT_ISR ª éêiE_OBJj
|
---|
1208 | # ¦ inhno Éηé intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
|
---|
1209 | # ¨ ±Ì`FbNÍCÝT[rX[`¤Ås¤
|
---|
1210 | Einhatr ªiTA_NULLjÅÈ¢êiE_RSATRj
|
---|
1211 | ¦ ^[Qbg˶ÅÝnh®«ðÇÁÂiTARGET_INHATRj
|
---|
1212 | ¦ TA_NONKERNEL ðg¤êÉÍCTARGET_INHATR ÉÝè·é
|
---|
1213 | EJ[lÇÉÅè³êÄ¢é inhno ÉεÄCinhatr É TA_NONKERNEL ª
|
---|
1214 | @wè³êÄ¢éêiE_RSATRj
|
---|
1215 | EJ[lÇOÉÅè³êÄ¢é inhno ÉεÄCinhatr É TA_NONKERNEL ª
|
---|
1216 | @wè³êĢȢêiE_RSATRj
|
---|
1217 | Einhno Éηé intno Éηé CFG_INT ªÈ¢êiE_OBJj
|
---|
1218 | ¦ inhno Éηé intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
|
---|
1219 | Einhatr É TA_NONKERNEL ªwè³êĨç¸Cinhno Éηé intno ÉεÄ
|
---|
1220 | @CFG_INT ÅÝè³ê½ÝDæxª TMIN_INTPRI æèଳ¢êiE_OBJj
|
---|
1221 | ¦ inhno Éηé intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
|
---|
1222 | Einhatr É TA_NONKERNEL ªwè³êĨèCinhno Éηé intno ÉεÄ
|
---|
1223 | @CFG_INT ÅÝè³ê½ÝDæxª TMIN_INTPRI ÈãÅ éêiE_OBJj
|
---|
1224 | ¦ inhno Éηé intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
|
---|
1225 |
|
---|
1226 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1227 | EinthdrªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
1228 |
|
---|
1229 | (7) CPUáOÉÖ·éè`
|
---|
1230 |
|
---|
1231 | CPUáOÉֵͬ·éîñÍC^[QbgÉèß鱯ªÅ«éD
|
---|
1232 | ^[QbgÉèßÈ¢êÉÍCȺÅq×é^[QbgÉ˶µÈ¢WIÈ
|
---|
1233 | îñ𶬷éD^[QbgÉèßéêÉÍC±êçÌîñͶ¬³êÈ¢D
|
---|
1234 |
|
---|
1235 | VXeRtBM
|
---|
1236 | [Vt@CÉCCPUáOnhðè`·é
|
---|
1237 | ÃIAPIuDEF_EXCvªÜÜêÄ¢éêÉCCPUáOnhÉÖ·éè`ð
|
---|
1238 | ¶¬·éD
|
---|
1239 |
|
---|
1240 | ȺÅÍCVXeRtBM
|
---|
1241 | [Vt@CÉÌÃIAPIªÜÜê
|
---|
1242 | Ä¢éɶ¬·×«îñÉ¢Äq×éD
|
---|
1243 |
|
---|
1244 | DEF_EXC(excno, { excatr, exchdr });
|
---|
1245 |
|
---|
1246 | (7-1) è`·éCPUáOnhÌ
|
---|
1247 |
|
---|
1248 | è`·éCPUáOnhÌð}Nè`·évvZbTfBNeB
|
---|
1249 | ui#definej𶬷éDܽC»ÌlðÂÏÌè`𶬷éDïÌ
|
---|
1250 | IÉÍCÌæ¤Ès𶬷éD
|
---|
1251 |
|
---|
1252 | #define TNUM_EXCNO <è`·éCPUáOnhÌ>
|
---|
1253 | const uint_t _kernel_tnum_excno = TNUM_EXCNO;
|
---|
1254 |
|
---|
1255 | (7-2) CPUáOnhÌoüû
|
---|
1256 |
|
---|
1257 | è`·éCPUáOnhÉCCPUáOnhÌoüû[`ð¶¬
|
---|
1258 | ·éDïÌIÉÍCÌæ¤Ès𶬷éD
|
---|
1259 |
|
---|
1260 | EXCHDR_ENTRY(excno, excno_num, exchdr)
|
---|
1261 |
|
---|
1262 | ±±Åexcno_numÍCexcnoiCPUáOnhÔjðlÅ\»µ½àÌÅC
|
---|
1263 | AZu¾êLqÉgp·é½ßÌàÌÅ éD
|
---|
1264 |
|
---|
1265 | (7-3) CPUáOnhÔÌú»îñiCPUáOÔj
|
---|
1266 |
|
---|
1267 | CPUáOnhÔÌú»îñÍCÌ`®Æ·éD
|
---|
1268 |
|
---|
1269 | const EXCNO _kernel_excinib_excno[TNUM_EXCNO] = {(excno)};
|
---|
1270 |
|
---|
1271 | (7-4) CPUáOnhÔÌú»îñiCPUáOnh®«j
|
---|
1272 |
|
---|
1273 | CPUáOnh®«Ìú»îñÍCÌ`®Æ·éD
|
---|
1274 |
|
---|
1275 | const ATR _kernel_excinib_excatr[TNUM_EXCNO] = {(excatr)};
|
---|
1276 |
|
---|
1277 | (7-5) CPUáOnhÔÌú»îñiCPUáOnhÌæªÔnj
|
---|
1278 |
|
---|
1279 | CPUáOnhÌæªÔnÌú»îñÍCÌ`®Æ·éD
|
---|
1280 |
|
---|
1281 | const FP _kernel_excinib_entry[TNUM_EXCNO] = {(FP)(EXC_ENTRY(excno, exchdr))};
|
---|
1282 |
|
---|
1283 | ±±Å EXC_ENTRY ÍCPUáOnhÔÆCPUáOnhÌæªÔnð³É
|
---|
1284 | CPUáOnhÌüèû̼Ì𶬷é}NÅC^[Qbg˶Å
|
---|
1285 | è`³êÄ¢éD
|
---|
1286 |
|
---|
1287 | (7-6) G[ð
|
---|
1288 |
|
---|
1289 | CPUáOnhÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1290 |
|
---|
1291 | pX2Åo·éàÌ
|
---|
1292 | Eexcno ª DEF_EXC Éηé CPU áOnhÔÆµÄ³µÈ¢êiE_PARj
|
---|
1293 | Eexcno ª DEF_EXC ÉæÁÄÝèÏÝÌêiE_OBJj
|
---|
1294 | Eexcatr ªiTA_NULLjÅÈ¢êiE_RSATRj
|
---|
1295 | ¦ ^[Qbg˶ÅCPUáOnh®«ðÇÁÂiTARGET_EXCATRj
|
---|
1296 |
|
---|
1297 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1298 | EexchdrªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
1299 |
|
---|
1300 | (8) ñ^XNReLXgpÌX^bNÌæÉÖ·éè`
|
---|
1301 |
|
---|
1302 | æÌ (5-1-7) Åàྵ½æ¤ÉCSSPJ[lÅÍCRtBM
|
---|
1303 | [^Í
|
---|
1304 | ¤LX^bNÌæÌÝmÛ·éDµ½ªÁÄCñ^XNReLXgêpÌX^bNÌæÍ
|
---|
1305 | m۵ȢD±Ì½ßCDEF_ICS ÌðÍCñ^XNReLXgªp¢éX^bNÌæÌ
|
---|
1306 | TCYðwè·é±ÆÌÝÆÈéDܽCDEF_ICS ÅÍæªÔn istk ÆµÄ NULL ÌÝ
|
---|
1307 | ó¯t¯éDNULL ÈOÌlðwèµ½êÍG[ÆÈéD
|
---|
1308 |
|
---|
1309 | ¦ ¤LX^bNÌæÉÖ·éè`Í (9) ðQÆ·é±ÆD
|
---|
1310 |
|
---|
1311 | ȨCñ^XNReLXgpÌX^bNTCYÉÖ·éè`ÍCÈºÌæ¤É
|
---|
1312 | DEF_ICS ÌL³É©©íç¸íɶ¬³êéD
|
---|
1313 |
|
---|
1314 | (8-1) DEF_ICS ªÈ¢ê
|
---|
1315 |
|
---|
1316 | VXeRtBM
|
---|
1317 | [Vt@CÉCÃIAPIuDEF_ICSvªÜÜêÄ
|
---|
1318 | ¢È¢êÉÍCÌs𶬷éD
|
---|
1319 |
|
---|
1320 | #define TOPPERS_ISTKSZ DEFAULT_ISTKSZ
|
---|
1321 |
|
---|
1322 | (8-2) DEF_ICS ª éê
|
---|
1323 |
|
---|
1324 | ȺÅÍCVXeRtBM
|
---|
1325 | [Vt@CÉÌÃIAPIªÜÜêÄ
|
---|
1326 | ¢éɶ¬·×«îñÉ¢Äq×éD
|
---|
1327 |
|
---|
1328 | DEF_ICS({ istksz, istk });
|
---|
1329 |
|
---|
1330 | DEF_ICS ÅÍ istk ƵÄNULLÌÝwèÂ\Å èCoÍÉÍe¿µÈ¢D
|
---|
1331 | ñ^XNReLXgpX^bNÌæÌTCY istksz ÉæèÌs𶬷éD
|
---|
1332 |
|
---|
1333 | #define TOPPERS_ISTKSZ (istksz)
|
---|
1334 |
|
---|
1335 | ¦¤LX^bNÌæÌè`É¢ÄÍ (9) ðQÆÌ±ÆD
|
---|
1336 |
|
---|
1337 | (8-3) G[ð
|
---|
1338 |
|
---|
1339 | ñ^XNReLXgpÌX^bNÌæÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1340 |
|
---|
1341 | pX2Åo·éàÌ
|
---|
1342 | EÃIAPIuDEF_ICSvª¡ éiE_OBJj
|
---|
1343 | EistkszªX^bNÌæÌTCYƵijµÈ¢êiE_PARj
|
---|
1344 | - istksz ª 0 Ìê
|
---|
1345 | EistkªX^bNÌæÌæªÔnƵijµÈ¢êiE_PARj
|
---|
1346 | - NULLÈOÌlÌê
|
---|
1347 |
|
---|
1348 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1349 | Eistkszª¬³·¬éêiE_PARj
|
---|
1350 |
|
---|
1351 |
|
---|
1352 | (9) ¤LX^bNÌæÉÖ·éè`
|
---|
1353 |
|
---|
1354 | æÌ (5-1-7) ÉÄྵ½æ¤ÉCSSPJ[lÅÍ^XNðÜÞSÄÌPʪ
|
---|
1355 | ¯¶X^bNÌæð¤p·éæ¤ÉÝv³êÄ¢éD»µÄ¤p³êéX^bNÌæÌ
|
---|
1356 | ±Æðu¤LX^bNÌævÆÄÔD
|
---|
1357 |
|
---|
1358 | ¤LX^bNÌæÌè`Í DEF_STK ðp¢Äs¤D»µÄCRtBM
|
---|
1359 | [VÅÍ
|
---|
1360 | ¤LX^bNÌæÉÖ·éè`ÍCDEF_STK ÌL³ÉÖíç¸íɶ¬³êéD
|
---|
1361 |
|
---|
1362 | ȺÅÍCDEF_STK ÌL³¨æÑ^¦çêéøÌàeÉæèC
|
---|
1363 | ÇÌæ¤É¤LX^bNÌæÌè`ª¶¬³êé©É¢ÄྷéD
|
---|
1364 |
|
---|
1365 | (9-1) DEF_STK ªÈ¢êɶ¬³êéè`
|
---|
1366 |
|
---|
1367 | VXeRtBM
|
---|
1368 | [Vt@CÉCÃIAPIuDEF_STKvªÜÜêÄ
|
---|
1369 | ¢È¢êÉÍCÌs𶬷éD
|
---|
1370 |
|
---|
1371 | static STK_T _kernel_stack[COUNT_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)];
|
---|
1372 | #define TOPPERS_STK _kernel_stack
|
---|
1373 | #define TOPPERS_STKSZ ROUND_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)
|
---|
1374 |
|
---|
1375 | (9-2) DEF_STKª éêÉÌݶ¬³êéè`
|
---|
1376 |
|
---|
1377 | ȺÅÍCVXeRtBM
|
---|
1378 | [Vt@CÉÌÃIAPIªÜÜêÄ
|
---|
1379 | ¢éɶ¬·×«îñÉ¢Äq×éD
|
---|
1380 |
|
---|
1381 | DEF_STK({ stksz, stk });
|
---|
1382 |
|
---|
1383 | (9-2-1) stk ª NULL Ìê
|
---|
1384 |
|
---|
1385 | stk ª NULL ÌêÉÍCwè³ê½TCY̤LX^bNÌæðmÛµC
|
---|
1386 | ¤LX^bNÌæÌú»îñ𶬷éD
|
---|
1387 | ïÌIÉÍCãLÌÃIAPIÉεÄCÌs𶬷éD
|
---|
1388 |
|
---|
1389 | static STK_T _kernel_stack[COUNT_STK_T(stksz)];
|
---|
1390 | #define TOPPERS_STK _kernel_stack
|
---|
1391 | #define TOPPERS_STKSZ ROUND_STK_T(stksz)
|
---|
1392 |
|
---|
1393 | (9-2-2) stk ª NULL ÈOÌê
|
---|
1394 |
|
---|
1395 | stk ª NULL ÅÈ¢êÉÍC¤LX^bNÌæÌú»îñðCÌ`®Å¶¬·éD
|
---|
1396 |
|
---|
1397 | #define TOPPERS_STK (stk)
|
---|
1398 | #define TOPPERS_STKSZ (stksz)
|
---|
1399 |
|
---|
1400 | (9-3) DEF_STK ÌL³ÉÖWÈCíɶ¬³êéè`
|
---|
1401 |
|
---|
1402 | DEF_STKÌL³Éæç¸CÌè`𶬷éD
|
---|
1403 |
|
---|
1404 | const SIZE _kernel_stksz = TOPPERS_STKSZ;
|
---|
1405 | STK_T *const _kernel_stk = TOPPERS_STK;
|
---|
1406 |
|
---|
1407 | #ifdef TOPPERS_ISTKPT
|
---|
1408 | STK_T *const _kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_STK, TOPPERS_STKSZ);
|
---|
1409 | #endif /* TOPPERS_ISTKPT */
|
---|
1410 |
|
---|
1411 | (9-4) G[ð
|
---|
1412 |
|
---|
1413 | ¤LX^bNÌæÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1414 |
|
---|
1415 | pX2Åo·éàÌ
|
---|
1416 | EÃIAPIuDEF_STKvª¡ éiE_OBJj
|
---|
1417 | EstkszªX^bNÌæÌTCYƵijµÈ¢êiE_PARj
|
---|
1418 | - stksz ÆµÄ 0 ðwèµ½ê
|
---|
1419 | - ^[Qbg˶ÌliCHECK_STKSZ_ALIGNjÌ{ÅÈ¢ê
|
---|
1420 | ¦ ±ÌG[`FbNÍCstk ª NULL ÅÈ¢êÉÌÝs¤
|
---|
1421 | ExFstksz ªC(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ) æèଳ¢ê
|
---|
1422 | ¦ DEF_STK ª¶ÝµCstk ªñNULLÌêD
|
---|
1423 | ¦ }NÌlÉ¢ÄÍ (5-1-9), (8-1), (8-2) ðQÆÌ±Æ
|
---|
1424 |
|
---|
1425 | pX3Åo·éàÌ
|
---|
1426 | EstkªX^bNÌæÌæªÔnƵijµÈ¢êiE_PARj
|
---|
1427 | - ^[Qbg˶ÌliCHECK_STACK_ALIGNjÌ{ÅÈ¢ê
|
---|
1428 | - NULLÌêi^[Qbg˶CCHECK_STACK_NONNULLj
|
---|
1429 |
|
---|
1430 | (10) ^CCxgÇÉÖ·éè`
|
---|
1431 |
|
---|
1432 | ^CCxgÇÉÖAµÄCÌè`𶬷éD
|
---|
1433 |
|
---|
1434 | (10-1) ^CCxgnhÌ
|
---|
1435 |
|
---|
1436 | ¶¬³ê½^CCxgnhÌð}Nè`·évvZbT
|
---|
1437 | fBNeCu(#define) 𶬷éD
|
---|
1438 |
|
---|
1439 | SSPJ[lÅÍ^CCxgnhƵÄüúnh¨æÑA[
|
---|
1440 | nhÌÝðT|[g·éD»Ì½ßCCRE_CYC ¨æÑ CRE_ALM Ìvª
|
---|
1441 | ^CCxgnhÆÈéD
|
---|
1442 |
|
---|
1443 | ïÌIÉÍCÌæ¤ÈLq𶬷éD
|
---|
1444 |
|
---|
1445 | #define TNUM_TMEVT <^CCxgnhÌÂ>
|
---|
1446 |
|
---|
1447 | (10-2) ^CCxgubNÌTCYÌè`
|
---|
1448 |
|
---|
1449 | ^CCxgubNÌvfðè`·éÏ𶬷éD
|
---|
1450 | ^CCxgubNÌvfÍ^CCxgnhÌɵ¢D
|
---|
1451 |
|
---|
1452 | ïÌIÉÍCÌæ¤ÈLq𶬷éD
|
---|
1453 |
|
---|
1454 | const uint_t _kernel_tmevt_queue = <^CCxgnhÌÂ>;
|
---|
1455 |
|
---|
1456 | (10-3) ^CCxgL
|
---|
1457 | [Ìè`
|
---|
1458 |
|
---|
1459 | ^CCxgÇ̽ßÌL
|
---|
1460 | [𶬷éDL
|
---|
1461 | [ÍzñƵÄÀ³êÄ
|
---|
1462 | ¢éDL
|
---|
1463 | [Ìæªð\»·é½ßÌzñvfðmÛ·é½ßCzñÌvfÍ
|
---|
1464 | u^CCxgnhÌÂ{1vÆÈéD
|
---|
1465 |
|
---|
1466 | ïÌIÉÍCÌæ¤ÈLq𶬷éD
|
---|
1467 |
|
---|
1468 | extern QUEUE tmevt_queue[TNUM_TMEVT+1];
|
---|
1469 |
|
---|
1470 | (10-4) ^CCxgÔÌè`
|
---|
1471 |
|
---|
1472 | ^CCxgnhÌN®ði[·éÏÍCÌ`®Æ·éD
|
---|
1473 |
|
---|
1474 | extern EVTTIM tmevt_time[TNUM_TMEVT];
|
---|
1475 |
|
---|
1476 | (10-5) ^CCxgÌR[obNÌè`
|
---|
1477 |
|
---|
1478 | ^CCxgnhÌR[obNÖði[·éÏÍC
|
---|
1479 | Ì`®Æ·éD
|
---|
1480 |
|
---|
1481 | extern CBACK tmevt_callback[TNUM_TMEVT];
|
---|
1482 |
|
---|
1483 | (10-6) ^CCxgR[obNÌøÌè`
|
---|
1484 |
|
---|
1485 | ^CCxgnhÌR[obNÖÌøði[·éÏÍC
|
---|
1486 | Ì`®Æ·éD
|
---|
1487 |
|
---|
1488 | extern uintptr_t tmevt_arg[TNUM_TMEVT];
|
---|
1489 |
|
---|
1490 | (11) eW
|
---|
1491 | [Ìú»ÖÌè`
|
---|
1492 |
|
---|
1493 | eJ[lIuWFNgÌÇCÝÇCCPUáOnhÇÌe@\ð
|
---|
1494 | ú»ÖðÉÄÑo·Öi_kernel_initialize_objectj𶬷éD
|
---|
1495 | Ì3ÂÌú»Öð¢ÄÍCgpµÈ¢@\Ìú»ÖÍÄÑo³È¢D
|
---|
1496 |
|
---|
1497 | _kernel_initialize_task();
|
---|
1498 | _kernel_initialize_interrupt
|
---|
1499 | _kernel_initialize_exception
|
---|
1500 |
|
---|
1501 | ܽÌú»ÖÉ¢ÄÍCüúnhܽÍA[nhðgp·é
|
---|
1502 | êÉÌÝÄÑo³êéD
|
---|
1503 | _kernel_initialize_time_event();
|
---|
1504 |
|
---|
1505 | ·×ÄÌ@\ðgÁ½êɶ¬³êéÖÍÌÊèÅ éD
|
---|
1506 |
|
---|
1507 | void
|
---|
1508 | _kernel_initialize_object(void)
|
---|
1509 | {
|
---|
1510 | _kernel_initialize_time_event();
|
---|
1511 | _kernel_initialize_task();
|
---|
1512 | _kernel_initialize_interrupt();
|
---|
1513 | _kernel_initialize_exception();
|
---|
1514 | _kernel_initialize_cyclic();
|
---|
1515 | _kernel_initialize_alarm();
|
---|
1516 | _kernel_initialize_eventflag();
|
---|
1517 | }
|
---|
1518 |
|
---|
1519 |
|
---|
1520 | (12) ú»[`ÌÀsÖÌè`
|
---|
1521 |
|
---|
1522 | VXeRtBM
|
---|
1523 | [Vt@CÉÜÜêéú»[`ðÇÁ
|
---|
1524 | ·éÃIAPIuATT_INIvÉεÄCÇÁµ½ú»[`ðÉÄÑo·Ö
|
---|
1525 | 𶬷éDïÌIÉÍC
|
---|
1526 |
|
---|
1527 | ATT_INI({ iniatr, exinf, inirtn });
|
---|
1528 |
|
---|
1529 | Æ¢¤ÃIAPIÉεÄC
|
---|
1530 |
|
---|
1531 | (inirtn)((intptr_t)(exinf));
|
---|
1532 |
|
---|
1533 | ðÄÑo·ÖðC_kernel_call_inirtnÆ¢¤¼OŶ¬·éDú»[`
|
---|
1534 | ðÄÑo·ÍCVXeRtBM
|
---|
1535 | [Vt@CÅÌÃI
|
---|
1536 | APIÌÉêv³¹éD
|
---|
1537 |
|
---|
1538 | á¦ÎC
|
---|
1539 |
|
---|
1540 | ATT_INI({ TA_NULL, 0, timer_initialize });
|
---|
1541 | ATT_INI({ TA_NULL, CONSOLE_PORTID, serial_initialize });
|
---|
1542 |
|
---|
1543 | Æ¢¤2ÂÌÃIAPIª±ÌÅLq³ê½É¶¬·éÖÍÌÊèÅ
|
---|
1544 | éD
|
---|
1545 |
|
---|
1546 | void
|
---|
1547 | _kernel_call_inirtn(void)
|
---|
1548 | {
|
---|
1549 | ((INIRTN)(timer_initialize))((intptr_t)(0));
|
---|
1550 | ((INIRTN)(serial_initialize))((intptr_t)(CONSOLE_PORTID));
|
---|
1551 | }
|
---|
1552 |
|
---|
1553 | (12-1) G[ð
|
---|
1554 |
|
---|
1555 | ú»[`ÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1556 |
|
---|
1557 | pX2Åo·éàÌ
|
---|
1558 | EiniatrªiTA_NULLjÅÈ¢êiE_RSATRj
|
---|
1559 |
|
---|
1560 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1561 | EinirtnªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
1562 |
|
---|
1563 | (13) I¹[`ÌÀsÖÌè`
|
---|
1564 |
|
---|
1565 | VXeRtBM
|
---|
1566 | [Vt@CÉÜÜêéI¹[`ðÇ
|
---|
1567 | Á·éÃIAPIuATT_TERvÉεÄCÇÁµ½I¹[`ðÉÄÑo
|
---|
1568 | ·Ö𶬷éDïÌIÉÍC
|
---|
1569 |
|
---|
1570 | ATT_TER({ teratr, exinf, terrtn });
|
---|
1571 |
|
---|
1572 | Æ¢¤ÃIAPIÉεÄC
|
---|
1573 |
|
---|
1574 | (terrtn)((intptr_t)(exinf));
|
---|
1575 |
|
---|
1576 | ðÄÑo·ÖðC_kernel_call_terrtnÆ¢¤¼OŶ¬·éDI¹[
|
---|
1577 | `ðÄÑo·ÍCVXeRtBM
|
---|
1578 | [Vt@CÅÌÃI
|
---|
1579 | APIÌtÉêv³¹éD
|
---|
1580 |
|
---|
1581 | á¦ÎC
|
---|
1582 |
|
---|
1583 | ATT_TER({ TA_NULL, 0, timer_terminate });
|
---|
1584 | ATT_TER({ TA_NULL, CONSOLE_PORTID, serial_terminate });
|
---|
1585 |
|
---|
1586 | Æ¢¤2ÂÌÃIAPIª±ÌÅLq³ê½É¶¬·éÖÍÌÊèÅ
|
---|
1587 | éD
|
---|
1588 |
|
---|
1589 | void
|
---|
1590 | _kernel_call_terrtn(void)
|
---|
1591 | {
|
---|
1592 | ((TERRTN)(serial_terminate))((intptr_t)(CONSOLE_PORTID));
|
---|
1593 | ((TERRTN)(timer_terminate))((intptr_t)(0));
|
---|
1594 | }
|
---|
1595 |
|
---|
1596 | (13-1) G[ð
|
---|
1597 |
|
---|
1598 | I¹[`ÉÖ·éG[ðÍÌÊèÅ éD
|
---|
1599 |
|
---|
1600 | pX2Åo·éàÌ
|
---|
1601 | EteratrªiTA_NULLjÅÈ¢êiE_RSATRj
|
---|
1602 |
|
---|
1603 | KvɶÄ^[Qbg˶Åo·éàÌ
|
---|
1604 | EterrtnªvOÌJnÔnƵijµÈ¢êiE_PARj
|
---|
1605 |
|
---|
1606 | Èã
|
---|