[82] | 1 | =====================================================================
|
---|
| 2 | ARM-Mããã»ããµä¾åé¨è¨è¨ã¡ã¢
|
---|
| 3 | Last Modified: 2011 Jul 26 22:22:34
|
---|
| 4 | =====================================================================
|
---|
| 5 |
|
---|
| 6 | âãã®ããã¥ã¡ã³ãã®ä½ç½®ã¥ã
|
---|
| 7 |
|
---|
| 8 | ãã®ããã¥ã¡ã³ãã¯ï¼TOPPERS/ASPã«ã¼ãã«ãARMvX-Mããã»ããµã«ç§»æ¤ãããã
|
---|
| 9 | ã®è¨è¨ã¡ã¢ã§ããï¼
|
---|
| 10 |
|
---|
| 11 |
|
---|
| 12 | âARMVx-Mã®ä»æ§ã¾ã¨ã
|
---|
| 13 |
|
---|
| 14 | ARMvX-Mã®ä»æ§ã®ãã¡ï¼ã«ã¼ãã«ã®è¨è¨ã«é¢ä¿ããäºé
|
---|
| 15 | ã«ã¤ãã¦ã¾ã¨ããï¼
|
---|
| 16 |
|
---|
| 17 | âã¬ã¸ã¹ã¿
|
---|
| 18 |
|
---|
| 19 | æ±ç¨ã¬ã¸ã¹ã¿ã¯R0ãR15ã®16種é¡ããï¼R13ã®ã¿ã2ãã³ã¯æ§æï¼PSP,MSPï¼ã¨ãª
|
---|
| 20 | ã£ã¦ããï¼R15ã¯PC, R14ã¯ãªã³ã¯ã¬ã¸ã¹ã¿ï¼LRï¼ã¨ãªã£ã¦ããï¼R0ãR3,R12ã¯
|
---|
| 21 | ã¹ã¯ã©ããã¬ã¸ã¹ã¿ã§ããï¼
|
---|
| 22 |
|
---|
| 23 | âã³ã¼ãªã³ã°ã³ã³ãã³ã·ã§ã³
|
---|
| 24 |
|
---|
| 25 | R0ãR4ãå¼æ°ï¼ãã以ä¸ã¯ã¹ã¿ãã¯ï¼æ»ãå¤ã¯ï¼R0ãR1ã«æ ¼ç´ãããï¼(ARMã«
|
---|
| 26 | ããè¦å®ããã¦ããããï¼ã³ã³ãã¤ã©ã«ä¾åãããã®ã«ã¼ã«ã¨ãªãï¼)
|
---|
| 27 |
|
---|
| 28 | âCONTROLã¬ã¸ã¹ã¿
|
---|
| 29 |
|
---|
| 30 | PSP,MSPã®åãæ¿ãï¼Privilageã¨Userã¢ã¼ãã®ã¬ã¸ã¹ã¿ï¼å¤æ´å¾ã¯ï¼ã¤ã³ã¹ã
|
---|
| 31 | ã©ã¯ã·ã§ã³ãããã¡ãã©ãã·ã¥å½ä»¤ãå®è¡ããå¿
|
---|
| 32 | è¦ãããï¼isbï¼ï¼CONTROLã¬
|
---|
| 33 | ã¸ã¹ã¿ã®è©³ç´°ã¯ï¼ARMv7-M Architecture Application Level Reference
|
---|
| 34 | Manual ã® B1-9 ãåç
|
---|
| 35 | §ã®ãã¨ï¼
|
---|
| 36 |
|
---|
| 37 | âå²è¾¼ã¿ãã¯ã¿
|
---|
| 38 |
|
---|
| 39 | ãã¯ã¿ãã¼ãã«åã§ï¼ãã¯ã¿ãã¼ãã«ã®ã¢ãã¬ã¹ã¯ï¼ãªã»ããæã¯0x00ã§ï¼
|
---|
| 40 | Vector Table Offset Registerï¼ã¡ã¢ãªããããã¬ã¸ã¹ã¿ï¼ ãæä½ãããã¨
|
---|
| 41 | ã§ï¼ä»»æã®ã¢ãã¬ã¹ã«é
|
---|
| 42 | ç½®å¯è½ã§ããï¼
|
---|
| 43 |
|
---|
| 44 | âåªå
|
---|
| 45 | 度
|
---|
| 46 |
|
---|
| 47 | å¤ãå°ããæ¹ãé«åªå
|
---|
| 48 | 度ã¨ãªãï¼0ãæé«åªå
|
---|
| 49 | 度ã¨ãªãï¼ä¸æ¹ï¼å¾è¿°ãããã
|
---|
| 50 | ã»ããµã®å²è¾¼ã¿åªå
|
---|
| 51 | 度ãè¨å®ããBASEPRIã¬ã¸ã¹ã¿ã¯'0'ãã»ããããã¨ï¼å
|
---|
| 52 | ¨ã¦
|
---|
| 53 | ã®å²è¾¼ã¿ã許å¯ããããï¼æé«åªå
|
---|
| 54 | 度ã¯ï¼æå¹ãªãããã®LSBã'1'ã¨ããå¤ã§
|
---|
| 55 | ããï¼3bitã®å ´åã¯0x20ï¼ï¼ã¾ãï¼å²è¾¼ã¿ã®åªå
|
---|
| 56 | 度ã«'0'ãè¨å®ããã¨ï¼
|
---|
| 57 | BASEPRIã¬ã¸ã¹ã¿ã§ãã¹ã¯ã§ããªãå²è¾¼ã¿ã¨ãªãï¼
|
---|
| 58 |
|
---|
| 59 | åªå
|
---|
| 60 | 度ã¯æ大8bitã§ããï¼SoCæ¯ã«å®è£
|
---|
| 61 | ããã¦ãããããå¹
|
---|
| 62 | ãç°ãªãï¼å®è£
|
---|
| 63 | ã
|
---|
| 64 | ãããããã8bit以ä¸ã®å ´åã¯ï¼LSBããç¡å¹ã«ãªãï¼ä¾ãã°ï¼å®è£
|
---|
| 65 | ããã¦ã
|
---|
| 66 | ããããå¹
|
---|
| 67 | ã7bitã®å ´åã¯ï¼ããã0ãç¡å¹ã¨ãªãï¼
|
---|
| 68 |
|
---|
| 69 | åªå
|
---|
| 70 | 度ã®ããããã£ã¼ã«ãã®LSBããæ°ãããããµãåªå
|
---|
| 71 | 度ã¨å¼ã¶ãã£ã¼ã«ã
|
---|
| 72 | ã«è¨å®ãããã¨ãå¯è½ã§ããï¼æ®ãã®ä¸ä½ããããããªã¨ã³ãã·ã§ã³åªå
|
---|
| 73 | 度ã¨
|
---|
| 74 | å¼ã¶ï¼ããªã¨ã³ãã·ã§ã³åªå
|
---|
| 75 | 度ãåãã§ï¼ãµãåªå
|
---|
| 76 | 度ãç°ãªãåªå
|
---|
| 77 | 度ã®ã°ã«ã¼
|
---|
| 78 | ãã¯ï¼ãäºããããªã¨ã³ãããããã¨ãã§ããªãï¼
|
---|
| 79 |
|
---|
| 80 | Reset,NMI,Hard Fault 以å¤ã®ä¾å¤ã¯å²è¾¼ã¿ã¨åæ§ã«åªå
|
---|
| 81 | 度ãè¨å®å¯è½ã§ããï¼
|
---|
| 82 | å²è¾¼ã¿ãã¹ã¯æ©è½ã«ããï¼çºçãç¦æ¢ãããã¨ãå¯è½ã§ããï¼
|
---|
| 83 |
|
---|
| 84 |
|
---|
| 85 | âCPUã¢ã¼ã
|
---|
| 86 |
|
---|
| 87 | ããã»ããµã¯ï¼Threadã¢ã¼ããããã¯Handlerã¢ã¼ãã®ããããã®ã¢ã¼ãã¨ãª
|
---|
| 88 | ãï¼
|
---|
| 89 |
|
---|
| 90 | âãªã»ããæã®ç¶æ
|
---|
| 91 |
|
---|
| 92 |
|
---|
| 93 | ãªã»ããæã¯Threadã¢ã¼ãï¼MSPãæå¹ã¨ãªã£ã¦ããï¼
|
---|
| 94 |
|
---|
| 95 | âHandlerã¢ã¼ã
|
---|
| 96 |
|
---|
| 97 | ä¾å¤/å²è¾¼ã¿ãåãä»ããã¨é·ç§»ããã¢ã¼ãï¼åãä»ããä¾å¤/å²è¾¼ã¿ã®ä¾å¤çª
|
---|
| 98 | å·ãï¼IPSRã«ã»ãããããï¼ä¾å¤çªå·ã¯ï¼TRMã§å®ãããã¦ããçªå·ã§ããï¼
|
---|
| 99 |
|
---|
| 100 | ä¾å¤ ä¾å¤çªå·
|
---|
| 101 | Reset 1
|
---|
| 102 | Non-makable Interrupt 2
|
---|
| 103 | Hard Fault 3
|
---|
| 104 | Memory Management 4
|
---|
| 105 | Bus Fault 5
|
---|
| 106 | Usage Fault 6
|
---|
| 107 | SVCall 11
|
---|
| 108 | Debug Monitor 12
|
---|
| 109 | PendSV 14
|
---|
| 110 | SysTick 15
|
---|
| 111 | IRQ0 16
|
---|
| 112 | IRQ1 17
|
---|
| 113 | ..
|
---|
| 114 |
|
---|
| 115 | ä¾å¤/å²è¾¼ã¿ãåãä»ããã¨ï¼åãä»ããä¾å¤/å²è¾¼ã¿ã®åªå
|
---|
| 116 | 度以ä¸ã®ä¾å¤/å²
|
---|
| 117 | è¾¼ã¿ãç¦æ¢ããï¼ãã®åªå
|
---|
| 118 | 度ãã¹ã¯ã"NVICåªå
|
---|
| 119 | 度ãã¹ã¯"ã¨å¼ã¶ï¼ãã®åªå
|
---|
| 120 | 度
|
---|
| 121 | ã¯ï¼ã½ããã¦ã§ã¢ããå¤æ´ãããã¨ãã§ããï¼ä¾å¤/å²è¾¼ã¿ã®ãªã¿ã¼ã³ã«ãã
|
---|
| 122 | å²è¾¼ã¿åã®å¤ã«èªåçã«æ»ãï¼
|
---|
| 123 |
|
---|
| 124 | âã¹ã¿ãã¯ãã¤ã³ã¿ï¼PSPã¨MSPï¼
|
---|
| 125 |
|
---|
| 126 | ã¹ã¿ãã¯ãã¤ã³ã¿ã¯ï¼PSPã¨MSPãããï¼æä»çã«ä½¿ç¨å¯è½ã§ããï¼Handlerã¢
|
---|
| 127 | ã¼ãã§ã¯MSPã®ã¿ä½¿ç¨å¯è½ã§ããï¼Threadã¢ã¼ãã§ã¯CONTROLã¬ã¸ã¹ã¿ã§é¸æå¯
|
---|
| 128 | è½ã§ããï¼CONTROLã¬ã¸ã¹ã¿ã®1ãããç®ãã»ããããã¨PSPãæå¹ã«ï¼ã¯ãªã¢
|
---|
| 129 | ããã¨ï¼MSPãæå¹ã«ãªãï¼
|
---|
| 130 |
|
---|
| 131 | âThreadã¢ã¼ãã¨Handlerã¢ã¼ãã®é·ç§»
|
---|
| 132 |
|
---|
| 133 | Threadã¢ã¼ãããHandlerã¢ã¼ãã¸ã®é·ç§»ã¯ï¼ä¾å¤/å²è¾¼ã¿ãåãä»ãããã¨ã§
|
---|
| 134 | çºçããï¼ä¸æ¹ï¼Handlerã¢ã¼ãããThreadã¢ã¼ãã¸ã®é·ç§»ã¯ï¼PCã«
|
---|
| 135 | EXC_RETURN(0xfffffffx)ã®å¤ãè¨å®ãããã¨ã«ããè¡ãï¼ä¾å¤ãªã¿ã¼ã³å¦çã¨
|
---|
| 136 | å¼ã¶ï¼ï¼EXC_RETURNã®ä¸ä½4bitã«ããï¼é·ç§»å
|
---|
| 137 | ã®ã¢ã¼ãã使ç¨ããã¹ã¿ãã¯ã
|
---|
| 138 | ã¤ã³ã¿ãå¤æ´å¯è½ã§ããï¼ä¾å¤ãªã¿ã¼ã³ã«ããï¼PRIMASKãBASEPRIã®å¤ã¯å¤å
|
---|
| 139 | ããªãï¼ä¸æ¹ï¼FAULTMASKã®å¤ã¯'0'ã«ã¯ãªã¢ãããï¼
|
---|
| 140 |
|
---|
| 141 | âEXC_RETURN
|
---|
| 142 |
|
---|
| 143 | ä¾å¤/å²è¾¼ã¿åä»ãæã«lrã«è¨å®ãããå¤ï¼ããã31ã4ãããã¯å
|
---|
| 144 | ¨ã¦'1'ã§ï¼
|
---|
| 145 | ä¸ä½4bitã¯ï¼åä»ãæã®CPUã¢ã¼ããã¹ã¿ãã¯ãåæ ããå¤ã¨ãªã£ã¦ããï¼
|
---|
| 146 |
|
---|
| 147 | 0b0001 : Handlerã¢ã¼ã
|
---|
| 148 | 0b1001 : Threadã¢ã¼ã with MSP
|
---|
| 149 | 0b1101 : Threadã¢ã¼ã with PSP
|
---|
| 150 |
|
---|
| 151 | âThreadã¢ã¼ãã¨Handlerã¢ã¼ãã®å¤å®
|
---|
| 152 |
|
---|
| 153 | ç¾ç¶ã®ã¢ã¼ããå¤å®ããã«ã¯ï¼IPSRãè¦ã¦ï¼'0'ãªãThreadã¢ã¼ãï¼ãã以å¤
|
---|
| 154 | ãªãï¼Handlerã¢ã¼ãã¨ãªãï¼
|
---|
| 155 |
|
---|
| 156 | âBASEPRIã¬ã¸ã¹ã¿
|
---|
| 157 |
|
---|
| 158 | è¨å®ããåªå
|
---|
| 159 | 度以ä¸ã®åªå
|
---|
| 160 | 度ã®å²è¾¼ã¿ã®åä»ãç¦æ¢ããï¼ãã®åªå
|
---|
| 161 | 度ãã¹ã¯ã
|
---|
| 162 | "BASEPRIåªå
|
---|
| 163 | 度ãã¹ã¯"ã¨å¼ã¶ï¼'0'ãè¨å®ããã¨ï¼å
|
---|
| 164 | ¨ã¦ã®å²è¾¼ã¿ã許å¯ããï¼
|
---|
| 165 | ä¾å¤/å²è¾¼ã¿ã®åä»ã¨ãªã¿ã¼ã³ã«ããå¤åããªãï¼ä¾å¤/å²è¾¼ã¿ã«å¯¾ããå²è¾¼ã¿
|
---|
| 166 | åªå
|
---|
| 167 | 度ãã¹ã¯ã¯ï¼NVICåªå
|
---|
| 168 | 度ãã¹ã¯ã¨BASEPRIã®è¨å®å¤ã®é«ãæ¹ï¼å¤ãå°ãã
|
---|
| 169 | æ¹ï¼ã¨ãªãï¼
|
---|
| 170 |
|
---|
| 171 | âFAULTMASK
|
---|
| 172 |
|
---|
| 173 | FAULTMASKã¯'1'ãã»ãããããã¨ã«ããï¼NMI以å¤ã®å
|
---|
| 174 | ¨ã¦ã®å²è¾¼ã¿ãç¦æ¢ããï¼
|
---|
| 175 | FAULTMASKã¯ï¼ä¾å¤ã®ãªã¿ã¼ã³å¦çã«ãã'0'ã«ã¯ãªã¢ãããï¼
|
---|
| 176 |
|
---|
| 177 | âPRIMASKã¨WFI
|
---|
| 178 |
|
---|
| 179 | PRIMASKã'1'ã«è¨å®ããã¨ï¼NMI 㨠Hardware Fault 以å¤ã®ä¾å¤/å²è¾¼ã¿ãç¦
|
---|
| 180 | æ¢ããï¼PRIMASKã¯å²è¾¼ã¿ã®è¨±å¯ã¨å²è¾¼ã¿å¾
|
---|
| 181 | ã¡ãã¢ãããã¯ã«è¡ãããã«ç¨ã
|
---|
| 182 | ãï¼å
|
---|
| 183 | ·ä½çã«ã¯ï¼PRIMASKãã»ããããã¦ããç¶æ
|
---|
| 184 | ã§wfiãå®è¡ããã¨ï¼å²ãè¾¼
|
---|
| 185 | ã¿å¾
|
---|
| 186 | ã¡ã¨ãªãï¼å²è¾¼ã¿åä»ããã¨ãã³ãã©ãå®è¡ããã«ï¼wfiãããªã¿ã¼ã³ã
|
---|
| 187 | ã¦ããï¼
|
---|
| 188 |
|
---|
| 189 | âä¾å¤/å²è¾¼ã¿ã®åä»
|
---|
| 190 |
|
---|
| 191 | ã»ä¾å¤/å²è¾¼ã¿ãåä»ããã¨ï¼åä»ãæã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ä¸ã«ä»¥ä¸ã®ã³
|
---|
| 192 | ã³ããã¹ããä¿åãã(ä¾å¤ãã¬ã¼ã ã¨å¼ã¶)ï¼
|
---|
| 193 |
|
---|
| 194 | -----------
|
---|
| 195 | | R0 | <- new SP
|
---|
| 196 | -----------
|
---|
| 197 | | R1 |
|
---|
| 198 | -----------
|
---|
| 199 | | R2 |
|
---|
| 200 | -----------
|
---|
| 201 | | R3 |
|
---|
| 202 | -----------
|
---|
| 203 | | R12 |
|
---|
| 204 | -----------
|
---|
| 205 | | LR |
|
---|
| 206 | -----------
|
---|
| 207 | | PC |
|
---|
| 208 | -----------
|
---|
| 209 | | xPSR |
|
---|
| 210 | -----------
|
---|
| 211 | | | <- old SP
|
---|
| 212 |
|
---|
| 213 | ã»ããã»ããµãHandlerã¢ã¼ãã¨ããï¼MSPãæå¹ã¨ãªãï¼
|
---|
| 214 | ã»åä»ããä¾å¤/å²è¾¼ã¿ã®ä¾å¤çªå·ãIPSRã«è¨å®ããï¼
|
---|
| 215 | ã»NVICå²è¾¼ã¿åªå
|
---|
| 216 | 度ãã¹ã¯ãåä»ããä¾å¤/å²è¾¼ã¿ã®åªå
|
---|
| 217 | 度ã«è¨å®ããï¼
|
---|
| 218 | ã»lrã«EXC_RETURNã®å¤ãè¨å®ãããï¼
|
---|
| 219 | ã»ãã¯ã¿ãã¼ãã«ãèªã¿è¾¼ã¿ãã³ãã©ãå®è¡ããï¼
|
---|
| 220 | ã»ã¹ã¿ãã¯ãã¬ã¼ã ã¯ï¼Configureation and Control Register(CCR)ã®
|
---|
| 221 | STKALIGNã'1'ã®å ´åã¯ï¼8byteå¢çã«ã¢ã©ã¤ã³ãããï¼
|
---|
| 222 |
|
---|
| 223 | âä¾å¤/å²è¾¼ã¿ããã®ãªã¿ã¼ã³
|
---|
| 224 |
|
---|
| 225 | pcã«EXC_RETURNã®å¤ãè¨å®ãããã¨ã«ããï¼ä¾å¤/å²è¾¼ã¿ãããªã¿ã¼ã³ããï¼
|
---|
| 226 | pcã¸ã®è¨å®ã«ä½¿ç¨å¯è½ãªå½ä»¤ã«ã¯å¶éãããï¼ä»¥ä¸å½ä»¤ã使ç¨å¯è½ã§ããï¼
|
---|
| 227 |
|
---|
| 228 | ã»POP/LDM, LDR, BX
|
---|
| 229 |
|
---|
| 230 | âæªè§£æ±ºèª²é¡
|
---|
| 231 |
|
---|
| 232 | ã»ãã¯ã¿ã¼ãã¼ãã«ã«ç»é²ããé¢æ°ã®ã¢ãã¬ã¹ã®LSBã¯'1'ã«ããã¹ãã?
|
---|
| 233 | ã»NVICã¯ä¾å¤ã»å²è¾¼ã¿ã®ãã¹ãåæ°ãå
|
---|
| 234 | é¨çã«ç®¡çãã¦ãããããï¼
|
---|
| 235 | (!ãªãã¡ã¬ã³ã¹ãæããã«)ï¼
|
---|
| 236 | ã½ããã¦ã§ã¢ã§ã¯ï¼ãã¹ãã®å¸³å°»ãåãããã°ï¼ãªã¿ã¼ã³ã¹ã¿ãã¯ãå½é ã
|
---|
| 237 | ã¦ãåé¡ãªããï¼
|
---|
| 238 |
|
---|
| 239 |
|
---|
| 240 | âOSã®å®è£
|
---|
| 241 |
|
---|
| 242 |
|
---|
| 243 | 1.ã¿ã¼ã²ããå
|
---|
| 244 |
|
---|
| 245 | 1-1 cm3(Cortex-M3)
|
---|
| 246 | 1-2 armv7m(ARMV7M)
|
---|
| 247 | 1-3 arm_m
|
---|
| 248 |
|
---|
| 249 | cm3ã§ã¯ï¼Coretex-M1(armv6-m)ããµãã¼ãããå ´åã«åé¡ã¨ãªãï¼armv7mã§ã¯ï¼
|
---|
| 250 | armv8mããªãªã¼ã¹ãããå ´åã«åé¡ã¨ãªãï¼ARMä¾åé¨ã¯JSPã§ã¯ï¼armv4ã¨ãª
|
---|
| 251 | ã£ã¦ãããï¼armv5ãarmv7ãåä½ããããASPã§ã¯åã«armã¨ããï¼ãã®ããï¼
|
---|
| 252 | arm_mãç¡é£ã¨èããããï¼
|
---|
| 253 |
|
---|
| 254 |
|
---|
| 255 | 2.Threadã¢ã¼ãã¨Handlerã¢ã¼ãã®ä½¿ãåã
|
---|
| 256 |
|
---|
| 257 | 2-1
|
---|
| 258 | ã¿ã¹ã¯ã³ã³ããã¹ãã¯Threadã¢ã¼ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãã¯Handlerã¢ã¼
|
---|
| 259 | ãã§åä½ãããï¼
|
---|
| 260 |
|
---|
| 261 | 2-2
|
---|
| 262 | ã¿ã¹ã¯ã³ã³ããã¹ãã¨éã¿ã¹ã¯ã³ã³ããã¹ãå
|
---|
| 263 | ±ã«Handlerã¢ã¼ãã§åä½ãã
|
---|
| 264 | ãï¼
|
---|
| 265 |
|
---|
| 266 | ããã»ããµã®è¨è¨æ¹éãèæ
|
---|
| 267 | ®ããã¨2-1ãæåï¼2-1ã§ã®åé¡ç¹ã¨ãã¦ã¯ï¼å²è¾¼
|
---|
| 268 | ã¿ãã³ãã©ããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã«ã¢ã¼ãã®å¤æ´ã以ä¸ã®æ§ã«å¤çºããã
|
---|
| 269 | ã¨ãæããããï¼
|
---|
| 270 |
|
---|
| 271 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 272 | 2.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 273 | 3.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³å¦ç : Handlerã¢ã¼ã
|
---|
| 274 | 4.ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 275 |
|
---|
| 276 | 3ã§Handlerã¢ã¼ãã«ç§»è¡ããå¿
|
---|
| 277 | è¦ãããã®ã¯ï¼ä¾å¤ãã¬ã¼ã ãç¨ãã¦å¾©å¸°ãã
|
---|
| 278 | ã«ã¯ï¼Handlerã¢ã¼ãã§ä¾å¤ãªã¿ã¼ã³å¦çãè¡ãå¿
|
---|
| 279 | è¦ãããããã§ããï¼ARMã§
|
---|
| 280 | ã¯ï¼è¤æ°ã¬ã¸ã¹ã¿ã®ãã¼ãã¨CPSRã®å¾©å¸°ãåæã«è¡ãããï¼M3ã¯è¡ããªãããï¼
|
---|
| 281 | ãã®æ¹æ³ã§å²è¾¼ã¿å
|
---|
| 282 | ã®ã¿ã¹ã¯ã«ãªã¿ã¼ã³ããå¿
|
---|
| 283 | è¦ãããï¼
|
---|
| 284 |
|
---|
| 285 | 2-2ã®å ´åã®å²è¾¼ã¿ãã³ãã©ããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã«ã¢ã¼ãã®å¤æ´ã以ä¸
|
---|
| 286 | ã«ç¤ºãï¼ã¾ãï¼2-2ã§ã¯å²è¾¼ã¿åªå
|
---|
| 287 | 度ã®æä½å¤ãã¿ã¹ã¯ã®å®è¡æã®åªå
|
---|
| 288 | 度ã¨ã
|
---|
| 289 | ã¦ãªã¶ã¼ãããå¿
|
---|
| 290 | è¦ãããï¼
|
---|
| 291 |
|
---|
| 292 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 293 | 2.NVICåªå
|
---|
| 294 | 度ãã¹ã¯'0'ã0㸠: Threadã¢ã¼ã
|
---|
| 295 | 3.æä½åªå
|
---|
| 296 | 度ã®Handlerã¢ã¼ã㸠: Handlerã¢ã¼ã
|
---|
| 297 | 4.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Handlerã¢ã¼ã
|
---|
| 298 | 5.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ã®åå¦ç : Threadã¢ã¼ã
|
---|
| 299 | 3.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 300 | 4.ã¿ã¹ã¯ã®åé : Handlerã¢ã¼ã
|
---|
| 301 |
|
---|
| 302 | å²è¾¼ã¿ãã³ãã©ããã¿ã¹ã¯ã®ãªã¿ã¼ã³ã«é¢ãã¦ã¯ï¼2-2ã§ãã£ã¦ãï¼2ãå®è¡ã
|
---|
| 303 | ãå ´åã«ï¼NVICåªå
|
---|
| 304 | 度ãã¹ã¯ã'0'ã«ããããï¼ä¾å¤ãªã¿ã¼ã³å¦çãè¡ãå¿
|
---|
| 305 | è¦
|
---|
| 306 | ãããï¼ã¾ãï¼NVICèªä½ãï¼å²è¾¼ã¿ã®ãã¹ãåæ°ã管çãã¦ããããï¼3ãã4
|
---|
| 307 | ã¸ã®é·ç§»ã®ããã«ï¼ãã£ããä¾å¤/å²è¾¼ã¿ãåä»ããç¶æ
|
---|
| 308 | ã«ããå¿
|
---|
| 309 | è¦ãããã
|
---|
| 310 | ãï¼çµæçã«2-1以ä¸ã®é·ç§»ãå¿
|
---|
| 311 | è¦ã¨ãªãï¼
|
---|
| 312 |
|
---|
| 313 | 2-2ã®å ´åã¯ï¼MSPãã使ããªãããï¼å²è¾¼ã¿ã®å
|
---|
| 314 | ¥ãå£ã§ãã¹ãåæ°ãå¤æãã¦ï¼
|
---|
| 315 | ã¹ã¿ãã¯ãå
|
---|
| 316 | ¥ãæ¿ããå¿
|
---|
| 317 | è¦ãããï¼
|
---|
| 318 |
|
---|
| 319 | HRPçã§ã¡ã¢ãªä¿è·ãç¨ããå ´åã¯2-1ã¨ãªãï¼
|
---|
| 320 |
|
---|
| 321 | 以ä¸ã®çç±ã«ããï¼2-1ãæ¡ç¨ããï¼ãã ã2-1ã¯ï¼ã«ã¼ãã«èµ·åæã¨IDLEã«ã¼
|
---|
| 322 | ãã®æ±ããæ¤è¨ããå¿
|
---|
| 323 | è¦ãããï¼ãããã«ã¤ãã¦ã¯å¥éè°è«ããï¼
|
---|
| 324 |
|
---|
| 325 |
|
---|
| 326 | 3.ãã£ã¹ãããã£ã®å®è¡ã¢ã¼ã
|
---|
| 327 |
|
---|
| 328 | 3-1
|
---|
| 329 | Threadã¢ã¼ãã§å®è¡ãã
|
---|
| 330 |
|
---|
| 331 | 3-2
|
---|
| 332 | Handlerã¢ã¼ãã§å®è¡ãã
|
---|
| 333 |
|
---|
| 334 | ãã£ã¹ãããã£ãThreadã¢ã¼ãã§å®è¡ããã¨ï¼å²è¾¼ã¿ã«ããããªã¨ã³ãããã
|
---|
| 335 | ãã¿ã¹ã¯ã«æ»ãå ´åã¯æ¬¡ã®ãããªãã¹ã«ãªãï¼
|
---|
| 336 |
|
---|
| 337 | 1. ãã£ã¹ãããã£å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 338 | 2. ãã£ã¹ãããã£å®è¡ : Threadã¢ã¼ã
|
---|
| 339 | 3. ã¿ã¹ã¯ä¾å¤å®è¡ : Threadã¢ã¼ã
|
---|
| 340 | 4ï¼ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³å¦ç : Handlerã¢ã¼ã
|
---|
| 341 | 5. ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 342 |
|
---|
| 343 | å²è¾¼ã¿ãã³ãã©ããèªããã£ã¹ãããããã¿ã¹ã¯ã¸ãªã¿ã¼ã³ããå ´åã¯æ¬¡ã®ã
|
---|
| 344 | ã¹ã«ãªãï¼
|
---|
| 345 |
|
---|
| 346 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 347 | 2.ãã£ã¹ãããã£å®è¡ : Threadã¢ã¼ã
|
---|
| 348 | 3.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 349 | 4.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 350 | 5.ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 351 |
|
---|
| 352 | ä¸æ¹ï¼ãã£ã¹ãããã£ãHandlerã¢ã¼ãã§å®è¡ããã¨ï¼å²è¾¼ã¿ã«ããããªã¨ã³
|
---|
| 353 | ãããããã¿ã¹ã¯ã«æ»ãå ´åã¯æ¬¡ã®ãããªãã¹ã«ãªãï¼
|
---|
| 354 |
|
---|
| 355 | 1. ãã£ã¹ãããã£å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 356 | 2. ãã£ã¹ãããã£å®è¡ : Handlerã¢ã¼ã
|
---|
| 357 | 3. ã¿ã¹ã¯ä¾å¤å®è¡ : Threadã¢ã¼ã
|
---|
| 358 | 4ï¼ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 359 | 5. ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 360 |
|
---|
| 361 | å²è¾¼ã¿ãã³ãã©ã®åºå£ããèªããã£ã¹ãããããã¿ã¹ã¯ã¸ãªã¿ã¼ã³ããå ´åã¯
|
---|
| 362 | 次ã®ãã¹ã«ãªãï¼
|
---|
| 363 |
|
---|
| 364 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 365 | 2.ãã£ã¹ãããã£å®è¡ : Handlerã¢ã¼ã
|
---|
| 366 | 3.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 367 | 4.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 368 | 5.ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 369 |
|
---|
| 370 | ã¿ã¹ã¯ä¾å¤ãã³ãã©ããªãOSã®å ´åã¯ï¼Handlerã¢ã¼ãã§å®è¡ããæ¹ãã¢ã¼ã
|
---|
| 371 | ã®é·ç§»ã®åæ°ãæ¸ããï¼ã¿ã¹ã¯ä¾å¤ãã³ãã©ãããã¨ï¼Threadã¢ã¼ãã®æ¹ãé·
|
---|
| 372 | 移åæ°ãæ¸ãããï¼Threadã¢ã¼ãã¨ããï¼
|
---|
| 373 |
|
---|
| 374 | ã¡ã¢ãªä¿è·ãèæ
|
---|
| 375 | ®ããã¨ï¼ãã£ã¹ãããã£ã¯Handlerã¢ã¼ãã§åä½ãããæ¹ã
|
---|
| 376 | å¹çãããã¨èããããï¼SVCã§ãã³ãã©ãå¼ã³åºãã¨Handlerã¢ã¼ãã¨ãªãã
|
---|
| 377 | ãï¼ï¼
|
---|
| 378 |
|
---|
| 379 |
|
---|
| 380 | 4.ã¹ã¿ãã¯ã®ä½¿ãåã
|
---|
| 381 |
|
---|
| 382 | 4-1
|
---|
| 383 | ã¿ã¹ã¯ã³ã³ããã¹ããPSP, éã¿ã¹ã¯ã³ã³ããã¹ããMSP
|
---|
| 384 | 4-2
|
---|
| 385 | ã¿ã¹ã¯ã³ã³ããã¹ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãå
|
---|
| 386 | ±ã«MSP
|
---|
| 387 |
|
---|
| 388 | 4-2ã®å ´åï¼å²è¾¼ã¿ã®å
|
---|
| 389 | ¥ãå£ã§ãã¹ãåæ°ãå¤æãã¦ï¼ã¹ã¿ãã¯ãå
|
---|
| 390 | ¥ãæ¿ãã
|
---|
| 391 | å¿
|
---|
| 392 | è¦ãããï¼2ã§ã¿ã¹ã¯ã³ã³ããã¹ãã¯Threadã¢ã¼ãï¼éã¿ã¹ã¯ã³ã³ããã¹ã
|
---|
| 393 | ã¯Handlerã¢ã¼ãã§åä½ãããã¨ããããï¼4-1ãæ¡ç¨ããã¨ï¼å²è¾¼ã¿ã®å
|
---|
| 394 | ¥ãå£
|
---|
| 395 | ã§èªåçã«ã¹ã¿ãã¯ãåãæ¿ããï¼Threadã¢ã¼ãã§ã®PSPã®ã¢ã¯ã»ã¹ãï¼
|
---|
| 396 | mrs/msrå½ä»¤ã§è¡ããããï¼4-1ãæ¡ç¨ããï¼
|
---|
| 397 |
|
---|
| 398 |
|
---|
| 399 | 5.ã³ã³ããã¹ãã®å¤å®
|
---|
| 400 |
|
---|
| 401 | 5-1
|
---|
| 402 | IPSRã'0'(Threadã¢ã¼ã)ãªãã¿ã¹ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼'1'(Handlerã¢ã¼
|
---|
| 403 | ã)ãªãéã¿ã¹ã¯ã³ã³ããã¹ãã¨ããï¼
|
---|
| 404 |
|
---|
| 405 | 5-2
|
---|
| 406 | å²è¾¼ã¿ã®ãã¹ãåæ°ãä¿æããå¤æ°ãç¨æï¼1以ä¸ã§éã¿ã¹ã¯ã³ã³ããã¹ãï¼
|
---|
| 407 |
|
---|
| 408 | 5-3
|
---|
| 409 | ã¢ã¯ãã£ããªã¹ã¿ãã¯ã«ããå¤æï¼MSPãªãéã¿ã¹ã¯ã³ã³ããã¹ãï¼PSPãªã
|
---|
| 410 | ã¿ã¹ã¯ã³ã³ããã¹ãã¨ããï¼
|
---|
| 411 |
|
---|
| 412 | 5-1ã¯ï¼ã½ããã¦ã§ã¢å´ã§ã³ã³ããã¹ã管çã®ããã®å¦çãè¡ãå¿
|
---|
| 413 | è¦ããªãã¨
|
---|
| 414 | ããã¡ãªãããããï¼ããããªããï¼ã«ã¼ãã«ã®èµ·åæThreadã¢ã¼ãã§ããã
|
---|
| 415 | ãï¼Handlerã¢ã¼ãã¸ç§»è¡ããå¿
|
---|
| 416 | è¦ãããï¼ASPã«ã¼ãã«ã§ã¯ï¼IDLEã«ã¼ãå®è¡
|
---|
| 417 | ã¯éã¿ã¹ã¯ã³ã³ããã¹ãã¨ãã¦åä½ãããå¿
|
---|
| 418 | è¦ãããããï¼IDLEã«ã¼ãã¯
|
---|
| 419 | Handlerã¢ã¼ãã§åä½ãããå¿
|
---|
| 420 | è¦ãããï¼IDLEã«ã¼ãã¯ãã£ã¹ãããã£ããå¼
|
---|
| 421 | ã³åºãããï¼3ã§å®ããããã«ï¼ãã£ã¹ãããã£ãThreadã¢ã¼ãã§åä½ããã
|
---|
| 422 | ããï¼IDLEã«ã¼ããå¼ã³åºãéã«ã¯ï¼Handlerã¢ã¼ãã¸é·ç§»ããå¿
|
---|
| 423 | è¦ãããï¼
|
---|
| 424 | Handlerã¢ã¼ãã¸ã®é·ç§»ã¯ï¼SVC/PendSVCãç¨ããã¨å®ç¾å¯è½ã§ãããï¼6ã®å²
|
---|
| 425 | è¾¼ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã®Handlerã¢ã¼ãã¸ã®ç§»è¡ã§
|
---|
| 426 | ãSVC/PendSVCã®ä½¿ç¨ãå¿
|
---|
| 427 | è¦ã¨ãªãããï¼SVCãã³ãã©ã§ã¯ï¼ã©ã®ç®çã§å¼ã³åº
|
---|
| 428 | ããããå¤å®ããå¿
|
---|
| 429 | è¦ãåºã¦ããããï¼ãªã¼ãããããå¢å¤§ããï¼
|
---|
| 430 |
|
---|
| 431 | 5-2ã§ã¯ï¼ã«ã¼ãã«èµ·åæãIDLEã«ã¼ãæã«å¤æ°ã'1'ã«è¨å®ããã°ãããã¨ã«
|
---|
| 432 | ãªãï¼ãã®å ´åï¼ã«ã¼ãã«èµ·åæãIDLEã«ã¼ãæã«Threadã¢ã¼ãã§å®è¡ãã¦ã
|
---|
| 433 | åä½ã«åé¡ããªãããï¼ç¹ã«å²è¾¼ã¿ã®åºå
|
---|
| 434 | ¥ãå£ã®è¨è¨ã注æããå¿
|
---|
| 435 | è¦ãããï¼
|
---|
| 436 |
|
---|
| 437 | ã«ã¼ãã«èµ·åæã«é¢ãã¦ã¯ï¼å
|
---|
| 438 | ¨å²è¾¼ã¿ãç¦æ¢ãã¦ããï¼å²è¾¼ã¿ãå
|
---|
| 439 | ¥ããªãã®ã§
|
---|
| 440 | ç¹ã«åé¡ã¯ãªãï¼IDLEã«ã¼ãæã¯ï¼Threadã¢ã¼ãã§MSPã¨PSPã®é¸æãå¯è½ã§ã
|
---|
| 441 | ããã¨ãå©ç¨ãã¦ï¼éã¿ã¹ã¯ã³ã³ããã¹ãã®ã¹ã¿ãã¯ã§ããMSPã«å¤æ´ããï¼
|
---|
| 442 | ä¾å¤/å²è¾¼ã¿ã®å
|
---|
| 443 | ¥ãå£ã§ã¯ï¼å¤éå²è¾¼ã¿ã§ããããEXC_RETURNã®ã¢ã¼ãå¤å®ã®
|
---|
| 444 | ãããã§ã¯ãªãï¼ã¹ã¿ãã¯ã®å¤å®ãããã§è¡ãã°åé¡ãªãï¼ä¾å¤/å²è¾¼ã¿ãã
|
---|
| 445 | ã®ãªã¿ã¼ã³ã«é¢ãã¦ã¯ï¼å¤éå²è¾¼ã¿ã®å¤å®ã¯ï¼å
|
---|
| 446 | ¥ãå£ã¨åæ§ã«EXC_RETURNã®ã¹
|
---|
| 447 | ã¿ãã¯å¤å®ãããã§è¡ãã°ããï¼ä¾å¤ãªã¿ã¼ã³å¦çæã«pcã«ä»£å
|
---|
| 448 | ¥ãã
|
---|
| 449 | EXC_RETURNã®å¤ãä¸å¾0xfffffffd (Threadã¢ã¼ã with MSP)ã¨ããã®ã§ã¯ãªãï¼
|
---|
| 450 | ä¾å¤/å²è¾¼ã¿åä»ãæã«LRã«è¨å®ãããEXC_RETURNãç¨ãããã¨ã«ããï¼IDLE
|
---|
| 451 | ã«ã¼ãã«å²ãè¾¼ãã å ´åã§ãåé¡ãªããªã¿ã¼ã³ããï¼
|
---|
| 452 |
|
---|
| 453 | ã«ã¼ãã«èµ·åæã¯ï¼MSPãã¢ã¯ãã£ãã§ããï¼å²è¾¼ã¿ãã³ãã©å®è¡æã¯Handler
|
---|
| 454 | ã¢ã¼ãã§ãããã¨ããMSPãã¢ã¯ãã£ãã§ãï¼IDLEã«ã¼ãæã«MSPãã¢ã¯ãã£ã
|
---|
| 455 | ã«è¨å®ããã¨ï¼éã¿ã¹ã¯ã³ã³ããã¹ãã¯å
|
---|
| 456 | ¨ã¦ï¼MSPãã¢ã¯ãã£ãã«ãã¦åä½ã
|
---|
| 457 | ããã¨ã«ãªãï¼ã¾ãï¼å²è¾¼ã¿æã¯å²è¾¼ã¿åã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ã®æ
|
---|
| 458 | å ±ãï¼
|
---|
| 459 | EXC_RETURNã«è¨å®ãããï¼ãã®ããï¼ã³ã³ããã¹ãã®å¤å®ã¯ï¼å²è¾¼ã¿ãã¹ãå
|
---|
| 460 | æ°ãä¿æããå¤æ°ããªãã¨ãï¼ã¢ã¯ãã£ããªã¹ã¿ãã¯ãè¦ãã°ãããã¨ã«ãªãï¼
|
---|
| 461 | ã¾ãï¼exc_sense_context()ã«é¢ãã¦ã¯ï¼ä¾å¤ãã¬ã¼ã ä¸ã«EXC_RETURNã追å
|
---|
| 462 | ãï¼ãã®å
|
---|
| 463 | 容ã«ããå¤æããã°ããï¼ä»¥ä¸ã®çç±ã«ããï¼5-3ãæ¡ç¨ããï¼
|
---|
| 464 |
|
---|
| 465 |
|
---|
| 466 | 6.å²è¾¼ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã®Handlerã¢ã¼ãã¸ã®ç§»
|
---|
| 467 | è¡æ¹æ³
|
---|
| 468 |
|
---|
| 469 | 6-1
|
---|
| 470 | SVCãç¨ãã
|
---|
| 471 | 6-2
|
---|
| 472 | PendSVCãç¨ãã
|
---|
| 473 |
|
---|
| 474 | PendSVCã¨SVCã®éãã¯ï¼PendSVCãè¦æ±ããã¥ã¼ã¤ã³ã°ããï¼SVCã¯è¦æ±ããã¥
|
---|
| 475 | ã¼ã¤ã³ã°ãããªããã¨ã§ããï¼å²è¾¼ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼
|
---|
| 476 | ã³æã®Handlerã¢ã¼ãã¸ã®ç§»è¡ã¯ï¼ãã¥ã¼ã¤ã³ã°ãããã«å³åº§ã«å¦çãããå¿
|
---|
| 477 |
|
---|
| 478 | è¦ãããããï¼ã©ã¡ãã§å®ç¾ãã¦ãåé¡ãªãï¼ã©ã¡ããã«ã¼ãã«ã®ãªã½ã¼ã¹ã
|
---|
| 479 | ã¦ä½¿ç¨ãããã®é¸æã ãã§ããï¼
|
---|
| 480 |
|
---|
| 481 | ã©ã¡ãã使ãã¨ãã¦ãï¼åªå
|
---|
| 482 | 度ã®è¨å®ãåé¡ã¨ãªãï¼ãã£ã¹ãããã£ããå²è¾¼
|
---|
| 483 | ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ã¾ã§ã®å¦çã¯ï¼å°ãªãã¨ãCPUã
|
---|
| 484 | ãã¯ç¶æ
|
---|
| 485 | ã§å®è¡ãããªããã°ãªããªãï¼SVCãPendSVCã¯ã©ã¡ããå²è¾¼ã¿åªå
|
---|
| 486 | 度
|
---|
| 487 | ãæã¤ããï¼NVICåªå
|
---|
| 488 | 度ãã¹ã¯ããBASEPRIåªå
|
---|
| 489 | 度ãã¹ã¯ã®æ¹ãé«ãå ´åï¼å¦
|
---|
| 490 | çãããªãï¼
|
---|
| 491 |
|
---|
| 492 | CPUããã¯ç¶æ
|
---|
| 493 | ãBASEPRIã®è¨å®ã§å®ç¾ããå ´åï¼ãã®è¨å®å¤ãSVCãPendSVCã«
|
---|
| 494 | è¨å®ããå¤ããä½ãããå¿
|
---|
| 495 | è¦ãããï¼è¨ãæããã¨ï¼SVCãPendSVCã®åªå
|
---|
| 496 | 度ã
|
---|
| 497 | CPUããã¯æã®åªå
|
---|
| 498 | 度ãã¹ã¯ã®å¤ããé«ãå¤ï¼ä»ã®å²è¾¼ã¿ããé«ãåªå
|
---|
| 499 | 度ï¼ã¨
|
---|
| 500 | ããå¿
|
---|
| 501 | è¦ãããï¼
|
---|
| 502 |
|
---|
| 503 | CPUããã¯ç¶æ
|
---|
| 504 | ãFAULTMASKãPRIMASKã§å®ç¾ããå ´åã¯ï¼ããããè¨å®ããã
|
---|
| 505 | ã¨ï¼SVCãPendSVCãåä»ããããªãããï¼ãã£ããBASEPRIã«ããå²è¾¼ã¿ãã
|
---|
| 506 | ã¹ã¯ããããã«è¨å®ããå¿
|
---|
| 507 | è¦ãããï¼ãã®å ´åãï¼SVCãPendSVCã¯ä»ã®å²è¾¼ã¿
|
---|
| 508 | ããé«ãåªå
|
---|
| 509 | 度ãè¨å®ããå¿
|
---|
| 510 | è¦ãããï¼
|
---|
| 511 |
|
---|
| 512 | 以ä¸ã«ããï¼Handlerã¢ã¼ãã¸ã®ç§»è¡ã®ããã«ã¯ï¼CPUããã¯ç¶æ
|
---|
| 513 | ãBASEPRIã§
|
---|
| 514 | å®ç¾ãï¼SVCãPendSVCã«è¨å®ããåªå
|
---|
| 515 | 度ãã«ã¼ãã«ç®¡çå
|
---|
| 516 | ã®æé«åªå
|
---|
| 517 | 度ããä¸
|
---|
| 518 | ã¤é«ãåªå
|
---|
| 519 | 度ã«è¨å®ããå¿
|
---|
| 520 | è¦ãããï¼
|
---|
| 521 |
|
---|
| 522 |
|
---|
| 523 | 7. ä¾å¤/å²è¾¼ã¿åºå
|
---|
| 524 | ¥ãå£ã§ã®å¤éå²è¾¼ã¿ã®å¤æ
|
---|
| 525 |
|
---|
| 526 | 7-1
|
---|
| 527 | EXC_RETURNã®ã¢ã¼ãå¤å®ããã
|
---|
| 528 | 7-2
|
---|
| 529 | EXC_RETURNã®ã¹ã¿ãã¯å¤å®ããã
|
---|
| 530 | 7-3
|
---|
| 531 | å²è¾¼ã¿ãã¹ãåæ°ã®ç®¡çå¤æ°
|
---|
| 532 |
|
---|
| 533 | ä¾å¤/å²è¾¼ã¿åä»ãæã¯ï¼åä»ããä¾å¤/å²è¾¼ã¿ä»¥ä¸ã®å²è¾¼ã¿ã¯ç¦æ¢ãããï¼å
|
---|
| 534 | ¨
|
---|
| 535 | å²è¾¼ã¿ç¦æ¢ç¶æ
|
---|
| 536 | ã«ã¯ãªããªãï¼ãã®ããï¼å²è¾¼ã¿ãã¹ãåæ°ã®ç®¡çå¤æ°ãã¤ã³
|
---|
| 537 | ã¯ãªã¡ã³ãããåã«å²è¾¼ã¿ãå
|
---|
| 538 | ¥ãå¯è½æ§ãããããï¼7-3ã¯ä½¿ç¨ãããã¨ãã§
|
---|
| 539 | ããªãï¼
|
---|
| 540 |
|
---|
| 541 | 5ã§è°è«ããéãï¼IDLEã«ã¼ããThreadã¢ã¼ãã§å®è¡ããããï¼7-1ã§ã¯ãªãï¼
|
---|
| 542 | 7-2ã§å¤æããå¿
|
---|
| 543 | è¦ãããï¼
|
---|
| 544 |
|
---|
| 545 |
|
---|
| 546 | 8. IDLEã«ã¼ã
|
---|
| 547 |
|
---|
| 548 | 8-1
|
---|
| 549 | Threadã¢ã¼ãã§å®è¡
|
---|
| 550 | 8-2
|
---|
| 551 | Handlerã¢ã¼ãã§å®è¡
|
---|
| 552 |
|
---|
| 553 | 5ã§è°è«ããéãï¼Threadã¢ã¼ãã§å®è¡ã§ããæ¹ããªã¼ãããããå°ããï¼ã¾
|
---|
| 554 | ãï¼Threadã¢ã¼ãã§å®è¡ãã¦ãï¼å²ãè¾¼ã¿ã®åºå
|
---|
| 555 | ¥ãå£ã§æ£ããéã¿ã¹ã¯ã³ã³ã
|
---|
| 556 | ãã¹ãã¨å¤å®ã§ããã°ï¼Threadã¢ã¼ãã§åé¡ãªãï¼
|
---|
| 557 |
|
---|
| 558 |
|
---|
| 559 | 9ï¼ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã®ãµãã¼ã
|
---|
| 560 |
|
---|
| 561 | 9-1
|
---|
| 562 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ãããªã
|
---|
| 563 | 9-2
|
---|
| 564 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ããã
|
---|
| 565 |
|
---|
| 566 | ãã¯ã¿ãã¼ãã«ããµãã¼ããã¦ããï¼å²è¾¼ã¿ãã³ãã©ãCè¨èªã§è¨è¿°å¯è½ã§ã
|
---|
| 567 | ãããï¼ãµãã¼ãã容æã§ããããï¼ãµãã¼ãããï¼
|
---|
| 568 |
|
---|
| 569 |
|
---|
| 570 | 10. CPUããã¯
|
---|
| 571 |
|
---|
| 572 | 10-1
|
---|
| 573 | BASEPRIã使ç¨
|
---|
| 574 | 10-2
|
---|
| 575 | FAULTMASK/PRIMASKã使ç¨
|
---|
| 576 |
|
---|
| 577 | ã«ã¼ãã«ã®ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ããããªãï¼BASEPRIã使ç¨ããå¿
|
---|
| 578 | è¦ãã
|
---|
| 579 | ãï¼
|
---|
| 580 |
|
---|
| 581 |
|
---|
| 582 | 11. å²è¾¼ã¿ããã¯ã¨CPUä¾å¤ã®é¢ä¿
|
---|
| 583 |
|
---|
| 584 | 11-1
|
---|
| 585 | BASEPRIã使ç¨
|
---|
| 586 | 11-2
|
---|
| 587 | FAULTMASK/PRIMASKã使ç¨
|
---|
| 588 |
|
---|
| 589 | FAULTMASK/PRIMASKã使ç¨ããã¨ï¼NMI 㨠Hardware Fault 以å¤ã®CPUä¾å¤ãç¦
|
---|
| 590 | æ¢ããã¦ãã¾ãï¼
|
---|
| 591 |
|
---|
| 592 | BASEPRIãç¨ããã¨ï¼å²è¾¼ã¿ããã¯ä¸ã«ãCPUä¾å¤ãåä»ãããå ´åã¯ï¼
|
---|
| 593 | BASEPRIãç¨ãã¦ï¼æé«åªå
|
---|
| 594 | 度ãCPUä¾å¤ã®ããã«ãªã¶ã¼ãããå¿
|
---|
| 595 | è¦ãããï¼
|
---|
| 596 |
|
---|
| 597 | å²è¾¼ã¿ããã¯æãï¼CPUä¾å¤ãåä»ããããã«ããããã°BASEPRIã使ç¨ããå¿
|
---|
| 598 |
|
---|
| 599 | è¦ãããï¼
|
---|
| 600 |
|
---|
| 601 | μIRON4.0ä»æ§ã®3.5.3ã§ã¯ï¼CPUä¾å¤ã®åªå
|
---|
| 602 | 度ã¯æ¬¡ã®ããã«å®ãããã¦ããï¼
|
---|
| 603 |
|
---|
| 604 | "CPUä¾å¤ãã³ãã©ã®åªå
|
---|
| 605 | é ä½ã¯ï¼CPUä¾å¤ãçºçããå¦çã®åªå
|
---|
| 606 | 度ã¨ï¼ãã£ã¹
|
---|
| 607 | ãããã£ã®åªå
|
---|
| 608 | é ä½ã®ãããããããé«ãï¼"
|
---|
| 609 |
|
---|
| 610 | CPUä¾å¤ãçºçããå¦çã®åªå
|
---|
| 611 | 度ãããé«ãã¨ããã®ã§ï¼CPUããã¯ãå²è¾¼ã¿ã
|
---|
| 612 | ãã¯ç¶æ
|
---|
| 613 | ã®ã¿ã¹ã¯ã§çºçããå ´åã§ãï¼åªå
|
---|
| 614 | ãã¦å®è¡ãããã¹ãã ã¨ãèãã
|
---|
| 615 | ããï¼
|
---|
| 616 |
|
---|
| 617 | ä¸æ¹ï¼TOPPERSæ¨æºå²è¾¼ã¿å¦çã¢ãã«ã®ä»æ§æ¸ã§ã¯ï¼CPUä¾å¤ã¯ï¼ããã»ããµæ¯
|
---|
| 618 | ã«ç°ãªãããï¼CPUä¾å¤ã®å¦çã¢ãã«ã®æ¨æºåæ¤è¨ã®å¯¾è±¡å¤ã¨ãã¦ããï¼ãã®
|
---|
| 619 | ããï¼ARM-Mã§ã®æ±ãã決ãã¦ï¼ããã¥ã¢ã«ã«æè¨ããã°ããã¨èããããï¼
|
---|
| 620 |
|
---|
| 621 |
|
---|
| 622 | 12. å¤é¨åªå
|
---|
| 623 | 度ã¨å
|
---|
| 624 | é¨åªå
|
---|
| 625 | 度ã®å¤æ
|
---|
| 626 |
|
---|
| 627 | å¤é¨åªå
|
---|
| 628 | 度ã¨ã¯APIã§æå®ããå²è¾¼ã¿åªå
|
---|
| 629 | 度(PRIå)ã®ãã¨ã§ããï¼å¤ãå°ãã
|
---|
| 630 | ã»ã©åªå
|
---|
| 631 | 度ãé«ãï¼å²è¾¼ã¿ãã³ãã©ã«ã¯ï¼-1ããé£ç¶ããè² ã®å¤ãè¨å®å¯è½ã§
|
---|
| 632 | ããï¼å
|
---|
| 633 | é¨åªå
|
---|
| 634 | 度ã¯ï¼BASEPRIãNVICã®åªå
|
---|
| 635 | 度ã¬ã¸ã¹ã¿ã«è¨å®ããå¤ã§ããï¼
|
---|
| 636 |
|
---|
| 637 | å®è£
|
---|
| 638 | ãããå²è¾¼ã¿åªå
|
---|
| 639 | 度ã®ãããå¹
|
---|
| 640 | ã TBITW_IPRI ã¨ããã¨ï¼è¨å®å¯è½ãªå¤é¨
|
---|
| 641 | åªå
|
---|
| 642 | 度ã¯æ¬¡ã®ããã«ãªãï¼
|
---|
| 643 |
|
---|
| 644 | TIPM_ENAALLï¼ï¼0ï¼ã -(1 << TBITW_IPRI)
|
---|
| 645 |
|
---|
| 646 |
|
---|
| 647 | 13. ã«ã¼ãã«ç®¡çå
|
---|
| 648 | ã®æé«åªå
|
---|
| 649 | 度(CPUããã¯ç¶æ
|
---|
| 650 | ã§ã®åªå
|
---|
| 651 | 度ãã¹ã¯)
|
---|
| 652 |
|
---|
| 653 | 6.ã§è¿°ã¹ãããã«ï¼å²è¾¼ã¿ã®åºå£ã§SVCãã³ãã©ãå¼ã³åºãå¿
|
---|
| 654 | è¦ãããããï¼
|
---|
| 655 | SVCãã³ãã©ã¯CPUããã¯ç¶æ
|
---|
| 656 | ã®BASEPRIã«è¨å®ããåªå
|
---|
| 657 | 度ãã¹ã¯ããé«ãåªå
|
---|
| 658 | 度
|
---|
| 659 | ãè¨å®ããå¿
|
---|
| 660 | è¦ãããï¼
|
---|
| 661 |
|
---|
| 662 | å®è£
|
---|
| 663 | ãããå²è¾¼ã¿åªå
|
---|
| 664 | 度ã®ãããå¹
|
---|
| 665 | ã TBITW_IPRIï¼åªå
|
---|
| 666 | 度ä¸ã®ãµãåªå
|
---|
| 667 | 度ã®
|
---|
| 668 | ãããå¹
|
---|
| 669 | ãTBIT_IPRIã¨ããã¨ï¼CPUããã¯ç¶æ
|
---|
| 670 | ï¼ã«ã¼ãã«ç®¡çå
|
---|
| 671 | å²è¾¼ã¿ã«è¨å®
|
---|
| 672 | å¯è½ãªæé«åªå
|
---|
| 673 | 度ï¼ã¨ãã¦æå®å¯è½ãªåªå
|
---|
| 674 | 度ãã¹ã¯ã®è¨å®ç¯å²ã¯ä»¥ä¸ã®å¤ã®ç¯
|
---|
| 675 | å²ã¨ãªãï¼
|
---|
| 676 |
|
---|
| 677 | -(2^(TBIW_IPRI) - 1) + (2^TBITW_SUBIPRI) ã -1
|
---|
| 678 |
|
---|
| 679 |
|
---|
| 680 | 14. æªè§£æ±ºèª²é¡
|
---|
| 681 |
|
---|
| 682 | ã»å²è¾¼ã¿ããã¯ã¨CPUä¾å¤ã®é¢ä¿
|
---|
| 683 | BASEPRIã使ã£ãã¨ãã¦ãï¼ããCPUä¾å¤å¦çä¸ã«ä»ã®ä¾å¤ãçºçããã¨ï¼ã
|
---|
| 684 | ã®ä¾å¤ã¯åãä»ããããªãããï¼ITRONä»æ§ã¯æºãããªãï¼
|
---|
| 685 | ->ããããã¦ããã¥ã¢ã«è¨è¼ã«éããã.
|
---|
| 686 | ã¡ã¢ãªãããã¯ã·ã§ã³ã®ä¾å¤ããã¹ã¯å¯è½ã§ããããè¦ä»¶çï¼
|
---|
| 687 |
|
---|
| 688 | 以ä¸ï¼
|
---|