| 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 | 以ä¸
|
---|