[136] | 1 | =====================================================================
|
---|
| 2 | ARM-Mããã»ããµä¾åé¨
|
---|
| 3 | Last Modified:2015 Nov 23 09:31:43
|
---|
| 4 | =====================================================================
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | (1) 対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã ã®ç¨®é¡ã»æ§æ
|
---|
| 8 |
|
---|
| 9 | ARM-Mä¾åé¨ã¯ï¼ARMvx-Mã¢ã¼ããã¯ãã£ãã¿ã¼ã²ããã¨ãã¦ããï¼ARMvx-Mã¯ï¼
|
---|
| 10 | ARMã¨ã¯ç°ãªãï¼ARMå½ä»¤ãå®è¡ã§ããªãããï¼ARMä¾åé¨ã¨åãã¦ããï¼ç¾ç¶
|
---|
| 11 | ãµãã¼ããã¦ããã³ã¢ã¯æ¬¡ã®éãã§ããï¼
|
---|
| 12 |
|
---|
| 13 | ã»Cortex-M0
|
---|
| 14 | ã»Cortex-M0+
|
---|
| 15 | ã»Cortex-M3
|
---|
| 16 | ã»Cortex-M4
|
---|
| 17 |
|
---|
| 18 | (2) 使ç¨ããéçºç°å¢ã¨åä½æ¤è¨¼ããæ¡ä»¶ï¼ãã¼ã¸ã§ã³ï¼ãªãã·ã§ã³çï¼
|
---|
| 19 |
|
---|
| 20 | ã«ã¼ãã«ã¯GCCãç¨ãã¦ã³ã³ãã¤ã«ããï¼åä½ç¢ºèªãããã¼ã¸ã§ã³ã¯åã¿ã¼ã²
|
---|
| 21 | ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼
|
---|
| 22 |
|
---|
| 23 |
|
---|
| 24 | (3) ã¿ã¼ã²ããå®ç¾©äºé
|
---|
| 25 | ã®è¦å®
|
---|
| 26 |
|
---|
| 27 | (3-1) ãã¼ã¿åã«é¢ããè¦å®
|
---|
| 28 |
|
---|
| 29 | ãã¼ã¿å㯠arch/gcc/tool_stddef.h ã§å®ç¾©ããã¦ããå
|
---|
| 30 | 容ã§ï¼floatåã¨
|
---|
| 31 | doubleåã¯ï¼ããããIEEE754æºæ ã®å精度浮åå°æ°ç¹æ°ã¨å精度浮åå°æ°ç¹
|
---|
| 32 | æ°ã§ããï¼
|
---|
| 33 |
|
---|
| 34 | (3-2) å²è¾¼ã¿å¦çã«é¢ããè¦å®
|
---|
| 35 |
|
---|
| 36 | âå²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã®å²å½ã¦ï¼ä¸¡è
|
---|
| 37 | ã®å¯¾å¿
|
---|
| 38 |
|
---|
| 39 | å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã¯ï¼ä¾å¤çºçæã«IPSRã«ã»ãããããä¾å¤çª
|
---|
| 40 | å·ãç¨ããï¼SYSTICKã¯15çªã§ï¼å¤é¨å²è¾¼ã¿ã¯16çªããã®çªå·ãå²ãä»ããã
|
---|
| 41 | ã¦ããï¼
|
---|
| 42 |
|
---|
| 43 | âå²è¾¼ã¿åªå
|
---|
| 44 | 度ã®æ®µéæ°ã¨TMIN_INTPRIã®å¤
|
---|
| 45 |
|
---|
| 46 | å²è¾¼ã¿åªå
|
---|
| 47 | 度ã®æ®µéæ°ã¯ï¼SoCæ¯ã«ãã¼ãã¦ã§ã¢çã«ãµãã¼ãããå²è¾¼ã¿åªå
|
---|
| 48 |
|
---|
| 49 | 度ãããå¹
|
---|
| 50 | ãç°ãªãã®ã§ï¼ã¿ã¼ã²ããä¾åé¨æ¯ã«ç°ãªãï¼ã¿ã¼ã²ããä¾åé¨ã§
|
---|
| 51 | ã¯ï¼å²è¾¼ã¿åªå
|
---|
| 52 | 度ã®ãããå¹
|
---|
| 53 | ï¼TBITW_IPRIï¼ã¨ãã®å²è¾¼ã¿åªå
|
---|
| 54 | 度ä¸ã®ãµãåªå
|
---|
| 55 |
|
---|
| 56 | 度ã®ãããå¹
|
---|
| 57 | ï¼TBITW_SUBPRIï¼ãå®ç¾©ããï¼
|
---|
| 58 |
|
---|
| 59 | åãããå¹
|
---|
| 60 | ã®å¤ã¨CFG_INTã§ä½¿ç¨å¯è½ãªå²è¾¼ã¿åªå
|
---|
| 61 | 度ã®ç¯å²ã¯æ¬¡ã®éãã§ããï¼
|
---|
| 62 |
|
---|
| 63 | -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI) ï½ -1
|
---|
| 64 |
|
---|
| 65 | ä¾ãã°åªå
|
---|
| 66 | 度ã®ãããå¹
|
---|
| 67 | (TBITW_IPRI)ã8bitï¼ãµãåªå
|
---|
| 68 | 度ã®ãããå¹
|
---|
| 69 |
|
---|
| 70 | (TBITW_SUBIPRI) ã1bitã®å ´åã¯ï¼-254 ï½ -1 ã®ç¯å²ã§ããï¼
|
---|
| 71 |
|
---|
| 72 | åªå
|
---|
| 73 | 度ã®ãããå¹
|
---|
| 74 | (TBITW_IPRI)ã3bitï¼ãµãåªå
|
---|
| 75 | 度ã®ãããå¹
|
---|
| 76 | (TBITW_SUBIPRI)
|
---|
| 77 | ã0bitã®å ´åã¯ï¼-8 ï½ -1 ã®ç¯å²ã§ããï¼
|
---|
| 78 |
|
---|
| 79 | æ大åªå
|
---|
| 80 | 度(3bitã®ä¾ã§ã¯-8)ã¯ï¼å
|
---|
| 81 | é¨åªå
|
---|
| 82 | 度ã¨ãã¦ã¯"0x00"ã¨ãªãï¼ãã®åªå
|
---|
| 83 |
|
---|
| 84 | 度ã¯CPUããã¯ã§ç¨ããBASEPRIã¬ã¸ã¹ã¿ã§ã¯ãã¹ã¯ã§ããªãããï¼ã«ã¼ãã«ç®¡
|
---|
| 85 | çå
|
---|
| 86 | ã®å²è¾¼ã¿ã®æé«åªå
|
---|
| 87 | 度ï¼TMIN_INTPRIï¼ã¯ï¼æ大å¤ãã1ã¤åªå
|
---|
| 88 | 度ãä½ãå¤
|
---|
| 89 | 以ä¸ã®å¤ãæå®ããï¼
|
---|
| 90 |
|
---|
| 91 | ãã®ç¯å²ã§ï¼ã«ã¼ãã«ç®¡çå
|
---|
| 92 | ã®å²è¾¼ã¿ã®æé«åªå
|
---|
| 93 | 度ï¼TMIN_INTPRIï¼ãã¿ã¼ã²
|
---|
| 94 | ããä¾åé¨ã§è¨å®ããï¼
|
---|
| 95 |
|
---|
| 96 | âdis_intã¨ena_intã®ãµãã¼ãã®æç¡ï¼ãã®å¶éäºé
|
---|
| 97 |
|
---|
| 98 |
|
---|
| 99 | dis_intã¨ena_intããµãã¼ãããï¼å¶éäºé
|
---|
| 100 | ã¯ç¹ã«ãªãï¼
|
---|
| 101 |
|
---|
| 102 | âCFG_INTã®å¶éäºé
|
---|
| 103 | ã¨æ¡å¼µï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨ã§ããå²è¾¼ã¿å±æ§ï¼
|
---|
| 104 |
|
---|
| 105 | CFG_INTã®å¶éäºé
|
---|
| 106 | ã¯ãªãï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨å¯è½ãªå²è¾¼ã¿å±æ§ã¯ç¹ã«ãª
|
---|
| 107 | ãï¼
|
---|
| 108 |
|
---|
| 109 | âã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿
|
---|
| 110 |
|
---|
| 111 | ARMv7-Mã§ã¯ï¼ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ãããï¼æå®æ¹æ³ã¯ï¼å²è¾¼ã¿
|
---|
| 112 | åªå
|
---|
| 113 | 度ã®æ®µéæ°ã§æå®ããï¼ãµãã¼ãããå²è¾¼ã¿åªå
|
---|
| 114 | 度ã®æé«å¤ï¼æå°å¤ï¼ã
|
---|
| 115 | ãï¼TMIN_INTPRIã®å¤ã大ããï¼åªå
|
---|
| 116 | 度ãä½ãï¼è¨å®ããã¨ï¼TMIN_INTPRIãã
|
---|
| 117 | å¤ãå°ãï¼é«åªå
|
---|
| 118 | 度ï¼ãªå²è¾¼ã¿åªå
|
---|
| 119 | 度ãè¨å®ããå²è¾¼ã¿ãå²è¾¼ã¿åªå
|
---|
| 120 | 度ã¨ãã¦
|
---|
| 121 | æ±ãï¼
|
---|
| 122 |
|
---|
| 123 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¯OSå®è¡ä¸ãç¦æ¢ã«ãªããã¨ã¯ãªãï¼å³å¯ã«ã¯å²è¾¼ã¿
|
---|
| 124 | ã®åºå£ã§ããçãåºéç¦æ¢ãããï¼ï¼å²è¾¼ã¿çºçæã¯ï¼ã«ã¼ãã«ã®ã³ã¼ããçµ
|
---|
| 125 | ç±ããã«å¼ã³åºãããï¼
|
---|
| 126 |
|
---|
| 127 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã«å¯¾ããï¼DEF_INH,CFG_INTã¯ãµãã¼ãããï¼
|
---|
| 128 |
|
---|
| 129 | (3-3) CPUä¾å¤å¦çã«é¢ããè¦å®
|
---|
| 130 |
|
---|
| 131 | âCPUä¾å¤ãã³ãã©çªå·
|
---|
| 132 |
|
---|
| 133 | CPUä¾å¤ãã³ãã©çªå·ã¨ãã¦ã¯ï¼ä¾å¤çºçæã«IPSRã«ã»ãããããï¼ä¾å¤çªå·
|
---|
| 134 | ãç¨ããï¼åä¾å¤ã®ä¾å¤çªå·ã¯ä»¥ä¸ã®éãã§ããï¼
|
---|
| 135 |
|
---|
| 136 | ä¾å¤ ä¾å¤çªå·
|
---|
| 137 | Reset 1
|
---|
| 138 | Non-makable Interrupt 2
|
---|
| 139 | Hard Fault 3
|
---|
| 140 | Memory Management 4
|
---|
| 141 | Bus Fault 5
|
---|
| 142 | Usage Fault 6
|
---|
| 143 | SVCall 11
|
---|
| 144 | Debug Monitor 12
|
---|
| 145 | PendSV 14
|
---|
| 146 |
|
---|
| 147 | ãªãï¼Resetã¨ï¼SVCall(ARMv7-M)ï¼PendSV(ARMv6-M)ã«ã¤ãã¦ã¯ï¼ã«ã¼ãã«ã
|
---|
| 148 | 使ç¨ããããï¼ã¦ã¼ã¶ã¼ã¯ä½¿ç¨ãããã¨ãã§ããªãï¼
|
---|
| 149 |
|
---|
| 150 | ARM-Mã¢ã¼ããã¯ãã£ã§ã¯CPUä¾å¤ã«åªå
|
---|
| 151 | 度ãè¨å®ãããã¨ãå¯è½ã§ããï¼
|
---|
| 152 | ARM-Mä¾åé¨ã§ã¯ï¼å
|
---|
| 153 | ¨ã¦ã®CPUä¾å¤ã®åªå
|
---|
| 154 | 度ãCPUããã¯ã§ã¯ãã¹ã¯ã§ããªãã
|
---|
| 155 | ã¹ã¯åºæ¥ãªãå¤ï¼å
|
---|
| 156 | é¨åªå
|
---|
| 157 | 度0ï¼ã«åæåãã¦ããï¼
|
---|
| 158 |
|
---|
| 159 | (3-4) CPUããã¯ã»å²è¾¼ã¿ããã¯
|
---|
| 160 |
|
---|
| 161 | ARMv7-Mã§ã¯ï¼CPUããã¯ã¯ï¼basepriãTMIN_INTPRIã®åªå
|
---|
| 162 | 度ã®å²è¾¼ã¿ãç¦æ¢ã
|
---|
| 163 | ãå¤ã«è¨å®ããï¼å²è¾¼ã¿ããã¯ã¯ï¼FAULTMASKã'1'ã«è¨å®ãããã¨ã§å®ç¾ãã¦ã
|
---|
| 164 | ãï¼
|
---|
| 165 |
|
---|
| 166 | ARMv6-Mã§ã¯ï¼CPUããã¯/å²è¾¼ã¿ããã¯å
|
---|
| 167 | ±ã«PRIMASKã«ããå®ç¾ãã¦ããï¼
|
---|
| 168 |
|
---|
| 169 | (3-5) æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç
|
---|
| 170 | §ã«é¢ããè¦å®
|
---|
| 171 |
|
---|
| 172 | get_utmããµãã¼ãããï¼ç²¾åº¦ã«é¢ãã¦ã¯ï¼ã¿ã¼ã²ããæ¯ã«ç°ãªãï¼
|
---|
| 173 |
|
---|
| 174 | (3-6) ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã®åæåå
|
---|
| 175 | 容
|
---|
| 176 |
|
---|
| 177 | ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã¯ï¼Threadã¢ã¼ãã§å¼ã³åºããããã¨ãåæã¨ãã¦ã
|
---|
| 178 | ãï¼å®è¡å¾ï¼å²è¾¼ã¿ããã¯ç¶æ
|
---|
| 179 | ã¨ããï¼å²è¾¼ã¿ããã¯ç¶æ
|
---|
| 180 | ã¯ï¼ã«ã¼ãã«ã®åæ
|
---|
| 181 | åçµäºæã«è¨±å¯ããï¼ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ï¼MSPãã¢ã¯ãã£ããªã¹ã¿ã
|
---|
| 182 | ã¯ã¨ãï¼MSPã®å
|
---|
| 183 | 容ãåæåããããã«ã¯ï¼INIT_MSPãã¿ã¼ã²ããä¾åé¨ã§å®
|
---|
| 184 | 義ããï¼
|
---|
| 185 |
|
---|
| 186 | (3-7) ãã¯ã¿ãã¼ãã«ãªãã»ããã®åæå
|
---|
| 187 |
|
---|
| 188 | ããã»ããµä¾åã®åæåå¦çã§ï¼Vector Table Offset Register ãã¿ã¼ã²ã
|
---|
| 189 | ãä¾åé¨ã®åæåã«ã¼ãã³ã§è¨å®ããï¼ãªãï¼ãã¯ã¿ã¼ãã¼ãã«ã¯ï¼.vector
|
---|
| 190 | ã®ã»ã¯ã·ã§ã³å±æ§ãä»å ããã¦ããããï¼ãªã³ã«ã¹ã¯ãªããã§ãã®ã»ã¯ã·ã§ã³
|
---|
| 191 | ãæå®ãã¦é
|
---|
| 192 | ç½®ããï¼
|
---|
| 193 |
|
---|
| 194 |
|
---|
| 195 | (4) ã¿ã¤ããã©ã¤ãé¢é£ã®æ
|
---|
| 196 | å ±
|
---|
| 197 |
|
---|
| 198 | ã«ã¼ãã«ã®ã¿ã¤ã ãã£ãã¯ã¨ãã¦ï¼SYSTICã使ç¨ããå ´åã¯ï¼core_config.c
|
---|
| 199 | ãã³ã³ãã¤ã«å¯¾è±¡ã¨ãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã« core_config.cfg
|
---|
| 200 | ãæå®ãããã¨ï¼
|
---|
| 201 |
|
---|
| 202 | å¨æã®åºæ¬ã¯1msecã¨ããï¼å¨æãCALIBRATIONã¬ã¸ã¹ã¿ã®è¨å®å
|
---|
| 203 | 容ãå
|
---|
| 204 | ã«è¨ç®
|
---|
| 205 | ããå ´åã¯ï¼SYSTIC_USE_CALIBRATION ãå®ç¾©ããï¼CALIBRATIONã¬ã¸ã¹ã¿ãç¨
|
---|
| 206 | ããªãå ´åã¯ï¼1msecå¨æåã®ã«ã¦ã³ãå¤ã TIMER_CLOCK ã«è¨å®ããï¼ã¯ãã
|
---|
| 207 | ã¯ã½ã¼ã¹ã¨ãã¦ï¼å¤é¨ã¯ããã¯ãç¨ããå ´åã¯ï¼SYSTIC_USE_STCLK ãç¨ããï¼
|
---|
| 208 |
|
---|
| 209 |
|
---|
| 210 | (5) ã¿ã¼ã²ããä¾åé¨ã§ã®è¨å®é
|
---|
| 211 | ç®
|
---|
| 212 |
|
---|
| 213 | ã¿ã¼ã²ããä¾åé¨ã§ã¯ä»¥ä¸ã®ãã¯ããå®ç¾©ããå¿
|
---|
| 214 | è¦ãããï¼
|
---|
| 215 |
|
---|
| 216 | ï½¥TMAX_INTNO : å²è¾¼ã¿çªå·ã®æ大å¤(é常ã®å²è¾¼ã¿çªå· + 15)
|
---|
| 217 | ï½¥TBITW_IPRI : å²è¾¼ã¿åªå
|
---|
| 218 | 度ã®ãããå¹
|
---|
| 219 |
|
---|
| 220 | ï½¥TBITW_SUBIPRI : å²è¾¼ã¿åªå
|
---|
| 221 | 度ã®ãããå¹
|
---|
| 222 | ä¸ã®ãµãåªå
|
---|
| 223 | 度ã®ãããå¹
|
---|
| 224 |
|
---|
| 225 | ï½¥TMIN_INTPRI : å²è¾¼ã¿åªå
|
---|
| 226 | 度ã®æå°å¤ï¼æé«å¤ï¼
|
---|
| 227 | ï½¥TIC_NUME : ã¿ã¤ã ãã£ãã¯ã®å¨æã®åå
|
---|
| 228 | ï½¥TIC_DENO : ã¿ã¤ã ãã£ãã¯ã®å¨æã®åæ¯
|
---|
| 229 | ï½¥TIMER_CLOCK : ã¿ã¤ãå¤ã®å
|
---|
| 230 | é¨è¡¨ç¾ã¨ããªç§åä½ã¨ã®å¤æ
|
---|
| 231 | ï½¥INTPRI_TIMER : ã¿ã¤ãå²è¾¼ã¿å²è¾¼ã¿åªå
|
---|
| 232 | 度
|
---|
| 233 | ï½¥INTATR_TIMER : ã¿ã¤ãå²è¾¼ã¿ã®å²è¾¼ã¿å±æ§
|
---|
| 234 | ï½¥INIT_MSP : ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§MSPãåæåããå ´åã¯å®ç¾©
|
---|
| 235 | ï½¥DEFAULT_ISTKSZ : ã¹ã¿ãã¯ãµã¤ãºï¼8byteåä½ã§æå®ï¼
|
---|
| 236 | ï½¥SIL_DLY_TIM1 : å¾®å°æéå¾
|
---|
| 237 | ã¡ã®ããã®å®ç¾©
|
---|
| 238 | ï½¥SIL_DLY_TIM2 : å¾®å°æéå¾
|
---|
| 239 | ã¡ã®ããã®å®ç¾©
|
---|
| 240 |
|
---|
| 241 | ã¿ã¼ã²ããä¾åé¨ã®Makefileã§ã¯ä»¥ä¸ãå®ç¾©ããå¿
|
---|
| 242 | è¦ãããï¼
|
---|
| 243 |
|
---|
| 244 | ã»CORE_TYPE : ã³ã¢ã®ç¨®é¡
|
---|
| 245 | CORTEX_M4/CORTEX_M3/CORTEX_M0/CORTEX_M0PLUS/
|
---|
| 246 | ã»FPU_USAGE : FPUã使ç¨ããå ´åã«ããããã«å®ç¾©ï¼
|
---|
| 247 | FPU_NO_PRESERV : ã³ã³ããã¹ãä¿åãªã
|
---|
| 248 | FPU_NO_LAZYSTACKING : ã³ã³ããã¹ãä¿åãã
|
---|
| 249 | FPU_LAZYSTACKING : ã³ã³ããã¹ãä¿åãã(Lazy stacking)
|
---|
| 250 | ã»FPU_ABI : FPU使ç¨æã®ABIãããããæå®
|
---|
| 251 | softfp : float/dobuleã®å¼æ°ã®åã渡ãã«ä¸è¬ã¬ã¸ã¹ã¿ã使ç¨
|
---|
| 252 | hard : float/dobuleã®å¼æ°ã®åã渡ãã«FPUã¬ã¸ã¹ã¿ã使ç¨
|
---|
| 253 |
|
---|
| 254 | (6) ãã®ä»
|
---|
| 255 |
|
---|
| 256 | (6-1) Configureation and Control Register(CCR)ã®STKALIGNã®å¶é
|
---|
| 257 |
|
---|
| 258 | ã·ã¹ãã èµ·åå¾ï¼æ£ç¢ºã«ã¯OSã®åæåçµäºå¾ï¼ã¯CCRã®STKALIGNã®è¨å®ã¯ï¼å¤
|
---|
| 259 | æ´ããªããã¨ï¼
|
---|
| 260 |
|
---|
| 261 |
|
---|
| 262 | (7) ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ
|
---|
| 263 | ./arch/arm_m_gcc/common
|
---|
| 264 | ./Makefile.core
|
---|
| 265 | ./arm_m.h
|
---|
| 266 | ./makeoffset.c
|
---|
| 267 | ./core.tf
|
---|
| 268 | ./core_cfg1_out.h
|
---|
| 269 | ./core_check.tf
|
---|
| 270 | ./core_config.c
|
---|
| 271 | ./core_config.h
|
---|
| 272 | ./core_def.csv
|
---|
| 273 | ./core_insn.h
|
---|
| 274 | ./core_kernel.h
|
---|
| 275 | ./core_rename.def
|
---|
| 276 | ./core_rename.h
|
---|
| 277 | ./core_sil.h
|
---|
| 278 | ./core_stddef.h
|
---|
| 279 | ./core_support.S
|
---|
| 280 | ./core_test.h
|
---|
| 281 | ./core_timer.c
|
---|
| 282 | ./core_timer.cfg
|
---|
| 283 | ./core_timer.h
|
---|
| 284 | ./core_unrename.h
|
---|
| 285 | ./core_user.txt
|
---|
| 286 | ./start.S
|
---|
| 287 |
|
---|
| 288 | (8)ARMCCå
|
---|
| 289 | ±æã³ã¼ãã®è¨è¿°æ¹æ³
|
---|
| 290 |
|
---|
| 291 | ARMCCã¨å
|
---|
| 292 | ±æããã³ã¼ãã¯ï¼æ¬¡ã®ã«ã¼ã«ã«å¾ã£ã¦ã³ã¼ããè¨è¿°ããå¿
|
---|
| 293 | è¦ãããï¼
|
---|
| 294 |
|
---|
| 295 | 1.ã¡ã¢ãªããªã¢å½ä»¤(Asm("":::"memory"))ã®ãã¯ãå
|
---|
| 296 |
|
---|
| 297 | ã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ãã®(1-6-2)(c)ã«ã¯ï¼æ¬¡ã®ããã«è¨è¿°ã
|
---|
| 298 | ãã¦ããï¼
|
---|
| 299 |
|
---|
| 300 | -----
|
---|
| 301 | (c) ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã®åºå
|
---|
| 302 | ¥å¦çã®æ¬è³ªçãªé¨åãï¼ãã¯ããã¤ã³ã©ã¤
|
---|
| 303 | ã³é¢æ°å¼åºãã§å®ç¾ãã¦ããå ´åã«ã¯ï¼ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã«å
|
---|
| 304 | ¥ãå¦
|
---|
| 305 | çã®æå¾ã¨åºãå¦çã®å
|
---|
| 306 | é ã«ï¼Asm("":::"memory")ã¨ããè¨è¿°ãå
|
---|
| 307 | ¥ããï¼
|
---|
| 308 | -----
|
---|
| 309 |
|
---|
| 310 | ã¡ã¢ãªããªã¢å½ä»¤(Asm("":::"memory"))ã¯ï¼ARMCCã¨äºææ§ããªãããï¼ãã®
|
---|
| 311 | è¨è¿°ãããç®æã¯ï¼æ¬¡ã®ãã¯ãã§è¨è¿°ããã¨ï¼ã³ã³ãã¤ã«æã«é©åãªã¡ã¢ãªã
|
---|
| 312 | ãªã¢å½ä»¤ã«ç½®ãæããããï¼
|
---|
| 313 |
|
---|
| 314 | ARM_MEMORY_CHANGED
|
---|
| 315 |
|
---|
| 316 | 2.ã¤ã³ã¯ã«ã¼ãæ¹æ³
|
---|
| 317 |
|
---|
| 318 | ã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ãã®1.5ã«ã¯ï¼æ¬¡ã®ããã«è¨è¿°ããã¦ããï¼
|
---|
| 319 |
|
---|
| 320 | -----
|
---|
| 321 | ãã®ä»ã®ããããã¡ã¤ã«ã¯ï¼ã#include "..."ãã«ããã¤ã³ã¯ã«ã¼ãããï¼ãã
|
---|
| 322 | ããã¡ã¤ã«ãï¼ã«ã¬ã³ããã£ã¬ã¯ããªãã¤ã³ã¯ã«ã¼ããããã¡ã¤ã«ã¨åããã£
|
---|
| 323 | ã¬ã¯ããªä»¥å¤ã®ãã£ã¬ã¯ããªã«ç½®ããã¦ããå ´åã«ã¯ï¼æ¬¡ã®ããã«ãã¹æå®ã
|
---|
| 324 | è¡ãï¼
|
---|
| 325 | -----
|
---|
| 326 |
|
---|
| 327 | GCCä¾åé¨ã¨ARMCCä¾åé¨ã§ããããã¡ã¤ã«ãå
|
---|
| 328 | ±æã§ããªãå ´åã«ã¯ï¼ãããã
|
---|
| 329 | ã§åãååã®ãã¡ã¤ã«ãæã¤ï¼ããã¦ï¼ã³ã³ãã¤ã«ãªãã·ã§ã³ã§ã¤ã³ã¯ã«ã¼ã
|
---|
| 330 | ãã¹ããã¡ã¤ã«ãå
|
---|
| 331 | ã«æå®ãã¦ããï¼ãã®ããï¼ARMCCã¨å
|
---|
| 332 | ±æãããã¡ã¤ã«ã§
|
---|
| 333 | ãããã®ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããå ´åã«ã¯ï¼ã#include "..."ãã§ã¯ãªãï¼
|
---|
| 334 | ã#include <...>ãã§è¨è¿°ãï¼ç¸å¯¾ãã¹ã§ã¯ãªããã¡ã¤ã«åã®ã¿ãè¨è¼ããã
|
---|
| 335 | ã¨ï¼
|
---|
| 336 |
|
---|
| 337 | 3.ã¢ã»ã³ãã©ãã£ã¬ã¯ãã£ã
|
---|
| 338 |
|
---|
| 339 | GCCã¨ARMCCã®ã¢ã»ã³ãã©ãã£ã¬ã¯ãã£ãã¯äºææ§ããªãï¼ãã®ããï¼ARMCCã¨
|
---|
| 340 | å
|
---|
| 341 | ±æãããã¡ã¤ã«ã¯æ¬¡ã«ç¤ºããã¯ããã£ã¬ã¯ãã£ãã§è¨è¿°ãããã¨ï¼
|
---|
| 342 |
|
---|
| 343 | ãã¯ããã£ã¬ã¯ãã£ã GCCãã£ã¬ã¯ãã£ã
|
---|
| 344 | ASECTION(name) .section name,"a"
|
---|
| 345 | ATEXT .text
|
---|
| 346 | AGLOBAL(name) .global name
|
---|
| 347 | AALIGN(x) .align x
|
---|
| 348 | ALONG .long
|
---|
| 349 | ALABEL(label) label:
|
---|
| 350 | AOR |
|
---|
| 351 | ATHUMB(name) __athumb name
|
---|
| 352 |
|
---|
| 353 |
|
---|
| 354 | (9)ã¢ã¤ãã«å¦ç
|
---|
| 355 |
|
---|
| 356 | å®è¡ããã¹ãã¿ã¹ã¯ããªãå ´åã¯ï¼ãã£ã¹ãããã£ã¼ã§å²è¾¼ã¿ã許å¯ãã¦ï¼å²
|
---|
| 357 | è¾¼ã¿ãå¾
|
---|
| 358 | ã¤ï¼dispatcher_2ï¼ï¼ARM-Mä¾åé¨ã®ã³ã¼ãã§ã¯ï¼æ¬¡ã®ããã«ãªã£ã¦
|
---|
| 359 | ããï¼
|
---|
| 360 |
|
---|
| 361 | PRIMASK ãã»ãã
|
---|
| 362 | å
|
---|
| 363 | ¨å²è¾¼ã¿è¨±å¯
|
---|
| 364 | wfi
|
---|
| 365 | PRIMASK ãã¯ãªã¢ï¼å²è¾¼ã¿ãåãä»ããï¼
|
---|
| 366 | CPUããã¯ç¶æ
|
---|
| 367 | ã¸
|
---|
| 368 |
|
---|
| 369 | ã¿ã¼ã²ããä¾åã§ï¼ä¸è¨ã®å¦çã®ä»£ããã«ï¼çé»åã¢ã¼ãçã«ç§»è¡ããå¦çã
|
---|
| 370 | è¨è¿°ãããå ´åã«ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã§ï¼TOPPERS_CUSTOM_IDLEãå®ç¾©ãï¼
|
---|
| 371 | 代ããã«å®è¡ããå¦çã toppers_asm_custom_idle ã¨ããã¢ã»ã³ãã©ãã¯ã
|
---|
| 372 | ã¨ãã¦è¨è¿°ããï¼
|
---|
| 373 |
|
---|
| 374 | ãªãï¼toppers_asm_custom_idle ã®è¨è¿°ã«ããã£ã¦ã¯ï¼æ¬¡ã®ã¬ã¸ã¹ã¿ã¯
|
---|
| 375 | oppers_asm_custom_idleã®åå¾ã§ä½¿ç¨ããããï¼oppers_asm_custom_idle å
|
---|
| 376 |
|
---|
| 377 | ã§ä½¿ç¨ããå ´åã¯ï¼åå¾ã§ä¿å復帰ãããã¨ï¼ãããã®ã¬ã¸ã¹ã¿ã¯ Calee
|
---|
| 378 | saved ã¬ã¸ã¹ã¿ã§ããããï¼ oppers_asm_custom_idle ã¨ãã¦é¢æ°å¼ã³åºãã
|
---|
| 379 | ããå ´åã¯ï¼å¼ã³åºããé¢æ°ã§èªåçã«ä¿å復帰ãããããï¼ã¢ã»ã³ãã©ã¬ã
|
---|
| 380 | ã«ã§ã®ä¿å復帰ã¯å¿
|
---|
| 381 | è¦ãªãï¼
|
---|
| 382 |
|
---|
| 383 | ã¬ã¸ã¹ã¿ : å
|
---|
| 384 | 容
|
---|
| 385 | r4 : '0'
|
---|
| 386 | r5 : 'IIPM_LOCK'
|
---|
| 387 | r6 : reqflgã®ã¢ãã¬ã¹
|
---|
| 388 | r7 : lock_flgã®ã¢ãã¬ã¹
|
---|
| 389 | sp : éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã®å
|
---|
| 390 | é ã¢ãã¬ã¹(msp)
|
---|
| 391 |
|
---|
| 392 | ã¢ã»ã³ãã©ãã¯ãã¯Cè¨èªè¨è¿°ä¸ã«å±éããã¨ã¨ã©ã¼ã¨ãªãï¼core_support.S ã§
|
---|
| 393 | ã¯ï¼TOPPERS_ASM_MACRO ã¨ãããã¯ããå®ç¾©ãã¦ããããï¼ã¿ã¼ã²ããä¾åé¨
|
---|
| 394 | 㧠toppers_asm_custom_idle ã¢ã»ã³ãã©ãã¯ããå®ç¾©ããéã«ã¯ï¼
|
---|
| 395 | TOPPERS_ASM_MACRO ãæ¡ä»¶ã³ã³ãã¤ã«ã®æ¡ä»¶ã¨ãã¦ç¨ãããã¨ï¼
|
---|
| 396 |
|
---|
| 397 | (10)FPU
|
---|
| 398 | Cortex-M4Fã®FPUããµãã¼ããã¦ããï¼FPUã®ä½¿ç¨æ¹æ³ã¯æ¬¡ã®3種é¡ããé¸æå¯
|
---|
| 399 | è½ã§ããï¼ããããMakefileå
|
---|
| 400 | ã§FPU_USAGEãã¯ããå®ç¾©ãã¦æå®ããï¼æå®
|
---|
| 401 | ããªãå ´åã¯FPUãç¡å¹ã¨ããï¼
|
---|
| 402 |
|
---|
| 403 | FPU_NO_PRESERV
|
---|
| 404 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ããªãï¼
|
---|
| 405 | FPUã使ç¨å¯è½ãªã¿ã¹ã¯ã¯1åãããã¯ï¼ã·ã¹ãã ä¸ã®æé«åªå
|
---|
| 406 | 度ã®ISR群ã§ä½¿
|
---|
| 407 | ç¨å¯è½ï¼
|
---|
| 408 |
|
---|
| 409 | FPU_NO_LAZYSTACKING
|
---|
| 410 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ãï¼Lazy stacking ã¯
|
---|
| 411 | 使ç¨ããªãï¼å
|
---|
| 412 | ¨ã¦ã®ã¿ã¹ã¯/ISRã§FPUã使ç¨å¯è½ï¼
|
---|
| 413 |
|
---|
| 414 | FPU_LAZYSTACKING
|
---|
| 415 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ãï¼Lazy stacking ã
|
---|
| 416 | 使ç¨ããï¼å
|
---|
| 417 | ¨ã¦ã®ã¿ã¹ã¯/ISRã§FPUã使ç¨å¯è½ï¼
|
---|
| 418 |
|
---|
| 419 | (11)ãã®ä»
|
---|
| 420 |
|
---|
| 421 | 1. ãã¯ã¿ã¼ãã¼ãã«ã®ã»ã¯ã·ã§ã³æå®
|
---|
| 422 |
|
---|
| 423 | core.tf ã§ä»¥ä¸ã® _kernel_vector_table ã®é
|
---|
| 424 | åã®å¤æ°ã®å®£è¨ã®çæã®éã«ï¼
|
---|
| 425 | GEN_VECTOR_TABLE_VARNAME ã¨ããé¢æ°ãå®ç¾©ããã¦ããã°ï¼core.tf ã§ã¯å¤
|
---|
| 426 | æ°ã®å®£è¨ã¯è¡ããï¼GEN_VECTOR_TABLE_VARNAME ãå¼ã³åºãï¼
|
---|
| 427 |
|
---|
| 428 | const FP _kernel_vector_table[] =
|
---|
| 429 |
|
---|
| 430 | GEN_VECTOR_TABLE_VARNAME ã宣è¨ããã¦ããå ´åã§ãï¼é
|
---|
| 431 | åã®æ¬ä½ã®çæã¯ï¼
|
---|
| 432 | core.tfã§è¡ãï¼
|
---|
| 433 |
|
---|
| 434 | 2. ARMv6-Mã§ã®å²è¾¼ã¿ããã¯(SIL_LOC_INT())
|
---|
| 435 |
|
---|
| 436 | CPUããã¯ã»å²è¾¼ã¿ããã¯ã«PRIMASKã使ç¨ãã¦ããããï¼CPUããã¯ã»å²è¾¼ã¿
|
---|
| 437 | ããã¯ä¸ã«HardwareFault以å¤ã®ä¾å¤ãçºçãã¦åãä»ããããªããªãã¨ãã
|
---|
| 438 | å¶ç´ãããï¼
|
---|
| 439 |
|
---|
| 440 | (12) ãã¼ã¸ã§ã³å±¥æ´
|
---|
| 441 | 2015/11/22
|
---|
| 442 | ã»Cortex-M4Fã®FPUã®ãµãã¼ãã追å ï¼
|
---|
| 443 |
|
---|
| 444 | 2015/11/14
|
---|
| 445 | ã»ARMv7-M
|
---|
| 446 | ã»core_sil.h
|
---|
| 447 | ã»å²è¾¼ã¿ããã¯(SIL_LOC_INT())ãBASEPRIã使ç¨ããããã«å¤æ´ï¼
|
---|
| 448 | ã»å
|
---|
| 449 | ã®FAULTMASKã ã¨FAULTMASKãã»ããããç¶æ
|
---|
| 450 | ã§ä¾å¤ãçºçããã¨ä¾å¤
|
---|
| 451 | ãçºçããªãããï¼
|
---|
| 452 |
|
---|
| 453 | 2015/11/04
|
---|
| 454 | ã»ARMv6-M対å¿ã«é¢ããå¤æ´
|
---|
| 455 | ã»ARMv7-Mã«å½±é¿ãåã¼ãå¤æ´
|
---|
| 456 | ã»ä¾å¤ãã¬ã¼ã ã®ãã©ã¼ããããå¤æ´(basepriã¨EXC_RETURNã®é åºãå¤æ´)
|
---|
| 457 | ã»ã¨ã³ããªãã¤ã³ã(_start)ããªãã¼ã ã®å¯¾è±¡ã«å¤æ´ï¼
|
---|
| 458 | ã»Cã©ã¤ãã©ãªã®_startã¨ååãéè¤ããããï¼
|
---|
| 459 | ã»Makefile.core㧠-nostdlib ãä»ããªãããã«å¤æ´ï¼
|
---|
| 460 | ã»ã¿ã¼ã²ããä¾åé¨ã§æå®ãã
|
---|
| 461 |
|
---|
| 462 | 2014/12/01
|
---|
| 463 | ã»core_support.S
|
---|
| 464 | 2013/08/20 ã®ä¿®æ£ã§PSPä¸ã¸ã®å²è¾¼ã¿åªå
|
---|
| 465 | 度ãã¹ã¯(r2)ã¨EXC_RETURN(lr)ã®
|
---|
| 466 | ä¿åãstfmdã§è¡ãã«ãããï¼ã¹ã¿ãã¯ã¸ã®ç©ã¿æ¹ãlr,r2ã¨ãªã£ã¦ãããã
|
---|
| 467 | ï¼å²è¾¼ã¿ã»ä¾å¤åºå£ã®ã³ã¼ãã¨ã®æ´åæ§ãã¨ãã¦ããªãã£ãï¼r2,lrã¨ä¿å
|
---|
| 468 | ããããã«lrãr0ã«ä¸æ¦ã³ãã¼ãã¦r0(lr),r2ã¨stmfdã«æå®ããããå¤æ´ï¼
|
---|
| 469 |
|
---|
| 470 | 2014/07/23
|
---|
| 471 | ã»target_timer_probe_int()ã«ããã¦ï¼SYSTIC_CONTROL_STATUS ãä¸åº¦èªã¿è¾¼
|
---|
| 472 | ãã¨ã¯ãªã¢ãããããï¼å²è¾¼ã¿çã§è¤æ°åèªã¿è¾¼ã使ãæ¹ã«ã¯é©å¿ããªãï¼
|
---|
| 473 | ãã®ããï¼NVICã®ãã³ãã£ã³ã°ã¬ã¸ã¹ã¿ãèªã¿è¾¼ãããã«å¤æ´ï¼
|
---|
| 474 |
|
---|
| 475 | 2012/10/17
|
---|
| 476 | ã»1.8.0対å¿ã®ããï¼char_t ã®ç®æãä»ã®åã«å¤æ´ï¼
|
---|
| 477 |
|
---|
| 478 | 2013/08/20
|
---|
| 479 | ã»core_support.S
|
---|
| 480 | ä¾å¤/å²è¾¼ã¿ä¾å¤çºçæã®PSPä¸ã¸ã®å²è¾¼ã¿åªå
|
---|
| 481 | 度ãã¹ã¯(r2)ã¨EXC_RETURN(lr)
|
---|
| 482 | ã®ä¿åãstmfd1å½ä»¤ã§å®æ½ããããã«å¤æ´ï¼
|
---|
| 483 |
|
---|
| 484 | 2013/03/10
|
---|
| 485 | ã»core_support.S
|
---|
| 486 | sub/addã¯ã¢ã»ã³ãã©ã«ãã32bitå½ä»¤ï½sub.w/add.wã¨å¤æãããï¼16bitå½
|
---|
| 487 | 令ã®subs/addsã§ãåé¡ãªãããï¼å¤æ´ï¼
|
---|
| 488 |
|
---|
| 489 | 2012/06/18
|
---|
| 490 | ã»xxx_stddef.h ãç¸å¯¾ãã¹ã§ã¯ãªããã¡ã¤ã«åã®ã¿ã§æå®ããããã«å¤æ´ï¼
|
---|
| 491 | ã©ã®ãã¡ã¤ã«ãç¨ãããã¯ä»ã®ãã¡ã¤ã«ã¨åæ§ã«ã³ã³ãã¤ã©ã¸ã®ã¤ã³ã¯ã«ã¼
|
---|
| 492 | ãæå®ã®é åºã¨ããï¼
|
---|
| 493 | ã»core.tf 㧠_kernel_vector_table ã®é
|
---|
| 494 | åã®å¤æ°ã®å®£è¨é¨åãçæããéã«ï¼
|
---|
| 495 | GEN_VECTOR_TABLE_VARNAME ã¨ããé¢æ°ãå®ç¾©ããã¦ããã°ï¼å¼ã³åºããã
|
---|
| 496 | ã«å¤æ´ï¼
|
---|
| 497 | ã»ã¯ã·ã§ã³æå®æ¹æ³ãã³ã³ãã¤ã©æ¯ã«ç°ãªãããç¨æï¼
|
---|
| 498 |
|
---|
| 499 | 2012/02/29
|
---|
| 500 | ã»Makefile.core
|
---|
| 501 | ã»CDEFSã«TOPPERS_LABEL_ASMãæå®ãã¦ãããï¼ARMç¨ã®gccã§ã¯ã¢ã»ã³ãã©
|
---|
| 502 | ã®ã·ã³ãã«ã®åã«_ãä»ããªãããåé¤ï¼
|
---|
| 503 |
|
---|
| 504 | 2012/02/02
|
---|
| 505 | ã»core_config.h
|
---|
| 506 | ã»x_set_ipm()ã§ï¼iipmã'0'(IIPM_ENAALL)ã®æã®åé¡ãä¿®æ£ï¼
|
---|
| 507 | ã»core_support.S
|
---|
| 508 | ã»toppers_asm_custom_idleã®åå¾ã§ä½¿ç¨ããã¬ã¸ã¹ã¿ãå¤æ´ï¼ãã®å¤æ´ã«
|
---|
| 509 | ããï¼toppers_asm_custom_idle ã§é¢æ°å¼ã³åºããããå ´åã¯ï¼ã¢ã»ã³ã
|
---|
| 510 | ã©ã¬ãã«ã§ã®ã¬ã¸ã¹ã¿ã®ä¿åãå¿
|
---|
| 511 | è¦ãªããªã£ãï¼
|
---|
| 512 |
|
---|
| 513 | 2012/02/23
|
---|
| 514 | ã»core_support.S
|
---|
| 515 | ã»core_exc_entryã§basepriãèªã¿è¾¼ãã ãã¨ï¼å
|
---|
| 516 | ¨å²è¾¼ã¿ããã¯ç¶æ
|
---|
| 517 | ã®ãã§
|
---|
| 518 | ãã¯ããã«ä¸æ¸ããã¦ããåé¡ãä¿®æ£
|
---|
| 519 | ã»call_texrtnã¨call_texrtnã®å¼ã³åºããbå½ä»¤ã§è¨è¿°ããã¨ï¼16bitå½ä»¤ã¨
|
---|
| 520 | ãã¦è§£éããã³ã³ãã¤ã©ãããããï¼ã¡ã¢ãªé
|
---|
| 521 | ç½®ã«ãã£ã¦ã¯ã¬ã³ã¸ã足ã
|
---|
| 522 | ãªããªãï¼bxå½ä»¤ã«å¤æ´ãããã¨ã§åé¡ãä¿®æ£ï¼
|
---|
| 523 |
|
---|
| 524 | 2012/01/31
|
---|
| 525 | ã»core_timer.c
|
---|
| 526 | ã»ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ã«ã¦ï¼probe_int ã®ããï¼COUNTFLAGãã¯ãªã¢ããã
|
---|
| 527 | ãã«èªã¿è¾¼ãã§ããã¬ã¸ã¹ã¿ã誤ã£ã¦ããåé¡ãä¿®æ£ï¼
|
---|
| 528 |
|
---|
| 529 | 2011/12/03
|
---|
| 530 | ã»core_test.h ã®å¤éã¤ã³ã¯ã«ã¼ãé²æ¢ãã¯ãã®å称修æ£
|
---|
| 531 | ã»CHIP ã CORE ã«ä¿®æ£ï¼
|
---|
| 532 |
|
---|
| 533 | ã»ARMCC対å¿ã«ä¼´ãå¤æ´
|
---|
| 534 | ã»core_asm.inc(追å )
|
---|
| 535 | ã»GCCã®ã¢ã»ã³ãã©ã®ãã£ã¬ã¯ãã£ãã®å®ç¾©ãè¨è¿°ãããã¡ã¤ã«ã追å ï¼
|
---|
| 536 | ã»core_config.h(å¤æ´)
|
---|
| 537 | ã»core_insn.h ã®ã¤ã³ã¯ã«ã¼ãæ¹æ³ã""ãã<>ã«å¤æ´ãã¦ï¼ã³ã³ãã¤ã©ã®
|
---|
| 538 | å¼æ°ã§æå®ãããé ã§ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ããµã¼ãããããå¤æ´ï¼
|
---|
| 539 | ã»ã¡ã¢ãªããªã¢å½ä»¤(Asm("":::"memory"))ããã¯ãåãã¦core_insn.h ã«
|
---|
| 540 | å®ç¾©ã使ç¨ããããå¤æ´ï¼
|
---|
| 541 | ã»core_insn.h(å¤æ´)
|
---|
| 542 | ã»ã¡ã¢ãªããªã¢å½ä»¤(Asm("":::"memory"))ã®ãã¯ãå®ç¾©ã追å
|
---|
| 543 | ã»core_support.S(å¤æ´)
|
---|
| 544 | ã»ARMCCã¨ãã¡ã¤ã«ãå
|
---|
| 545 | ±æããããï¼ãã£ã¬ã¯ãã£ãããã¯ãã«æ¸ãæãï¼
|
---|
| 546 | ã»start.S(å¤æ´)
|
---|
| 547 | ã»ARMCCã¨ãã¡ã¤ã«ãå
|
---|
| 548 | ±æããããï¼ãã£ã¬ã¯ãã£ãããã¯ãã«æ¸ãæãï¼
|
---|
| 549 |
|
---|
| 550 | 2011/07/26
|
---|
| 551 | ã»CCRã®STKALIGNã'1'ã®å ´åã¸ã®å¯¾å¿
|
---|
| 552 | å²è¾¼ã¿ã»ä¾å¤ã®åºå
|
---|
| 553 | ¥å£å¦çã§ã¯ï¼ã¹ã¿ãã¯ã¯å¸¸ã«8byteå¢çã¨ãªãããã«å¤
|
---|
| 554 | æ´ï¼
|
---|
| 555 |
|
---|
| 556 | 2011/07/25
|
---|
| 557 | ã»CPUä¾å¤ã®åªå
|
---|
| 558 | 度ã®åæå
|
---|
| 559 | CPUããã¯ã§ãã¹ã¯ã§ããªãåªå
|
---|
| 560 | 度ï¼å
|
---|
| 561 | é¨åªå
|
---|
| 562 | 度0ï¼ã«åæåããå¦çã追å ï¼
|
---|
| 563 |
|
---|
| 564 | ã»CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿åªå
|
---|
| 565 | 度ã®æ大å¤ã®ä¿®æ£(core.tf)
|
---|
| 566 | ã»æ大å¤ã1ã¤å¤§ããªå¤ã¨ãªã£ã¦ããï¼
|
---|
| 567 |
|
---|
| 568 | ã»ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã®æ±ãã®å¤æ´
|
---|
| 569 | ã»å
|
---|
| 570 | ±éé¨ã§ã®æ±ãã®å¤æ´ã«ä¼´ãå¤æ´ï¼
|
---|
| 571 |
|
---|
| 572 | ã»ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ã§ã®COUNTFLAGã®ã¯ãªã¢å¦çã®ä¿®æ£
|
---|
| 573 | SYSTIC_CONTROL_STATUSã¬ã¸ã¹ã¿ã®COUNTFLAGãã¯ãªã¢ããã«ã¯ï¼
|
---|
| 574 | SYSTIC_CURRENT_VALUEã¬ã¸ã¹ã¿ãèªã¿è¾¼ãå¿
|
---|
| 575 | è¦ããããï¼èª¤ã£ã¦
|
---|
| 576 | SYSTIC_CONTROL_STATUSã¬ã¸ã¹ã¿ãèªã¿è¾¼ãã§ããï¼
|
---|
| 577 |
|
---|
| 578 | ã»core_int_entryã«ãããbasepriã®è¨å®
|
---|
| 579 | NVICåªå
|
---|
| 580 | 度ãã¹ã¯ãèªåçã«è¨å®ãããããåªå
|
---|
| 581 | 度ãã¹ã¯ã®ç¹ã§ã¯å¿
|
---|
| 582 | è¦ãª
|
---|
| 583 | ããï¼x_get_ipm()ãbasepriãåç
|
---|
| 584 | §ããããï¼basepriãæ´æ°ããããå¤æ´ï¼
|
---|
| 585 |
|
---|
| 586 | 2011/07/24
|
---|
| 587 | ã»_ret_int_2/svc_handler ã®å¤æ´
|
---|
| 588 | å²è¾¼ã¿åªå
|
---|
| 589 | 度ãã¹ã¯ãå
|
---|
| 590 | ¨è§£é¤ç¶æ
|
---|
| 591 | ã§ããã¿ã¹ã¯ä¾å¤ãå¼ã³åºããªãããã«
|
---|
| 592 | ä»æ§ãå¤æ´ãããããï¼_ret_int_2ã§ã¯ï¼å²è¾¼ã¿åªå
|
---|
| 593 | 度ãã¹ã¯ãï¼å
|
---|
| 594 | ¨è§£é¤
|
---|
| 595 | ç¶æ
|
---|
| 596 | ï¼TIPM_ENAALLï¼ã«è¨å®ããããå¤æ´ï¼
|
---|
| 597 | svc_handlerã¯ã¿ã¹ã¯ã«ãªã¿ã¼ã³ããæã«basepriãIIPM_ENAALLã«ãããã
|
---|
| 598 | ã«å¤æ´ï¼
|
---|
| 599 |
|
---|
| 600 | ã»x_config_int()/set_exc_int_priority()ã®ä¿®æ£
|
---|
| 601 | x_config_int()ããï¼set_exc_int_priority()ã«å¯¾ãã¦å¤é¨åªå
|
---|
| 602 | 度ãå¼æ°ã«
|
---|
| 603 | ãã¦å¼ã³åºãããããï¼å
|
---|
| 604 | é¨åªå
|
---|
| 605 | 度ãå¼æ°ã§å¼ã³åºãããä¿®æ£ï¼
|
---|
| 606 | set_exc_int_priority()ãåãåã£ãå¼æ°ãå
|
---|
| 607 | é¨åªå
|
---|
| 608 | 度ã¨ãã¦åªå
|
---|
| 609 | 度ãè¨å®
|
---|
| 610 | ããããã«ä¿®æ£ï¼
|
---|
| 611 |
|
---|
| 612 | 2011/07/23
|
---|
| 613 | ã»å
|
---|
| 614 | ±éé¨ã1.4.0ã«update.
|
---|
| 615 |
|
---|
| 616 | ã»armä¾åé¨ã¨åæ§ã«ãããä¾åé¨ãç½®ããããã«ãã£ã¬ã¯ããªæ§é ãå¤æ´
|
---|
| 617 |
|
---|
| 618 | ã»armä¾åé¨ã¨åæ§ã«ãã¡ã¤ã«åã®ããªãã£ãã¯ã¹ãcoreã«å¤æ´ï¼
|
---|
| 619 |
|
---|
| 620 | ã»call_atexitã®åé¤
|
---|
| 621 | software_term_hook ã®å¼ã³åºãã¯ï¼core_terminate()ã«ç§»åï¼
|
---|
| 622 |
|
---|
| 623 | ã»å
|
---|
| 624 | ±éé¨ã1.7.0ã«update.
|
---|
| 625 |
|
---|
| 626 | ã»ã¿ã¹ã¯ã³ã³ããã¹ããããã¯ã®ååã®å¤æ´
|
---|
| 627 | CTXBåãTSKCTXBåã«å称å¤æ´ï¼
|
---|
| 628 |
|
---|
| 629 | ã»ã¿ã¼ã²ããä¾åé¨ã§ãµãã¼ãããæ©è½ã示ããã¯ãã®å¤æ´
|
---|
| 630 | TOPPERS_SUPPORT_DIS_INTãTOPPERS_TARGET_SUPPORT_DIS_INTã«ï¼
|
---|
| 631 | TOPPERS_SUPPORT_ENA_INTãTOPPERS_TARGET_SUPPORT_ENA_INTã«ï¼
|
---|
| 632 | å¤æ´ï¼
|
---|
| 633 |
|
---|
| 634 | ã»exc_sense_unlockã®å®ç¾©ãåé¤ï¼
|
---|
| 635 |
|
---|
| 636 | ã»ãªãã»ãããã¡ã¤ã«ãã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã§çæããæ¹æ³ã¸ã®å¯¾å¿
|
---|
| 637 |
|
---|
| 638 | ã»CHECK_FUNC_ALIGNï¼CHECK_FUNC_NONNULLï¼CHECK_STACK_ALIGNï¼
|
---|
| 639 | CHECK_STACK_NONNULLï¼CHECK_MPF_ALIGNï¼CHECK_MPF_NONNULLã®å®ç¾©ãï¼ã¿
|
---|
| 640 | ã¼ã²ããä¾åé¨ã®ãã³ãã¬ã¼ããã¡ã¤ã«ï¼ãã¹3ï¼ããããããã¡ã¤ã«ã«ç§»
|
---|
| 641 | åï¼
|
---|
| 642 |
|
---|
| 643 | ã»å²è¾¼ã¿ã¨ä¾å¤ã®å
|
---|
| 644 | ¥ãå£å¦çã®ååãå¤æ´
|
---|
| 645 | int_entryãcore_int_entryã¸exc_entryãcore_exc_entryã«å¤æ´ï¼
|
---|
| 646 | ãªãã»ããã®åå¾æ¹æ³ãå¤æ´ã¨ãªã£ãããï¼å
|
---|
| 647 | ã®ååã®ã¾ã¾ã ã¨cfg1_out.c
|
---|
| 648 | ãã³ã³ãã¤ã«ã¨ã©ã¼ã¨ãªãããã«å¤æ´ï¼
|
---|
| 649 |
|
---|
| 650 | ã»ã¿ã¼ã²ããä¾åé¨ã§å®ç¾©ããå称ã®ãªãã¼ã ã®è¿½å
|
---|
| 651 |
|
---|
| 652 | ã»call_texrtnãå¼ã³åºãæ¡ä»¶ã«ãipmflgãtrueãã追å
|
---|
| 653 |
|
---|
| 654 | ã»ã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ã®æ±ãã®å¤æ´
|
---|
| 655 |
|
---|
| 656 | 2011/07/22
|
---|
| 657 | ã»x_disable_int() : prc_config.h ã®ä¿®æ£
|
---|
| 658 | å²è¾¼ã¿ç¦æ¢ã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãåå¾ããéã«ï¼ãã¼ã¹ã®å¤ãuint32_tã®
|
---|
| 659 | ãã¤ã³ã¿ã«ãã£ã¹ããã¦ããªã£ãããï¼æ£ããã¢ãã¬ã¹ãçæã§ãã¦ããª
|
---|
| 660 | ãã£ãåé¡ãä¿®æ£ï¼
|
---|
| 661 |
|
---|
| 662 | ã»éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã®åæå¤ãã¯ã(TOPPERS_ISTKPT)ã®ä¿®æ£
|
---|
| 663 | : prc_config.h
|
---|
| 664 | ãã¤ãåä½ã§åå¾ããããã«ï¼(char_t *) ã«ãã£ã¹ããã¦æ²è¼ããããã«ä¿®
|
---|
| 665 | æ£ï¼
|
---|
| 666 |
|
---|
| 667 | ã»LOG_INH_ENTRYã¨LOG_INH_LEAVEã®èª¤è¨ : prc_support.S
|
---|
| 668 | LOG_INH_ENTRYã¨LOG_INH_LEAVEã§ããã¹ãç®æã LOG_EXC_ENTRYã¨
|
---|
| 669 | LOG_EXC_ENTRYã«ãªã£ã¦ããåé¡ãä¿®æ£ï¼
|
---|
| 670 |
|
---|
| 671 | ã»TOPPERS_CUSTOM_IDLE ã®typoã®ä¿®æ£ : prc_support.S
|
---|
| 672 |
|
---|
| 673 | ã»svn_hanlderã®ä¿®æ£ : prc_support.S
|
---|
| 674 | ä¸å¾EXC_FRAME_SIZEåã®ã¹ã¿ãã¯ãæ¨ã¦ã¦ãããï¼Configureation and
|
---|
| 675 | Control Register(CCR)ã®STKALIGNã'1'ã®å ´ åã¯ï¼8byteå¢çã«ã¢ã©ã¤ã³
|
---|
| 676 | ãããããï¼æ¨ã¦ããµã¤ãºãç°ãªãï¼ã¢ã©ã¤ã³ããããã¯ï¼xPSRã®9ãã
|
---|
| 677 | ãããã§ãã¯ãããã¨ã«ããå¤å®ããï¼
|
---|
| 678 |
|
---|
| 679 | ã»prc.tfã®ä¿®æ£
|
---|
| 680 | boostã®ãã¼ã¸ã§ã³ã«ãã£ã¦å¤ããæåãå¸åï¼
|
---|
| 681 | http://www.toppers.jp/TOPPERS-USERS/201004/msg00034.html
|
---|
| 682 |
|
---|
| 683 | ã»_kernel_istkpt ã®åé¤ : prc_cfg1_out.h
|
---|
| 684 | _kernel_istkpt ãå¿
|
---|
| 685 | è¦ãªãã¿ã¼ã²ãããåå¨ããããï¼å¿
|
---|
| 686 | è¦ãªãï¼ã¿ã¼ã²
|
---|
| 687 | ããä¾åé¨ã§å®ç¾©ããããã«å¤æ´ï¼
|
---|
| 688 |
|
---|
| 689 | 2008/08/22
|
---|
| 690 | ã»prc_user.txt/prc_design.txt
|
---|
| 691 | ã»2008/8/21ã®æè¡æ¤è¨ä¼ã§ã®è°è«çµæãåæ ï¼
|
---|
| 692 |
|
---|
| 693 | ã»prc_support.S/prc_config.c/prc_config.h/arm_m.h
|
---|
| 694 | ã»ã³ã³ããã¹ãå¤å®ãexc_ncntããã¢ã¯ãã£ããªã¹ã¿ãã¯ã«å¤æ´
|
---|
| 695 |
|
---|
| 696 | ã»prc_config.c
|
---|
| 697 | ã»set_exc_int_priority() ã§ãµãã¼ãå¯è½ãªIRQã®ä¸éã239ã«æ¡å¼µï¼
|
---|
| 698 |
|
---|
| 699 | ã»start.S
|
---|
| 700 | ã»èµ·åæã¯Threadã¢ã¼ããåæã¨ãã¦ãããã¨ãæè¨ï¼
|
---|
| 701 | ã»ãã¼ããã¼ãã¼çããèµ·åãããå ´åãæ³å®ãï¼MSPãæå¹ã«ããããã«
|
---|
| 702 | å¤æ´ï¼
|
---|
| 703 |
|
---|
| 704 | ã»prc_timer.c
|
---|
| 705 | ã»ã³ã¡ã³ããä¿®æ£
|
---|
| 706 | ã»ãããã°ç¨ã³ã¼ããåé¤
|
---|
| 707 |
|
---|
| 708 | 2008/07/11
|
---|
| 709 | ã»æåã®ãªãªã¼ã¹
|
---|