1 | TOPPERS Confidential
|
---|
2 | TOPPERSããã¸ã§ã¯ã ãã£ã¹ã«ãã·ã§ã³ã¡ã¢
|
---|
3 | é«å解è½ã¿ã¤ããç¨ããã·ã¹ãã æå»ç®¡çæ©è½ã®ãã¹ãæ¹æ³
|
---|
4 |
|
---|
5 | ä½æè
|
---|
6 | : é«ç°åºç« ï¼åå¤å±å¤§å¦ï¼
|
---|
7 | æçµæ´æ°: 2014å¹´5æ31æ¥
|
---|
8 |
|
---|
9 | âã¡ã¢ã®ä½ç½®ä»ã
|
---|
10 |
|
---|
11 | ãã®ããã¥ã¡ã³ãã¯ï¼é«å解è½ã¿ã¤ããç¨ããTOPPERS/ASP3ã«ã¼ãã«ã®ã·ã¹ã
|
---|
12 | ã æå»ç®¡çæ©è½ã®ãã¹ãæ¹æ³ã«é¢ãã¦æ¤è¨ãããã®ã§ããã
|
---|
13 |
|
---|
14 | âãã¹ãã®ã¢ããã¼ã
|
---|
15 |
|
---|
16 | é«å解è½ã¿ã¤ããç¨ãã¦å®ç¾ããã·ã¹ãã æå»ç®¡çæ©è½ã«é¢ãã網ç¾
|
---|
17 | çãªãã¹
|
---|
18 | ããè¡ãã«ã¯ï¼ã¿ã¼ã²ããã«æ¨æºã®é«å解è½ã¿ã¤ãã使ã£ã¦ãã¹ãããã ãã§
|
---|
19 | ã¯ä¸ååã§ï¼ãã¹ãç¨ã®é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ãç¨ãããã¨ãå¿
|
---|
20 | è¦ã§ããã
|
---|
21 | ãã¹ãç¨ã®é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã¯ï¼ãã¼ãã¦ã§ã¢ã¿ã¤ãã§ã¯ãªãï¼ãã¹
|
---|
22 | ããã¼ã¿ã«é§åããã¦åä½ãããã®ã§ããã
|
---|
23 |
|
---|
24 | ãã¹ãããã°ã©ã ã§ã¯ï¼é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®é¢æ°ãï¼ã©ã®ã¿ã¤ãã³ã°
|
---|
25 | ã§ã©ã®ãã©ã¡ã¼ã¿ã§å¼ã³åºãããããæ¤æ»ãããã¾ãï¼é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼
|
---|
26 | ã«ã®é¢æ°ãè¿ãå¤ãï¼ãã¹ããã¼ã¿ã¨ãªãã
|
---|
27 |
|
---|
28 | ããã§ï¼é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®é¢æ°ã®ä¸ã§ï¼ä»¥ä¸ã®3ã¤ã®é¢æ°ãï¼ãã¹ã
|
---|
29 | ããã°ã©ã å´ã§ç¨æãããã¨ã¨ããã
|
---|
30 |
|
---|
31 | HRTCNT target_hrt_get_current(void)
|
---|
32 | void target_hrt_set_event(HRTCNT hrtcnt)
|
---|
33 | void target_hrt_raise_event(void)
|
---|
34 |
|
---|
35 | é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®æ§è³ªã¯ï¼ä»¥ä¸ã®3ã¤ã®å®æ°ã§æ±ºå®ããããããã§ï¼
|
---|
36 | ãã®3ã¤ã®å®æ°ã®çµãè¤æ°ç¨æãã¦ããï¼ãã¹ãããã°ã©ã ã«ãã£ã¦å®æ°ã®çµã
|
---|
37 | åãæãããã¨ã«ããã
|
---|
38 |
|
---|
39 | TCYC_HRTCNT
|
---|
40 | TSTEP_HRTCNT
|
---|
41 | HRTCNT_BOUND
|
---|
42 |
|
---|
43 | âãã¹ãç¨ã®é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«
|
---|
44 |
|
---|
45 | ãã¹ãç¨ã®é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®å®ç¾ã¯ï¼ã©ããã¦ãã¿ã¼ã²ããã«ä¾å
|
---|
46 | ãã¦ãã¾ããå
|
---|
47 | ·ä½çã«ã¯ï¼ãã¹ãããã°ã©ã ããã¿ã¤ãå²è¾¼ã¿ããããå¦çã
|
---|
48 | ã¿ã¼ã²ããã«ä¾åããããããªããããã«å¯¾ãã¦ï¼2ã¤ã®å¯¾å¿æ¡ãèããããã
|
---|
49 |
|
---|
50 | (æ¡1) ãã®ãã¹ãç¨ã®ã¿ã¼ã²ããä¾åé¨ãä½æããã
|
---|
51 |
|
---|
52 | (æ¡2) æ¢åã®ã¿ã¼ã²ããä¾åé¨ãæä¾ããã¿ã¤ããã©ã¤ãä¸ãï¼æ¡ä»¶ã³ã³ãã¤
|
---|
53 | ã«ã«ããï¼ãã®ãã¹ããè¡ãããã®ã¿ã¼ã²ããä¾åé¨ãä½ããããã«ããã
|
---|
54 |
|
---|
55 | ã©ã¡ãã®æ¡ãæåã§ã¯ãããï¼ãã¹ãã®ããã«ã¿ã¼ã²ããä¾åé¨ãè¤éåãã
|
---|
56 | ãã®ãé¿ããã¨ãã観ç¹ããï¼æ¡1ã§é²ãããã¨ã¨ãããå
|
---|
57 | ·ä½çã«ã¯ï¼Mac OS
|
---|
58 | Xä¸ã§ã·ã¹ãã æå»ç®¡çæ©è½ãã¹ããè¡ãããã®ã¿ã¼ã²ããä¾åé¨ã¨ãã¦ï¼
|
---|
59 | test_hrt_macosx_gccãä½ãã
|
---|
60 |
|
---|
61 | é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®é¢æ°ã®ä¸ã§ï¼ä»¥ä¸ã®2ã¤ã®é¢æ°ã¯ï¼ãã¹ãç¨ã®é«å
|
---|
62 | 解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®ä¸ã§å®è£
|
---|
63 | ããã
|
---|
64 |
|
---|
65 | void target_hrt_initialize(intptr_t exinf)
|
---|
66 | void target_hrt_terminate(intptr_t exinf)
|
---|
67 |
|
---|
68 | ã¾ãï¼ãã¹ãããã°ã©ã ããã¿ã¤ãå²è¾¼ã¿ããããããã«ï¼ä»¥ä¸ã®é¢æ°ãï¼ã
|
---|
69 | ã¹ãç¨ã®é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®ä¸ã§å®è£
|
---|
70 | ããã
|
---|
71 |
|
---|
72 | void target_raise_hrt_int(uint_t timing)
|
---|
73 |
|
---|
74 | ãã®é¢æ°ã¯ï¼ãã¹ãããã°ã©ã ããç´æ¥å¼ã³åºãããã®ãã®ã§ï¼timingã0Uã®
|
---|
75 | å ´åã«ã¯å¼ã³åºããç´å¾ã«ï¼1Uã®å ´åã«ã¯ä¸å®æéï¼ãã¹ãããã°ã©ã ã®å¦ç
|
---|
76 | ãè½ã¡çãæéï¼å¾ã«ï¼é«å解è½ã¿ã¤ãå²è¾¼ã¿ï¼ã¾ãã¯ï¼ããã模æ¬ãããã
|
---|
77 | ã®å²è¾¼ã¿ï¼ãçºçãããã
|
---|
78 |
|
---|
79 | ããã«ï¼é«å解è½ã¿ã¤ãå²è¾¼ã¿ï¼ã¾ãã¯ï¼ããã模æ¬ããããã®å²è¾¼ã¿ï¼ãå¦
|
---|
80 | çããå²è¾¼ã¿ãã³ãã©ï¼ã¾ãã¯ï¼å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ãï¼ãã¹ãç¨ã®é«
|
---|
81 | å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®ä¸ã§å®è£
|
---|
82 | ããã
|
---|
83 |
|
---|
84 | âé«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®æ§è³ª
|
---|
85 |
|
---|
86 | é«å解è½ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®æ§è³ªã決å®ãã3ã¤ã®å®æ°ã®çµã¨ãã¦ï¼ä»¥ä¸ãç¨æ
|
---|
87 | ãããã©ããç¨ãããã¯ï¼ã³ã³ãã¤ã«ãªãã·ã§ã³ã«-DHRT_CONFIGnãä»ãããã¨
|
---|
88 | ã§æ±ºå®ãããã®ã¨ããã
|
---|
89 |
|
---|
90 | (1) 1μç§æ¯ã«ã«ã¦ã³ãã¢ãããã32ãããã¿ã¤ã
|
---|
91 |
|
---|
92 | #ifdef HRT_CONFIG1
|
---|
93 | #undef TCYC_HRTCNT /* 2^32 */
|
---|
94 | #define TSTEP_HRTCNT 1U
|
---|
95 | #define HRTCNT_BOUND 4000000002U
|
---|
96 | #endif /* HRT_CONFIG1 */
|
---|
97 |
|
---|
98 | â» HRTCNT_BOUNDã400000002Uï¼ï¼TMAX_RELTIMï¼TSTEP_HRTCNTï¼1ï¼ä»¥ä¸ã«ãã¦
|
---|
99 | ããã¨ï¼æå¾ã®ï¼1ã¯ï¼ããªãã調æ´æ©è½ã§ç«¯æ°ãåãä¸ããåï¼ï¼é常ã®
|
---|
100 | ç¶æ³ã§é«å解è½ã¿ã¤ãã«è¨å®ããç¸å¯¾ã«ã¦ã³ãå¤ãHRTCNT_BOUNDãè¶
|
---|
101 | ããã
|
---|
102 | ã¨ã¯ãªãï¼ã ããªã¿ã¤ãå²è¾¼ã¿ãæ¸ãããã
|
---|
103 |
|
---|
104 | (2) 10μæ¯ã«ã«ã¦ã³ãã¢ãããã16ãããã¿ã¤ã
|
---|
105 |
|
---|
106 | #ifdef HRT_CONFIG2
|
---|
107 | #define TCYC_HRTCNT (0x10000U * 10U)
|
---|
108 | #define TSTEP_HRTCNT 10U
|
---|
109 | #define HRTCNT_BOUND (0x10000U * 9U)
|
---|
110 | #endif /* HRT_CONFIG2 */
|
---|
111 |
|
---|
112 | âãã¹ãã·ã¼ã±ã³ã¹ã®è¨è¿°æ¹æ³
|
---|
113 |
|
---|
114 | â第1次æ¡
|
---|
115 |
|
---|
116 | ç¾å¨ã®ãã¹ãã·ã¼ã±ã³ã¹ã®è¨è¿°æ¹æ³ã«ï¼ã«ã¼ãã«ã®å¦çåä½ã«å ãã¦ï¼ä»¥ä¸ã®
|
---|
117 | 3ã¤ã®é¢æ°ãè¨è¿°ã§ããæ©è½ã追å ããã
|
---|
118 |
|
---|
119 | HRTCNT target_hrt_get_current(void)
|
---|
120 | void target_hrt_set_event(HRTCNT hrtcnt)
|
---|
121 | void target_hrt_raise_event(void)
|
---|
122 |
|
---|
123 | ããã«ããï¼æ¬¡ã®ãããªè¨è¿°ãå¯è½ã«ãªãã
|
---|
124 |
|
---|
125 | == target_hrt_get_current-1ï¼1åç®ï¼==
|
---|
126 | 1: RETURN(10U)
|
---|
127 | == target_hrt_set_event-1ï¼1åç®ï¼==
|
---|
128 | 2: assert(hrtcnt == HRTCNT_BOUND)
|
---|
129 | RETURN
|
---|
130 | == TASK1ï¼åªå
|
---|
131 | 度ï¼ä¸ï¼==
|
---|
132 | 3: sta_alm(ALM1, 100U)
|
---|
133 | == target_hrt_get_current-2ï¼2åç®ï¼==
|
---|
134 | 4: RETURN(20U)
|
---|
135 | == target_hrt_set_event-2ï¼2åç®ï¼==
|
---|
136 | 5: assert(hrtcnt == 101U)
|
---|
137 | RETURN
|
---|
138 | == TASK1ï¼ç¶ãï¼==
|
---|
139 | 6: DO(target_raise_hrt_int(1U))
|
---|
140 | slp_tsk()
|
---|
141 | == target_hrt_get_current-3ï¼3åç®ï¼==
|
---|
142 | 7: RETURN(130U)
|
---|
143 | == ALM1-1ï¼1åç®ï¼==
|
---|
144 | 8: wup_tsk(TASK1)
|
---|
145 | RETURN
|
---|
146 | == target_hrt_get_current-4ï¼4åç®ï¼==
|
---|
147 | 9: RETURN(140U)
|
---|
148 | == target_hrt_set_event-3ï¼3åç®ï¼==
|
---|
149 | 10: assert(hrtcnt == HRTCNT_BOUND)
|
---|
150 | RETURN
|
---|
151 | == TASK1ï¼ç¶ãï¼==
|
---|
152 | 11: END
|
---|
153 |
|
---|
154 | ããã§ãã¹ãã·ã¼ã±ã³ã¹ã®è¨è¿°ã¯å¯è½ã§ãããï¼è¨è¿°ãããªãåé·ã§ï¼ä½æã»
|
---|
155 | ä¿å®ãé¢åã§ãããå
|
---|
156 | ·ä½çã«ã¯ï¼æ¬¡ã®åé¡ãæãããã¨ãã§ããã
|
---|
157 |
|
---|
158 | (a) é¢æ°ã®ä½åç®ã®å¼ã³åºãã§ããããï¼æåã§è¨è¿°ããå¿
|
---|
159 | è¦ãããã
|
---|
160 |
|
---|
161 | (b) target_hrt_get_currentã®ä¸ã¯ãRETURN(N)ãï¼target_hrt_set_eventã®ä¸
|
---|
162 | ã¯ãassert(hrtcnt == N)ããRETURNãã¨æ±ºã¾ã£ã¦ããã«ããããããï¼æ¯
|
---|
163 | åè¨è¿°ããå¿
|
---|
164 | è¦ãããã
|
---|
165 |
|
---|
166 | â第2次æ¡
|
---|
167 |
|
---|
168 | (a)ã®åé¡ã解決ããããã«ï¼ä½åç®ã®å¼ã³åºãã§ããããèªåçã«æ±ºãã¦ãã
|
---|
169 | ãè¨è¿°æ¹æ³ãç¨æãããä½åç®ã®å¼ã³åºãã§ããããå¤æ°ã§ç®¡çãï¼RETURNã
|
---|
170 | ããã¨ãã®å¤æ°ãã¤ã³ã¯ãªã¡ã³ãããã
|
---|
171 |
|
---|
172 | å
|
---|
173 | ·ä½çãªè¨è¿°æ¹æ³ã¯æ¬¡ã®éãã
|
---|
174 |
|
---|
175 | == target_hrt_get_current-N ==
|
---|
176 | 1: RETURN(10U)
|
---|
177 | == target_hrt_set_event-N ==
|
---|
178 | 2: assert(hrtcnt == HRTCNT_BOUND)
|
---|
179 | RETURN
|
---|
180 | == TASK1ï¼åªå
|
---|
181 | 度ï¼ä¸ï¼==
|
---|
182 | 3: sta_alm(ALM1, 100U)
|
---|
183 | == target_hrt_get_current-N ==
|
---|
184 | 4: RETURN(20U)
|
---|
185 | == target_hrt_set_event-N ==
|
---|
186 | 5: assert(hrtcnt == 101U)
|
---|
187 | RETURN
|
---|
188 | ï¼ä»¥ä¸ç¥ï¼
|
---|
189 |
|
---|
190 | â第3次æ¡
|
---|
191 |
|
---|
192 | (b)ã®åé¡ãæ¹åããè¨è¿°æ¹æ³ã¨ãã¦ï¼ä»¥ä¸ã®ãããªè¨è¿°æ¹æ³ãå°å
|
---|
193 | ¥ããã
|
---|
194 |
|
---|
195 | == START ==
|
---|
196 | 1: [target_hrt_get_current -> 10U]
|
---|
197 | 2: [target_hrt_set_event <- HRTCNT_BOUND]
|
---|
198 | == TASK1ï¼åªå
|
---|
199 | 度ï¼ä¸ï¼==
|
---|
200 | 3: sta_alm(ALM1, 100U)
|
---|
201 | 4: [target_hrt_get_current -> 20U]
|
---|
202 | 5: [target_hrt_set_event <- 101U]
|
---|
203 | 6: DO(target_raise_hrt_int(1U))
|
---|
204 | slp_tsk()
|
---|
205 | == HRT_HANDLER ==
|
---|
206 | 7: [target_hrt_get_current -> 130U]
|
---|
207 | == ALM1-1ï¼1åç®ï¼==
|
---|
208 | 8: wup_tsk(TASK1)
|
---|
209 | RETURN
|
---|
210 | 9: [target_hrt_get_current -> 140U]
|
---|
211 | 10: [target_hrt_set_event <- HRTCNT_BOUND]
|
---|
212 | == TASK1ï¼ç¶ãï¼==
|
---|
213 | 11: END
|
---|
214 |
|
---|
215 | æåã®ã== START ==ãã¯ï¼ãã¹ãã·ã¼ã±ã³ã¹ã®éå§ãç¥ãããããã«å¿
|
---|
216 | è¦ã§ã
|
---|
217 | ããéä¸ã®ã== HRT_HANDLER ==ãã¯ï¼ãã¹ãã·ã¼ã±ã³ã¹ãèªã¿ããããããã
|
---|
218 | ã®ãã®ã§ããï¼ãªãã¦ãå·®ãæ¯ããªãã
|
---|
219 |
|
---|
220 | ãã®è¨è¿°ã§ã¯ï¼target_hrt_get_currentã¨ãã¦åã«æå®ããå¤ããªã¿ã¼ã³ãã
|
---|
221 | ã ãï¼target_hrt_set_eventã¨ãã¦åã«ãã©ã¡ã¼ã¿ã®å¤ããã§ãã¯ãã¦ãªã¿ã¼
|
---|
222 | ã³ããã ãã®ã³ã¼ãããçæã§ããªãããã®ä»ã®ã³ã¼ããåºãããå ´åã«ã¯ï¼
|
---|
223 | 第1次æ¡ã¾ãã¯ç¬¬2次æ¡ã®è¨è¿°æ¹æ³ã使ãå¿
|
---|
224 | è¦ãããã
|
---|
225 |
|
---|
226 | 以ä¸
|
---|