source: asp_ewarm/asp-1.7.0/test/test_cpuexc1.c@ 61

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

ASP for EWARM のコミット.

File size: 5.7 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
9 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
10 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
11 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
12 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
13 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
14 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
15 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
16ƒƒ“ƒgi—˜—p
17 * ŽÒƒ}ƒjƒ…
18ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
19 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
20 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
21 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
22 * ‚ƁD
23 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
24ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
25ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
26 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
27 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
28 * •ñ‚·‚邱‚ƁD
29 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
30 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
31 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
32 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
33 * –Ɛӂ·‚邱‚ƁD
34 *
35 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
36 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
37 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
38 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
39 * ‚̐ӔC‚𕉂í‚È‚¢D
40 *
41 * @(#) $Id: test_cpuexc1.c 1577 2009-05-31 14:30:51Z ertl-hiro $
42 */
43
44/*
45 * CPU—áŠOˆ—‚̃eƒXƒg(1)
46 *
47 * yƒeƒXƒg‚Ì–Ú“Iz
48 *
49 * ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgCŠ„žƒƒbƒNó‘Ô‚Å”­¶‚µ‚½CPU—áŠO‚É‚¨‚¯‚éƒVƒXƒe
50 * ƒ€ó‘Ԃ̃eƒXƒgDŠ„ž‚Ý—Dæ“xƒ}ƒXƒNTIPM_ENAALLCƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó
51 * ‘ԁCƒ^ƒXƒN—áŠO‹–‰Âó‘ԂŃeƒXƒg‚·‚éD
52 *
53 * yƒeƒXƒg€–ځz
54 *
55 * ‚¢‚¸‚ê‚àC”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgCŠ„žƒƒbƒNó‘Ô‚Å”­¶‚µ‚½CPU—áŠO‚É‚¨
56 * ‚¢‚āC
57 *
58 * (A) CPU—áŠOƒnƒ“ƒhƒ‰ŽÀsŠJŽnŽž‚ÉCPUƒƒbƒNƒtƒ‰ƒO‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ
59 * IŠ„ž‚݃ƒbƒNó‘Ô‚Å”­¶‚µ‚½CPU—áŠO‚ł́CƒVƒXƒeƒ€ó‘Ԃ𐳂µ‚­“Ç
60 * ‚߂邱‚Æ‚ª•ÛØ‚³‚ê‚È‚¢‚½‚߁CƒeƒXƒg‚Å‚«‚È‚¢D
61 * (B) CPU—áŠOƒnƒ“ƒhƒ‰ŽÀsŠJŽnŽž‚ÉŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ
62 * IŠ„ž‚݃ƒbƒNó‘Ô‚Å”­¶‚µ‚½CPU—áŠO‚ł́CƒVƒXƒeƒ€ó‘Ԃ𐳂µ‚­“Ç
63 * ‚߂邱‚Æ‚ª•ÛØ‚³‚ê‚È‚¢‚½‚߁CƒeƒXƒg‚Å‚«‚È‚¢D
64 * (C) CPU—áŠOƒnƒ“ƒhƒ‰ŽÀsŠJŽnŽž‚ɃfƒBƒXƒpƒbƒ`‹ÖŽ~ƒtƒ‰ƒO‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ
65 * IŠ„ž‚݃ƒbƒNó‘Ô‚Å”­¶‚µ‚½CPU—áŠO‚ł́CƒVƒXƒeƒ€ó‘Ԃ𐳂µ‚­“Ç
66 * ‚߂邱‚Æ‚ª•ÛØ‚³‚ê‚È‚¢‚½‚߁CƒeƒXƒg‚Å‚«‚È‚¢D
67 * (D) CPU—áŠOƒnƒ“ƒhƒ‰ŽÀsŠJŽnŽž‚Ƀ^ƒXƒN—áŠOˆ—‹ÖŽ~ƒtƒ‰ƒO‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ
68 * IŠ„ž‚݃ƒbƒNó‘Ô‚Å”­¶‚µ‚½CPU—áŠO‚ł́CƒVƒXƒeƒ€ó‘Ԃ𐳂µ‚­“Ç
69 * ‚߂邱‚Æ‚ª•ÛØ‚³‚ê‚È‚¢‚½‚߁CƒeƒXƒg‚Å‚«‚È‚¢D
70 * (E) CPU—áŠOƒnƒ“ƒhƒ‰ƒŠƒ^[ƒ“Žž‚ÉCPUƒƒbƒNƒtƒ‰ƒO‚ªŒ³‚ɖ߂邱‚Æ
71 * ICPU—áŠOƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚Å‚«‚éê‡‚̂݃eƒXƒg‚·‚éD
72 * (F) CPU—áŠOƒnƒ“ƒhƒ‰ƒŠƒ^[ƒ“Žž‚ÉŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ªŒ³‚ɖ߂邱‚Æ
73 * ICPU—áŠOƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚Å‚«‚éê‡‚̂݃eƒXƒg‚·‚éD
74 * (G) CPU—áŠOƒnƒ“ƒhƒ‰ƒŠƒ^[ƒ“Žž‚ɃfƒBƒXƒpƒbƒ`‹ÖŽ~ƒtƒ‰ƒO‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ
75 * ICPU—áŠOƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚Å‚«‚éê‡‚̂݃eƒXƒg‚·‚éD
76 * (H) CPU—áŠOƒnƒ“ƒhƒ‰ƒŠƒ^[ƒ“Žž‚Ƀ^ƒXƒN—áŠOˆ—‹ÖŽ~ƒtƒ‰ƒO‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ
77 * ICPU—áŠOƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚Å‚«‚éê‡‚̂݃eƒXƒg‚·‚éD
78 * (I) xsns_xpn‚ªtrue‚ð•Ô‚·‚±‚Æ
79 * (J) xsns_dpn‚ªtrue‚ð•Ô‚·‚±‚Æ
80 *
81 * yŽg—pƒŠƒ\[ƒXz
82 *
83 * TASK1: TA_ACTC’†—Dæ“xCƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ““o˜^
84 * CPUEXC1: TA_NULL
85 * ALM1: TA_NULL
86 *
87 * yƒeƒXƒgƒV[ƒPƒ“ƒXz
88 *
89 * == TASK1i’†—Dæ“xj==
90 * 1: ó‘Ԃ̃`ƒFƒbƒN
91 * dis_dsp()
92 * ena_tex()
93 * 2: ó‘Ԃ̃`ƒFƒbƒN
94 * sta_alm(ALM1, 1U)
95 * ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰1‚ÌŽÀs‚ð‘Ò‚Â
96 * == ALM1 ==
97 * 3: ó‘Ԃ̃`ƒFƒbƒN
98 * SIL_LOC_INT()
99 * RAISE_CPU_EXCEPTION
100 * == CPUEXC1 ==
101 * 4: xsns_xpn() == true ... (I)
102 * xsns_dpn() == true ... (J)
103 * 5: CPU—áŠOƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚Å‚«‚È‚¢ê‡‚́C‚±‚±‚ŏI—¹
104 * 5: ƒŠƒ^[ƒ“
105 * == ALM1i‘±‚«j==
106 * 6: SIL_UNL_LOC()
107 * 7: ó‘Ԃ̃`ƒFƒbƒN ... (E)(G)(H)
108 * ƒŠƒ^[ƒ“
109 * == TASK1i‘±‚«j==
110 * 8: ó‘Ԃ̃`ƒFƒbƒN ... (F)
111 * 9: ƒeƒXƒgI—¹
112 */
113
114#include <sil.h>
115#include <kernel.h>
116#include <t_syslog.h>
117#include <test_lib.h>
118#include "kernel_cfg.h"
119#include "test_cpuexc.h"
120
121volatile bool_t alm1_flag = false;
122
123void
124task1(intptr_t exinf)
125{
126 ER ercd;
127
128 check_point(1);
129 check_state(false, false, TIPM_ENAALL, false, false, true);
130 ercd = dis_dsp();
131 check_ercd(ercd, E_OK);
132 ercd = ena_tex();
133 check_ercd(ercd, E_OK);
134
135 check_point(2);
136 check_state(false, false, TIPM_ENAALL, true, true, false);
137 ercd = sta_alm(ALM1, 1U);
138 check_ercd(ercd, E_OK);
139
140 while (!(alm1_flag));
141
142 check_point(8);
143 check_state(false, false, TIPM_ENAALL, true, true, false);
144
145 check_finish(9);
146}
147
148void
149tex_task1(TEXPTN texptn, intptr_t exinf)
150{
151 check_point(0);
152}
153
154void
155task2(intptr_t exinf)
156{
157 check_point(0);
158}
159
160void
161alarm1_handler(intptr_t exinf)
162{
163 SIL_PRE_LOC;
164
165 check_point(3);
166 check_state_i(true, false, true, true, false);
167 SIL_LOC_INT();
168 RAISE_CPU_EXCEPTION;
169
170 check_point(6);
171 SIL_UNL_INT();
172
173 check_point(7);
174 check_state_i(true, false, true, true, false);
175 alm1_flag = true;
176}
177
178void
179cpuexc_handler(void *p_excinf)
180{
181 check_point(4);
182 check_assert(xsns_xpn(p_excinf) == true);
183 check_assert(xsns_dpn(p_excinf) == true);
184
185#ifdef CANNOT_RETURN_CPUEXC
186 check_finish(5);
187#endif /* CANNOT_RETURN_CPUEXC */
188
189 check_point(5);
190}
Note: See TracBrowser for help on using the repository browser.