[136] | 1 | =====================================================================
|
---|
| 2 | ARM-Mããã»ããµä¾åé¨è¨è¨ã¡ã¢
|
---|
| 3 | Last Modified:2015 Nov 23 08:57:56
|
---|
| 4 | =====================================================================
|
---|
| 5 |
|
---|
| 6 | âãã®ããã¥ã¡ã³ãã®ä½ç½®ã¥ã
|
---|
| 7 |
|
---|
| 8 | ãã®ããã¥ã¡ã³ãã¯ï¼TOPPERS/ASPã«ã¼ãã«ãARMvX-Mããã»ããµã«ç§»æ¤ãããã
|
---|
| 9 | ã®è¨è¨ã¡ã¢ã§ããï¼
|
---|
| 10 |
|
---|
| 11 |
|
---|
| 12 | âARMVx-Mã®ä»æ§ã¾ã¨ã(FPU以å¤)
|
---|
| 13 |
|
---|
| 14 | ARMvX-Mã®ä»æ§ã®ãã¡ï¼ã«ã¼ãã«ã®è¨è¨ã«é¢ä¿ããäºé
|
---|
| 15 | ã«ã¤ãã¦ï¼ã¾ãARMv7-M
|
---|
| 16 | ã«ã¤ãã¦ã¾ã¨ããï¼ARMv6-Mã¯æå¾ã«ARMv7-Mã¨ã®å·®åã¨ãã¦èª¬æããï¼
|
---|
| 17 |
|
---|
| 18 | âåèè³æ
|
---|
| 19 |
|
---|
| 20 | ARMv7-M Architecture Reference Manual E.b
|
---|
| 21 | DDI0403E_B_armv7m_arm.pdf
|
---|
| 22 |
|
---|
| 23 | âã¬ã¸ã¹ã¿
|
---|
| 24 |
|
---|
| 25 | æ±ç¨ã¬ã¸ã¹ã¿ã¯R0ï½R15ã®16種é¡ããï¼R13ã®ã¿ã2ãã³ã¯æ§æï¼PSP,MSPï¼ã¨ãª
|
---|
| 26 | ã£ã¦ããï¼R15ã¯PC, R14ã¯ãªã³ã¯ã¬ã¸ã¹ã¿ï¼LRï¼ã¨ãªã£ã¦ããï¼R0ï½R3,R12ã¯
|
---|
| 27 | ã¹ã¯ã©ããã¬ã¸ã¹ã¿ã§ããï¼
|
---|
| 28 |
|
---|
| 29 | âã³ã¼ãªã³ã°ã³ã³ãã³ã·ã§ã³
|
---|
| 30 |
|
---|
| 31 | R0ï½R4ãå¼æ°ï¼ãã以ä¸ã¯ã¹ã¿ãã¯ï¼æ»ãå¤ã¯ï¼R0ï½R1ã«æ ¼ç´ãããï¼(ARMã«
|
---|
| 32 | ããè¦å®ããã¦ããããï¼ã³ã³ãã¤ã©ã«ä¾åãããã®ã«ã¼ã«ã¨ãªãï¼)
|
---|
| 33 |
|
---|
| 34 | âCONTROLã¬ã¸ã¹ã¿
|
---|
| 35 |
|
---|
| 36 | PSP,MSPã®åãæ¿ãï¼Privilageã¨Userã¢ã¼ãã®ã¬ã¸ã¹ã¿ï¼å¤æ´å¾ã¯ï¼ã¤ã³ã¹ã
|
---|
| 37 | ã©ã¯ã·ã§ã³ãããã¡ãã©ãã·ã¥å½ä»¤ãå®è¡ããå¿
|
---|
| 38 | è¦ãããï¼isbï¼ï¼CONTROLã¬
|
---|
| 39 | ã¸ã¹ã¿ã®è©³ç´°ã¯ï¼ARMv7-M Architecture Application Level Reference
|
---|
| 40 | Manual ã® B1-9 ãåç
|
---|
| 41 | §ã®ãã¨ï¼
|
---|
| 42 |
|
---|
| 43 | âå²è¾¼ã¿ãã¯ã¿
|
---|
| 44 |
|
---|
| 45 | ãã¯ã¿ãã¼ãã«åã§ï¼ãã¯ã¿ãã¼ãã«ã®ã¢ãã¬ã¹ã¯ï¼ãªã»ããæã¯0x00ã§ï¼
|
---|
| 46 | Vector Table Offset Registerï¼ã¡ã¢ãªããããã¬ã¸ã¹ã¿ï¼ ãæä½ãããã¨
|
---|
| 47 | ã§ï¼ä»»æã®ã¢ãã¬ã¹ã«é
|
---|
| 48 | ç½®å¯è½ã§ããï¼
|
---|
| 49 |
|
---|
| 50 | âåªå
|
---|
| 51 | 度
|
---|
| 52 |
|
---|
| 53 | å¤ãå°ããæ¹ãé«åªå
|
---|
| 54 | 度ã¨ãªãï¼0ãæé«åªå
|
---|
| 55 | 度ã¨ãªãï¼ä¸æ¹ï¼å¾è¿°ãããã
|
---|
| 56 | ã»ããµã®å²è¾¼ã¿åªå
|
---|
| 57 | 度ãè¨å®ããBASEPRIã¬ã¸ã¹ã¿ã¯'0'ãã»ããããã¨ï¼å
|
---|
| 58 | ¨ã¦
|
---|
| 59 | ã®å²è¾¼ã¿ã許å¯ããããï¼æé«åªå
|
---|
| 60 | 度ã¯ï¼æå¹ãªãããã®LSBã'1'ã¨ããå¤ã§
|
---|
| 61 | ããï¼3bitã®å ´åã¯0x20ï¼ï¼ã¾ãï¼å²è¾¼ã¿ã®åªå
|
---|
| 62 | 度ã«'0'ãè¨å®ããã¨ï¼
|
---|
| 63 | BASEPRIã¬ã¸ã¹ã¿ã§ãã¹ã¯ã§ããªãå²è¾¼ã¿ã¨ãªãï¼
|
---|
| 64 |
|
---|
| 65 | åªå
|
---|
| 66 | 度ã¯æ大8bitã§ããï¼SoCæ¯ã«å®è£
|
---|
| 67 | ããã¦ãããããå¹
|
---|
| 68 | ãç°ãªãï¼å®è£
|
---|
| 69 | ã
|
---|
| 70 | ãããããã8bit以ä¸ã®å ´åã¯ï¼LSBããç¡å¹ã«ãªãï¼ä¾ãã°ï¼å®è£
|
---|
| 71 | ããã¦ã
|
---|
| 72 | ããããå¹
|
---|
| 73 | ã7bitã®å ´åã¯ï¼ããã0ãç¡å¹ã¨ãªãï¼
|
---|
| 74 |
|
---|
| 75 | åªå
|
---|
| 76 | 度ã®ããããã£ã¼ã«ãã®LSBããæ°ãããããµãåªå
|
---|
| 77 | 度ã¨å¼ã¶ãã£ã¼ã«ã
|
---|
| 78 | ã«è¨å®ãããã¨ãå¯è½ã§ããï¼æ®ãã®ä¸ä½ããããããªã¨ã³ãã·ã§ã³åªå
|
---|
| 79 | 度ã¨
|
---|
| 80 | å¼ã¶ï¼ããªã¨ã³ãã·ã§ã³åªå
|
---|
| 81 | 度ãåãã§ï¼ãµãåªå
|
---|
| 82 | 度ãç°ãªãåªå
|
---|
| 83 | 度ã®ã°ã«ã¼
|
---|
| 84 | ãã¯ï¼ãäºããããªã¨ã³ãããããã¨ãã§ããªãï¼
|
---|
| 85 |
|
---|
| 86 | Reset,NMI,Hard Fault 以å¤ã®ä¾å¤ã¯å²è¾¼ã¿ã¨åæ§ã«åªå
|
---|
| 87 | 度ãè¨å®å¯è½ã§ããï¼
|
---|
| 88 | å²è¾¼ã¿ãã¹ã¯æ©è½ã«ããï¼çºçãç¦æ¢ãããã¨ãå¯è½ã§ããï¼
|
---|
| 89 |
|
---|
| 90 |
|
---|
| 91 | âCPUã¢ã¼ã
|
---|
| 92 |
|
---|
| 93 | ããã»ããµã¯ï¼Threadã¢ã¼ããããã¯Handlerã¢ã¼ãã®ããããã®ã¢ã¼ãã¨ãª
|
---|
| 94 | ãï¼
|
---|
| 95 |
|
---|
| 96 | âãªã»ããæã®ç¶æ
|
---|
| 97 |
|
---|
| 98 |
|
---|
| 99 | ãªã»ããæã¯Threadã¢ã¼ãï¼MSPãæå¹ã¨ãªã£ã¦ããï¼
|
---|
| 100 |
|
---|
| 101 | âHandlerã¢ã¼ã
|
---|
| 102 |
|
---|
| 103 | ä¾å¤/å²è¾¼ã¿ãåãä»ããã¨é·ç§»ããã¢ã¼ãï¼åãä»ããä¾å¤/å²è¾¼ã¿ã®ä¾å¤çª
|
---|
| 104 | å·ãï¼IPSRã«ã»ãããããï¼ä¾å¤çªå·ã¯ï¼TRMã§å®ãããã¦ããçªå·ã§ããï¼
|
---|
| 105 |
|
---|
| 106 | ä¾å¤ ä¾å¤çªå·
|
---|
| 107 | Reset 1
|
---|
| 108 | Non-makable Interrupt 2
|
---|
| 109 | Hard Fault 3
|
---|
| 110 | Memory Management 4
|
---|
| 111 | Bus Fault 5
|
---|
| 112 | Usage Fault 6
|
---|
| 113 | SVCall 11
|
---|
| 114 | Debug Monitor 12
|
---|
| 115 | PendSV 14
|
---|
| 116 | SysTick 15
|
---|
| 117 | IRQ0 16
|
---|
| 118 | IRQ1 17
|
---|
| 119 | ..
|
---|
| 120 |
|
---|
| 121 | ä¾å¤/å²è¾¼ã¿ãåãä»ããã¨ï¼åãä»ããä¾å¤/å²è¾¼ã¿ã®åªå
|
---|
| 122 | 度以ä¸ã®ä¾å¤/å²
|
---|
| 123 | è¾¼ã¿ãç¦æ¢ããï¼ãã®åªå
|
---|
| 124 | 度ãã¹ã¯ã"NVICåªå
|
---|
| 125 | 度ãã¹ã¯"ã¨å¼ã¶ï¼ãã®åªå
|
---|
| 126 | 度
|
---|
| 127 | ã¯ï¼ã½ããã¦ã§ã¢ããå¤æ´ãããã¨ãã§ããï¼ä¾å¤/å²è¾¼ã¿ã®ãªã¿ã¼ã³ã«ãã
|
---|
| 128 | å²è¾¼ã¿åã®å¤ã«èªåçã«æ»ãï¼
|
---|
| 129 |
|
---|
| 130 | âã¹ã¿ãã¯ãã¤ã³ã¿ï¼PSPã¨MSPï¼
|
---|
| 131 |
|
---|
| 132 | ã¹ã¿ãã¯ãã¤ã³ã¿ã¯ï¼PSPã¨MSPãããï¼æä»çã«ä½¿ç¨å¯è½ã§ããï¼Handlerã¢
|
---|
| 133 | ã¼ãã§ã¯MSPã®ã¿ä½¿ç¨å¯è½ã§ããï¼Threadã¢ã¼ãã§ã¯CONTROLã¬ã¸ã¹ã¿ã§é¸æå¯
|
---|
| 134 | è½ã§ããï¼CONTROLã¬ã¸ã¹ã¿ã®1ãããç®ãã»ããããã¨PSPãæå¹ã«ï¼ã¯ãªã¢
|
---|
| 135 | ããã¨ï¼MSPãæå¹ã«ãªãï¼
|
---|
| 136 |
|
---|
| 137 | âThreadã¢ã¼ãã¨Handlerã¢ã¼ãã®é·ç§»
|
---|
| 138 |
|
---|
| 139 | Threadã¢ã¼ãããHandlerã¢ã¼ãã¸ã®é·ç§»ã¯ï¼ä¾å¤/å²è¾¼ã¿ãåãä»ãããã¨ã§
|
---|
| 140 | çºçããï¼ä¸æ¹ï¼Handlerã¢ã¼ãããThreadã¢ã¼ãã¸ã®é·ç§»ã¯ï¼PCã«
|
---|
| 141 | EXC_RETURN(0xfffffffx)ã®å¤ãè¨å®ãããã¨ã«ããè¡ãï¼ä¾å¤ãªã¿ã¼ã³å¦çã¨
|
---|
| 142 | å¼ã¶ï¼ï¼EXC_RETURNã®ä¸ä½4bitã«ããï¼é·ç§»å
|
---|
| 143 | ã®ã¢ã¼ãã使ç¨ããã¹ã¿ãã¯ã
|
---|
| 144 | ã¤ã³ã¿ãå¤æ´å¯è½ã§ããï¼ä¾å¤ãªã¿ã¼ã³ã«ããï¼PRIMASKãBASEPRIã®å¤ã¯å¤å
|
---|
| 145 | ããªãï¼ä¸æ¹ï¼FAULTMASKã®å¤ã¯'0'ã«ã¯ãªã¢ãããï¼
|
---|
| 146 |
|
---|
| 147 | âEXC_RETURN
|
---|
| 148 |
|
---|
| 149 | ä¾å¤/å²è¾¼ã¿åä»ãæã«lrã«è¨å®ãããå¤ï¼ããã31ï½4ãããã¯å
|
---|
| 150 | ¨ã¦'1'ã§ï¼
|
---|
| 151 | ä¸ä½4bitã¯ï¼åä»ãæã®CPUã¢ã¼ããã¹ã¿ãã¯ãåæ ããå¤ã¨ãªã£ã¦ããï¼
|
---|
| 152 |
|
---|
| 153 | 0b0001 : Handlerã¢ã¼ã
|
---|
| 154 | 0b1001 : Threadã¢ã¼ã with MSP
|
---|
| 155 | 0b1101 : Threadã¢ã¼ã with PSP
|
---|
| 156 |
|
---|
| 157 | âThreadã¢ã¼ãã¨Handlerã¢ã¼ãã®å¤å®
|
---|
| 158 |
|
---|
| 159 | ç¾ç¶ã®ã¢ã¼ããå¤å®ããã«ã¯ï¼IPSRãè¦ã¦ï¼'0'ãªãThreadã¢ã¼ãï¼ãã以å¤
|
---|
| 160 | ãªãï¼Handlerã¢ã¼ãã¨ãªãï¼
|
---|
| 161 |
|
---|
| 162 | âBASEPRIã¬ã¸ã¹ã¿
|
---|
| 163 |
|
---|
| 164 | è¨å®ããåªå
|
---|
| 165 | 度以ä¸ã®åªå
|
---|
| 166 | 度ã®å²è¾¼ã¿ã®åä»ãç¦æ¢ããï¼ãã®åªå
|
---|
| 167 | 度ãã¹ã¯ã
|
---|
| 168 | "BASEPRIåªå
|
---|
| 169 | 度ãã¹ã¯"ã¨å¼ã¶ï¼'0'ãè¨å®ããã¨ï¼å
|
---|
| 170 | ¨ã¦ã®å²è¾¼ã¿ã許å¯ããï¼
|
---|
| 171 | ä¾å¤/å²è¾¼ã¿ã®åä»ã¨ãªã¿ã¼ã³ã«ããå¤åããªãï¼ä¾å¤/å²è¾¼ã¿ã«å¯¾ããå²è¾¼ã¿
|
---|
| 172 | åªå
|
---|
| 173 | 度ãã¹ã¯ã¯ï¼NVICåªå
|
---|
| 174 | 度ãã¹ã¯ã¨BASEPRIã®è¨å®å¤ã®é«ãæ¹ï¼å¤ãå°ãã
|
---|
| 175 | æ¹ï¼ã¨ãªãï¼
|
---|
| 176 |
|
---|
| 177 | âFAULTMASK
|
---|
| 178 |
|
---|
| 179 | FAULTMASKã¯'1'ãã»ãããããã¨ã«ããï¼NMI以å¤ã®å
|
---|
| 180 | ¨ã¦ã®å²è¾¼ã¿ãç¦æ¢ããï¼
|
---|
| 181 | FAULTMASKã¯ï¼ä¾å¤ã®ãªã¿ã¼ã³å¦çã«ãã'0'ã«ã¯ãªã¢ãããï¼
|
---|
| 182 |
|
---|
| 183 | âPRIMASKã¨WFI
|
---|
| 184 |
|
---|
| 185 | PRIMASKã'1'ã«è¨å®ããã¨ï¼NMI 㨠Hardware Fault 以å¤ã®ä¾å¤/å²è¾¼ã¿ãç¦
|
---|
| 186 | æ¢ããï¼PRIMASKã¯å²è¾¼ã¿ã®è¨±å¯ã¨å²è¾¼ã¿å¾
|
---|
| 187 | ã¡ãã¢ãããã¯ã«è¡ãããã«ç¨ã
|
---|
| 188 | ãï¼å
|
---|
| 189 | ·ä½çã«ã¯ï¼PRIMASKãã»ããããã¦ããç¶æ
|
---|
| 190 | ã§wfiãå®è¡ããã¨ï¼å²ãè¾¼
|
---|
| 191 | ã¿å¾
|
---|
| 192 | ã¡ã¨ãªãï¼å²è¾¼ã¿åä»ããã¨ãã³ãã©ãå®è¡ããã«ï¼wfiãããªã¿ã¼ã³ã
|
---|
| 193 | ã¦ããï¼
|
---|
| 194 |
|
---|
| 195 | âä¾å¤/å²è¾¼ã¿ã®åä»
|
---|
| 196 |
|
---|
| 197 | ã»ä¾å¤/å²è¾¼ã¿ãåä»ããã¨ï¼åä»ãæã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ä¸ã«ä»¥ä¸ã®ã³
|
---|
| 198 | ã³ããã¹ããä¿åãã(ä¾å¤ãã¬ã¼ã ã¨å¼ã¶)ï¼
|
---|
| 199 |
|
---|
| 200 | -----------
|
---|
| 201 | | R0 | <- new SP
|
---|
| 202 | -----------
|
---|
| 203 | | R1 |
|
---|
| 204 | -----------
|
---|
| 205 | | R2 |
|
---|
| 206 | -----------
|
---|
| 207 | | R3 |
|
---|
| 208 | -----------
|
---|
| 209 | | R12 |
|
---|
| 210 | -----------
|
---|
| 211 | | LR |
|
---|
| 212 | -----------
|
---|
| 213 | | PC |
|
---|
| 214 | -----------
|
---|
| 215 | | xPSR |
|
---|
| 216 | -----------
|
---|
| 217 | | | <- old SP
|
---|
| 218 |
|
---|
| 219 | ã»ããã»ããµãHandlerã¢ã¼ãã¨ããï¼MSPãæå¹ã¨ãªãï¼
|
---|
| 220 | ã»åä»ããä¾å¤/å²è¾¼ã¿ã®ä¾å¤çªå·ãIPSRã«è¨å®ããï¼
|
---|
| 221 | ã»NVICå²è¾¼ã¿åªå
|
---|
| 222 | 度ãã¹ã¯ãåä»ããä¾å¤/å²è¾¼ã¿ã®åªå
|
---|
| 223 | 度ã«è¨å®ããï¼
|
---|
| 224 | ã»lrã«EXC_RETURNã®å¤ãè¨å®ãããï¼
|
---|
| 225 | ã»ãã¯ã¿ãã¼ãã«ãèªã¿è¾¼ã¿ãã³ãã©ãå®è¡ããï¼
|
---|
| 226 | ã»ã¹ã¿ãã¯ãã¬ã¼ã ã¯ï¼Configureation and Control Register(CCR)ã®
|
---|
| 227 | STKALIGNã'1'ã®å ´åã¯ï¼8byteå¢çã«ã¢ã©ã¤ã³ãããï¼
|
---|
| 228 |
|
---|
| 229 | âä¾å¤/å²è¾¼ã¿ããã®ãªã¿ã¼ã³
|
---|
| 230 |
|
---|
| 231 | pcã«EXC_RETURNã®å¤ãè¨å®ãããã¨ã«ããï¼ä¾å¤/å²è¾¼ã¿ãããªã¿ã¼ã³ããï¼
|
---|
| 232 | pcã¸ã®è¨å®ã«ä½¿ç¨å¯è½ãªå½ä»¤ã«ã¯å¶éãããï¼ä»¥ä¸å½ä»¤ã使ç¨å¯è½ã§ããï¼
|
---|
| 233 |
|
---|
| 234 | ã»POP/LDM, LDR, BX
|
---|
| 235 |
|
---|
| 236 | âæªè§£æ±ºèª²é¡
|
---|
| 237 |
|
---|
| 238 | ã»ãã¯ã¿ã¼ãã¼ãã«ã«ç»é²ããé¢æ°ã®ã¢ãã¬ã¹ã®LSBã¯'1'ã«ããã¹ãã?
|
---|
| 239 | ã»NVICã¯ä¾å¤ã»å²è¾¼ã¿ã®ãã¹ãåæ°ãå
|
---|
| 240 | é¨çã«ç®¡çãã¦ãããããï¼
|
---|
| 241 | (!ãªãã¡ã¬ã³ã¹ãæããã«)ï¼
|
---|
| 242 | ã½ããã¦ã§ã¢ã§ã¯ï¼ãã¹ãã®å¸³å°»ãåãããã°ï¼ãªã¿ã¼ã³ã¹ã¿ãã¯ãå½é ã
|
---|
| 243 | ã¦ãåé¡ãªããï¼
|
---|
| 244 |
|
---|
| 245 | âstmfdã®å¶é
|
---|
| 246 |
|
---|
| 247 | stmfdã¯ã¬ã¸ã¹ã¿ãªã¹ãã1åã®å ´åã®åä½ã¯ä¸å®ã¨ãªã£ã¦ããï¼ãã®ããï¼ã¬
|
---|
| 248 | ã¸ã¹ã¿ãªã¹ãã1åã®è¨è¿°ãã¢ã»ã³ãã©ã«ããå ´åã¯ï¼ã¢ã»ã³ãã©ãstr.w ã«
|
---|
| 249 | å¤æãããï¼ã¢ã»ã³ãã©ã«ãã£ã¦ã¯ã¯ã¼ãã³ã°ãåºãããï¼ã¬ã¸ã¹ã¿ãªã¹ãã
|
---|
| 250 | 1åã®å ´åã¯ï¼str.wã使ç¨ããï¼
|
---|
| 251 |
|
---|
| 252 | ãªãï¼ldmfdã«ã¯ãã®å¶éããªãï¼
|
---|
| 253 |
|
---|
| 254 | âARMv6-M
|
---|
| 255 |
|
---|
| 256 | ã«ã¼ãã«ã®è¨è¨ã«å¯¾ãã¦ï¼ARMv6-Mã®ARMv7-Mã«å¯¾ããå·®åã¯æ¬¡ã®éãã§ããï¼
|
---|
| 257 |
|
---|
| 258 | ã»BASEPRIã¬ã¸ã¹ã¿
|
---|
| 259 | ARMv6-Mã§ã¯BASEPRIã¬ã¸ã¹ã¿ãæããªãï¼
|
---|
| 260 |
|
---|
| 261 | ã»FAULTMASK
|
---|
| 262 | ARMv6-Mã§ã¯FAULTMASKã¬ã¸ã¹ã¿ãæããªãï¼
|
---|
| 263 |
|
---|
| 264 | ã»å½ä»¤
|
---|
| 265 | ä¸é¨å½ä»¤ã使ç¨åºæ¥ãªãï¼
|
---|
| 266 | åãå½ä»¤ã§ãæå®å¯è½ãªã¬ã¸ã¹ã¿ã«å¶éããã
|
---|
| 267 |
|
---|
| 268 | ã»å¤é¨å²è¾¼ã¿æ°
|
---|
| 269 | æ大32å
|
---|
| 270 |
|
---|
| 271 |
|
---|
| 272 | âFPUé¢é£ã®ä»æ§
|
---|
| 273 |
|
---|
| 274 | âåèè³æ
|
---|
| 275 |
|
---|
| 276 | ARMv7-M Architecture Reference Manual E.b
|
---|
| 277 | DDI0403E_B_armv7m_arm.pdf
|
---|
| 278 |
|
---|
| 279 | ARM CortexR-M4 Processor Technical Reference Manual Revision: r0p1
|
---|
| 280 | arm_cortexm4_processor_trm_100166_0001_00_en.pdf
|
---|
| 281 |
|
---|
| 282 | Cortex-M4(F) Lazy Stacking and Context Switching Application Note 298
|
---|
| 283 | DAI0298A_cortex_m4f_lazy_stacking_and_context_switching.pdf
|
---|
| 284 |
|
---|
| 285 | âæ¦è¦
|
---|
| 286 |
|
---|
| 287 | Cortex-M4ã¯ARMv7E-Mããã¼ã¹ã¨ãã¦ããï¼FPUãµãã¼ãããå®è£
|
---|
| 288 | ã¨ãµãã¼ãã
|
---|
| 289 | ã¦ããªãå®è£
|
---|
| 290 | ãããï¼FPUããµãã¼ãããå®è£
|
---|
| 291 | ãCortex-M4Fã¨å¼ã¶ï¼
|
---|
| 292 | å¨ããï¼
|
---|
| 293 |
|
---|
| 294 | FPUã¯ARMv7E-M Floatng Point Extension(FPv4-SP)ããµãã¼ããã¦ããï¼
|
---|
| 295 |
|
---|
| 296 | FPv4-SPã¯æ¬¡ã®ä»æ§ã¨ãªã£ã¦ããï¼
|
---|
| 297 |
|
---|
| 298 | ã¬ã¸ã¹ã¿ : å精度ã¬ã¸ã¹ã¿ S0ï½S32 / å精度ã¬ã¸ã¹ã¿ D0ï½D15
|
---|
| 299 | D0ã¯(S0ã¨S1)ã¨ç価ï¼
|
---|
| 300 | å½ä»¤ : å精度å½ä»¤ããµãã¼ã
|
---|
| 301 |
|
---|
| 302 | âå¶å¾¡ã¬ã¸ã¹ã¿
|
---|
| 303 |
|
---|
| 304 | FPSCR : Floating-point Status and Control Register
|
---|
| 305 | ã»FPUã®ã¹ãã¼ã¿ã¹ã¨ã³ã³ããã¼ã«ãã£ã¼ã«ããæã¤
|
---|
| 306 |
|
---|
| 307 | CPACR : Coprocessor Access Control Register
|
---|
| 308 | ã»FPUãæå¹ã«ããå ´åã«ã»ããããå¿
|
---|
| 309 | è¦ããã
|
---|
| 310 |
|
---|
| 311 | FPCCR : Floating-point Context Control Register
|
---|
| 312 | ã»FPUé¢é£ã®ã³ã³ããã¹ãã®ä¿åæ¹æ³ãé¸æå¯è½
|
---|
| 313 |
|
---|
| 314 | FPCAR : Floating Point Context Address Register
|
---|
| 315 | ã»ä¾å¤ãã¬ã¼ã ã®FPUã¬ã¸ã¹ã¿ã®ä¿åã¢ãã¬ã¹(S0ã®ã¢ãã¬ã¹)ãä¿æï¼
|
---|
| 316 |
|
---|
| 317 | FPDSCR : Floating-point Default Status Control Register
|
---|
| 318 | ã»FPSCRã®ãã£ãã©ã«ãå¤ãä¿å
|
---|
| 319 | ã»FPUãåãã¦ä½¿ç¨ããå ´åã«[26:22]ãFPSCRã«ã³ãã¼ãããï¼
|
---|
| 320 |
|
---|
| 321 | CONTROLã®æ¡å¼µ
|
---|
| 322 | ã».FPCA(Bit[2])
|
---|
| 323 | ã»FPUã使ç¨ããã¨'1'ã«ã»ãããããï¼
|
---|
| 324 |
|
---|
| 325 | EXC_RETURNã®æ¡å¼µ
|
---|
| 326 |
|
---|
| 327 | EXC_RETURN[4]
|
---|
| 328 | '0' : FPUã®é åãã(ä¿åããã¦ãããã¯å¥ã®å¶å¾¡)
|
---|
| 329 | S0ï½S15ã¨FPSCRã®ããã®é åï¼
|
---|
| 330 | '1' : FPUã®é åãªã
|
---|
| 331 |
|
---|
| 332 | âABI
|
---|
| 333 |
|
---|
| 334 | S0ï½S15,FPSCR : caller saved registers
|
---|
| 335 | S16ï½S17 : callee saved registers
|
---|
| 336 |
|
---|
| 337 | âä¾å¤ã»å²è¾¼ã¿çºçæã®æ¯ãèã
|
---|
| 338 |
|
---|
| 339 | 詳細㯠ARMv7-M Architecture Reference Manual E.b㮠B1.5.6 Exception
|
---|
| 340 | entry behavior 㨠B1.5.8 Exception return behavior ãåç
|
---|
| 341 | §ã®ãã¨ï¼
|
---|
| 342 |
|
---|
| 343 | ã³ã³ããã¹ãã®ä¿åãã¿ã¼ã³
|
---|
| 344 | FPCCR
|
---|
| 345 | LSPEN ASPEN å称(æ¬ããã¥ã¡ã³ããªãªã¸ãã«)
|
---|
| 346 | 0 0 : NoAutomatic
|
---|
| 347 | 0 1 : DisableLazystacking
|
---|
| 348 | 1 1 : Lazystacking
|
---|
| 349 |
|
---|
| 350 | NoAutomatic
|
---|
| 351 | ã»èªåä¿åãªã
|
---|
| 352 |
|
---|
| 353 | DisableLazystacking
|
---|
| 354 | ã»èªåä¿åããï¼Lazystackingããªãï¼
|
---|
| 355 | ã»FPUã使ç¨ãã㨠CONTROL.FPCA ã«'1'ãã»ãããããï¼
|
---|
| 356 | ã»CONTROL.FPCA == 1ã®å ´åã«ä¾å¤/å²è¾¼ã¿ãçºçããã¨FPUã³ã³ããã¹ããã¹
|
---|
| 357 | ã¿ãã¯ã«ä¿åããï¼
|
---|
| 358 |
|
---|
| 359 | Lazystacking
|
---|
| 360 | ã»èªåä¿åããï¼Lazystacking ãè¡ãï¼
|
---|
| 361 | ã»FPUã使ç¨ãã㨠CONTROL.FPCA ã«'1'ãã»ãããããï¼
|
---|
| 362 | ã»CONTROL.FPCA == '1'ã®å ´åã«ä¾å¤/å²è¾¼ã¿ãçºçããã¨FPUã³ã³ããã¹ãã®ä¿
|
---|
| 363 | åç¨ã®é åã®ã¿ç¢ºä¿ããï¼FPCCR.LSPACT ã«'1'ã«è¨å®ãããï¼
|
---|
| 364 | ã»FPCCR.LSPACT == '1' ã®å ´åã«FPUå½ä»¤ã使ç¨ããã¨FPUã®ã³ã³ããã¹ããä¿
|
---|
| 365 | åé åã«ä¿åãããï¼
|
---|
| 366 |
|
---|
| 367 | FPUã«é¢ããä¾å¤/å²è¾¼ã¿ã®å
|
---|
| 368 | ¥ãå£å¦ç
|
---|
| 369 |
|
---|
| 370 | ã»DisableLazystacking or Lazystacking ã®å ´å
|
---|
| 371 | ã»CONTROL.FPCA == 1ã®å ´å
|
---|
| 372 | ã»ä¾å¤ãã¬ã¼ã ã«FPUã¬ã¸ã¹ã¿ä¿åç¨ã®é åã確ä¿
|
---|
| 373 | ã»DisableLazystacking ã®å ´å
|
---|
| 374 | ã»FPUã¬ã¸ã¹ã¿ä¿åç¨ã®é åã«FPUã¬ã¸ã¹ã¿(S0ï½S15,FPSCR)ãä¿å
|
---|
| 375 | ã»Lazystacking
|
---|
| 376 | ã»FPCAR ã«ä¾å¤ãã¬ã¼ã ã®FPUã¬ã¸ã¹ã¿ã®ä¿åã¢ãã¬ã¹(S0ã®ã¢ãã¬ã¹)ãä¿æï¼
|
---|
| 377 | ã»FPCCR.LSPACT ã1ã«ï¼
|
---|
| 378 | ã»CONTROL.FPCAã0ã«ã¯ãªã¢
|
---|
| 379 |
|
---|
| 380 | FPUã«é¢ããä¾å¤/å²è¾¼ã¿ã®åºå£å¦ç
|
---|
| 381 |
|
---|
| 382 | ã»EXC_RETURNã®4ãããç®ã'0'ã®å ´å(æ»ãå
|
---|
| 383 | ã§FPUã使ç¨ãã¦ãã)
|
---|
| 384 | ã»FPCCR.LSPACT == '1'ã®å ´å(å²è¾¼ã¿ãã³ãã©ã§FPUã使ç¨ããªãã£ã)
|
---|
| 385 | ã»FPCCR.LSPACTã'0'ã«
|
---|
| 386 | ã»FPCCR.LSPACT == '0'ã®å ´å(å²è¾¼ã¿ãã³ãã©ã§FPUã使ç¨ãã)
|
---|
| 387 | ã»S0ï½S32ã¨FPSCRãä¾å¤ãã¬ã¼ã ããæ»ã
|
---|
| 388 | ã»EXC_RETURNã®4ãããç®ã®å¦å®ãCONTROL.FPCAã«è¨å®
|
---|
| 389 | ã»å®è³ªï¼æ»ãå
|
---|
| 390 | ã®CONTROL.FPCAã復帰
|
---|
| 391 |
|
---|
| 392 | ISRã§ã®FPUã®æ¯ãèã
|
---|
| 393 |
|
---|
| 394 | FPCCR.LSPACT==1æ(Lazystackingã®æã«ã®ã¿çºç)ã«FPUå½ä»¤ã使ç¨ããå ´å
|
---|
| 395 | ã»FPCARã®ã¢ãã¬ã¹ã«FPUã¬ã¸ã¹ã¿(S0ï½S15,FPSCR)ãä¿å
|
---|
| 396 | ã»FPCCR.LSPACT ã0ã«ããï¼
|
---|
| 397 |
|
---|
| 398 | âOSã®å®è£
|
---|
| 399 |
|
---|
| 400 |
|
---|
| 401 | 1.ã¿ã¼ã²ããå
|
---|
| 402 |
|
---|
| 403 | 1-1 cm3(Cortex-M3)
|
---|
| 404 | 1-2 armv7m(ARMv7-M)
|
---|
| 405 | 1-3 arm_m
|
---|
| 406 |
|
---|
| 407 | cm3ã§ã¯ï¼ARMv6-Mããµãã¼ãããå ´åã«åé¡ã¨ãªãï¼armv7mã§ã¯ï¼armv8mããª
|
---|
| 408 | ãªã¼ã¹ãããå ´åã«åé¡ã¨ãªãï¼ARMä¾åé¨ã¯JSPã§ã¯ï¼armv4ã¨ãªã£ã¦ãããï¼
|
---|
| 409 | armv5ãarmv7ãåä½ããããASPã§ã¯åã«armã¨ããï¼ãã®ããï¼arm_mãç¡é£
|
---|
| 410 | ã¨èããããï¼
|
---|
| 411 |
|
---|
| 412 |
|
---|
| 413 | 2.Threadã¢ã¼ãã¨Handlerã¢ã¼ãã®ä½¿ãåã
|
---|
| 414 |
|
---|
| 415 | 2-1
|
---|
| 416 | ã¿ã¹ã¯ã³ã³ããã¹ãã¯Threadã¢ã¼ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãã¯Handlerã¢ã¼
|
---|
| 417 | ãã§åä½ãããï¼
|
---|
| 418 |
|
---|
| 419 | 2-2
|
---|
| 420 | ã¿ã¹ã¯ã³ã³ããã¹ãã¨éã¿ã¹ã¯ã³ã³ããã¹ãå
|
---|
| 421 | ±ã«Handlerã¢ã¼ãã§åä½ãã
|
---|
| 422 | ãï¼
|
---|
| 423 |
|
---|
| 424 | ããã»ããµã®è¨è¨æ¹éãèæ
|
---|
| 425 | ®ããã¨2-1ãæåï¼2-1ã§ã®åé¡ç¹ã¨ãã¦ã¯ï¼å²è¾¼
|
---|
| 426 | ã¿ãã³ãã©ããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã«ã¢ã¼ãã®å¤æ´ã以ä¸ã®æ§ã«å¤çºããã
|
---|
| 427 | ã¨ãæããããï¼
|
---|
| 428 |
|
---|
| 429 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 430 | 2.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 431 | 3.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³å¦ç : Handlerã¢ã¼ã
|
---|
| 432 | 4.ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 433 |
|
---|
| 434 | 3ã§Handlerã¢ã¼ãã«ç§»è¡ããå¿
|
---|
| 435 | è¦ãããã®ã¯ï¼ä¾å¤ãã¬ã¼ã ãç¨ãã¦å¾©å¸°ãã
|
---|
| 436 | ã«ã¯ï¼Handlerã¢ã¼ãã§ä¾å¤ãªã¿ã¼ã³å¦çãè¡ãå¿
|
---|
| 437 | è¦ãããããã§ããï¼ARMã§
|
---|
| 438 | ã¯ï¼è¤æ°ã¬ã¸ã¹ã¿ã®ãã¼ãã¨CPSRã®å¾©å¸°ãåæã«è¡ãããï¼M3ã¯è¡ããªãããï¼
|
---|
| 439 | ãã®æ¹æ³ã§å²è¾¼ã¿å
|
---|
| 440 | ã®ã¿ã¹ã¯ã«ãªã¿ã¼ã³ããå¿
|
---|
| 441 | è¦ãããï¼
|
---|
| 442 |
|
---|
| 443 | 2-2ã®å ´åã®å²è¾¼ã¿ãã³ãã©ããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã«ã¢ã¼ãã®å¤æ´ã以ä¸
|
---|
| 444 | ã«ç¤ºãï¼ã¾ãï¼2-2ã§ã¯å²è¾¼ã¿åªå
|
---|
| 445 | 度ã®æä½å¤ãã¿ã¹ã¯ã®å®è¡æã®åªå
|
---|
| 446 | 度ã¨ã
|
---|
| 447 | ã¦ãªã¶ã¼ãããå¿
|
---|
| 448 | è¦ãããï¼
|
---|
| 449 |
|
---|
| 450 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 451 | 2.NVICåªå
|
---|
| 452 | 度ãã¹ã¯'0'ã0㸠: Threadã¢ã¼ã
|
---|
| 453 | 3.æä½åªå
|
---|
| 454 | 度ã®Handlerã¢ã¼ã㸠: Handlerã¢ã¼ã
|
---|
| 455 | 4.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Handlerã¢ã¼ã
|
---|
| 456 | 5.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ã®åå¦ç : Threadã¢ã¼ã
|
---|
| 457 | 3.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 458 | 4.ã¿ã¹ã¯ã®åé : Handlerã¢ã¼ã
|
---|
| 459 |
|
---|
| 460 | å²è¾¼ã¿ãã³ãã©ããã¿ã¹ã¯ã®ãªã¿ã¼ã³ã«é¢ãã¦ã¯ï¼2-2ã§ãã£ã¦ãï¼2ãå®è¡ã
|
---|
| 461 | ãå ´åã«ï¼NVICåªå
|
---|
| 462 | 度ãã¹ã¯ã'0'ã«ããããï¼ä¾å¤ãªã¿ã¼ã³å¦çãè¡ãå¿
|
---|
| 463 | è¦
|
---|
| 464 | ãããï¼ã¾ãï¼NVICèªä½ãï¼å²è¾¼ã¿ã®ãã¹ãåæ°ã管çãã¦ããããï¼3ãã4
|
---|
| 465 | ã¸ã®é·ç§»ã®ããã«ï¼ãã£ããä¾å¤/å²è¾¼ã¿ãåä»ããç¶æ
|
---|
| 466 | ã«ããå¿
|
---|
| 467 | è¦ãããã
|
---|
| 468 | ãï¼çµæçã«2-1以ä¸ã®é·ç§»ãå¿
|
---|
| 469 | è¦ã¨ãªãï¼
|
---|
| 470 |
|
---|
| 471 | 2-2ã®å ´åã¯ï¼MSPãã使ããªãããï¼å²è¾¼ã¿ã®å
|
---|
| 472 | ¥ãå£ã§ãã¹ãåæ°ãå¤æãã¦ï¼
|
---|
| 473 | ã¹ã¿ãã¯ãå
|
---|
| 474 | ¥ãæ¿ããå¿
|
---|
| 475 | è¦ãããï¼
|
---|
| 476 |
|
---|
| 477 | HRPçã§ã¡ã¢ãªä¿è·ãç¨ããå ´åã¯2-1ã¨ãªãï¼
|
---|
| 478 |
|
---|
| 479 | 以ä¸ã®çç±ã«ããï¼2-1ãæ¡ç¨ããï¼ãã ã2-1ã¯ï¼ã«ã¼ãã«èµ·åæã¨IDLEã«ã¼
|
---|
| 480 | ãã®æ±ããæ¤è¨ããå¿
|
---|
| 481 | è¦ãããï¼ãããã«ã¤ãã¦ã¯å¥éè°è«ããï¼
|
---|
| 482 |
|
---|
| 483 |
|
---|
| 484 | 3.ãã£ã¹ãããã£ã®å®è¡ã¢ã¼ã
|
---|
| 485 |
|
---|
| 486 | 3-1
|
---|
| 487 | Threadã¢ã¼ãã§å®è¡ãã
|
---|
| 488 |
|
---|
| 489 | 3-2
|
---|
| 490 | Handlerã¢ã¼ãã§å®è¡ãã
|
---|
| 491 |
|
---|
| 492 | ãã£ã¹ãããã£ãThreadã¢ã¼ãã§å®è¡ããã¨ï¼å²è¾¼ã¿ã«ããããªã¨ã³ãããã
|
---|
| 493 | ãã¿ã¹ã¯ã«æ»ãå ´åã¯æ¬¡ã®ãããªãã¹ã«ãªãï¼
|
---|
| 494 |
|
---|
| 495 | 1. ãã£ã¹ãããã£å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 496 | 2. ãã£ã¹ãããã£å®è¡ : Threadã¢ã¼ã
|
---|
| 497 | 3. ã¿ã¹ã¯ä¾å¤å®è¡ : Threadã¢ã¼ã
|
---|
| 498 | 4ï¼ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³å¦ç : Handlerã¢ã¼ã
|
---|
| 499 | 5. ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 500 |
|
---|
| 501 | å²è¾¼ã¿ãã³ãã©ããèªããã£ã¹ãããããã¿ã¹ã¯ã¸ãªã¿ã¼ã³ããå ´åã¯æ¬¡ã®ã
|
---|
| 502 | ã¹ã«ãªãï¼
|
---|
| 503 |
|
---|
| 504 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 505 | 2.ãã£ã¹ãããã£å®è¡ : Threadã¢ã¼ã
|
---|
| 506 | 3.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 507 | 4.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 508 | 5.ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 509 |
|
---|
| 510 | ä¸æ¹ï¼ãã£ã¹ãããã£ãHandlerã¢ã¼ãã§å®è¡ããã¨ï¼å²è¾¼ã¿ã«ããããªã¨ã³
|
---|
| 511 | ãããããã¿ã¹ã¯ã«æ»ãå ´åã¯æ¬¡ã®ãããªãã¹ã«ãªãï¼
|
---|
| 512 |
|
---|
| 513 | 1. ãã£ã¹ãããã£å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 514 | 2. ãã£ã¹ãããã£å®è¡ : Handlerã¢ã¼ã
|
---|
| 515 | 3. ã¿ã¹ã¯ä¾å¤å®è¡ : Threadã¢ã¼ã
|
---|
| 516 | 4ï¼ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 517 | 5. ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 518 |
|
---|
| 519 | å²è¾¼ã¿ãã³ãã©ã®åºå£ããèªããã£ã¹ãããããã¿ã¹ã¯ã¸ãªã¿ã¼ã³ããå ´åã¯
|
---|
| 520 | 次ã®ãã¹ã«ãªãï¼
|
---|
| 521 |
|
---|
| 522 | 1.å²è¾¼ã¿ãã³ãã© : Handlerã¢ã¼ã
|
---|
| 523 | 2.ãã£ã¹ãããã£å®è¡ : Handlerã¢ã¼ã
|
---|
| 524 | 3.ã¿ã¹ã¯ä¾å¤ãã³ãã©ã®å¼ã³åºã : Threadã¢ã¼ã
|
---|
| 525 | 4.ã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ : Handlerã¢ã¼ã
|
---|
| 526 | 5.ã¿ã¹ã¯ã®åé : Threadã¢ã¼ã
|
---|
| 527 |
|
---|
| 528 | ã¿ã¹ã¯ä¾å¤ãã³ãã©ããªãOSã®å ´åã¯ï¼Handlerã¢ã¼ãã§å®è¡ããæ¹ãã¢ã¼ã
|
---|
| 529 | ã®é·ç§»ã®åæ°ãæ¸ããï¼ã¿ã¹ã¯ä¾å¤ãã³ãã©ãããã¨ï¼Threadã¢ã¼ãã®æ¹ãé·
|
---|
| 530 | 移åæ°ãæ¸ãããï¼Threadã¢ã¼ãã¨ããï¼
|
---|
| 531 |
|
---|
| 532 | ã¡ã¢ãªä¿è·ãèæ
|
---|
| 533 | ®ããã¨ï¼ãã£ã¹ãããã£ã¯Handlerã¢ã¼ãã§åä½ãããæ¹ã
|
---|
| 534 | å¹çãããã¨èããããï¼SVCã§ãã³ãã©ãå¼ã³åºãã¨Handlerã¢ã¼ãã¨ãªãã
|
---|
| 535 | ãï¼ï¼
|
---|
| 536 |
|
---|
| 537 |
|
---|
| 538 | 4.ã¹ã¿ãã¯ã®ä½¿ãåã
|
---|
| 539 |
|
---|
| 540 | 4-1
|
---|
| 541 | ã¿ã¹ã¯ã³ã³ããã¹ããPSP, éã¿ã¹ã¯ã³ã³ããã¹ããMSP
|
---|
| 542 | 4-2
|
---|
| 543 | ã¿ã¹ã¯ã³ã³ããã¹ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãå
|
---|
| 544 | ±ã«MSP
|
---|
| 545 |
|
---|
| 546 | 4-2ã®å ´åï¼å²è¾¼ã¿ã®å
|
---|
| 547 | ¥ãå£ã§ãã¹ãåæ°ãå¤æãã¦ï¼ã¹ã¿ãã¯ãå
|
---|
| 548 | ¥ãæ¿ãã
|
---|
| 549 | å¿
|
---|
| 550 | è¦ãããï¼2ã§ã¿ã¹ã¯ã³ã³ããã¹ãã¯Threadã¢ã¼ãï¼éã¿ã¹ã¯ã³ã³ããã¹ã
|
---|
| 551 | ã¯Handlerã¢ã¼ãã§åä½ãããã¨ããããï¼4-1ãæ¡ç¨ããã¨ï¼å²è¾¼ã¿ã®å
|
---|
| 552 | ¥ãå£
|
---|
| 553 | ã§èªåçã«ã¹ã¿ãã¯ãåãæ¿ããï¼Threadã¢ã¼ãã§ã®PSPã®ã¢ã¯ã»ã¹ãï¼
|
---|
| 554 | mrs/msrå½ä»¤ã§è¡ããããï¼4-1ãæ¡ç¨ããï¼
|
---|
| 555 |
|
---|
| 556 |
|
---|
| 557 | 5.ã³ã³ããã¹ãã®å¤å®
|
---|
| 558 |
|
---|
| 559 | 5-1
|
---|
| 560 | IPSRã'0'(Threadã¢ã¼ã)ãªãã¿ã¹ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼'1'(Handlerã¢ã¼
|
---|
| 561 | ã)ãªãéã¿ã¹ã¯ã³ã³ããã¹ãã¨ããï¼
|
---|
| 562 |
|
---|
| 563 | 5-2
|
---|
| 564 | å²è¾¼ã¿ã®ãã¹ãåæ°ãä¿æããå¤æ°ãç¨æï¼1以ä¸ã§éã¿ã¹ã¯ã³ã³ããã¹ãï¼
|
---|
| 565 |
|
---|
| 566 | 5-3
|
---|
| 567 | ã¢ã¯ãã£ããªã¹ã¿ãã¯ã«ããå¤æï¼MSPãªãéã¿ã¹ã¯ã³ã³ããã¹ãï¼PSPãªã
|
---|
| 568 | ã¿ã¹ã¯ã³ã³ããã¹ãã¨ããï¼
|
---|
| 569 |
|
---|
| 570 | 5-1ã¯ï¼ã½ããã¦ã§ã¢å´ã§ã³ã³ããã¹ã管çã®ããã®å¦çãè¡ãå¿
|
---|
| 571 | è¦ããªãã¨
|
---|
| 572 | ããã¡ãªãããããï¼ããããªããï¼ã«ã¼ãã«ã®èµ·åæThreadã¢ã¼ãã§ããã
|
---|
| 573 | ãï¼Handlerã¢ã¼ãã¸ç§»è¡ããå¿
|
---|
| 574 | è¦ãããï¼ASPã«ã¼ãã«ã§ã¯ï¼IDLEã«ã¼ãå®è¡
|
---|
| 575 | ã¯éã¿ã¹ã¯ã³ã³ããã¹ãã¨ãã¦åä½ãããå¿
|
---|
| 576 | è¦ãããããï¼IDLEã«ã¼ãã¯
|
---|
| 577 | Handlerã¢ã¼ãã§åä½ãããå¿
|
---|
| 578 | è¦ãããï¼IDLEã«ã¼ãã¯ãã£ã¹ãããã£ããå¼
|
---|
| 579 | ã³åºãããï¼3ã§å®ããããã«ï¼ãã£ã¹ãããã£ãThreadã¢ã¼ãã§åä½ããã
|
---|
| 580 | ããï¼IDLEã«ã¼ããå¼ã³åºãéã«ã¯ï¼Handlerã¢ã¼ãã¸é·ç§»ããå¿
|
---|
| 581 | è¦ãããï¼
|
---|
| 582 | Handlerã¢ã¼ãã¸ã®é·ç§»ã¯ï¼SVC/PendSVCãç¨ããã¨å®ç¾å¯è½ã§ãããï¼6ã®å²
|
---|
| 583 | è¾¼ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã®Handlerã¢ã¼ãã¸ã®ç§»è¡ã§
|
---|
| 584 | ãSVC/PendSVCã®ä½¿ç¨ãå¿
|
---|
| 585 | è¦ã¨ãªãããï¼SVCãã³ãã©ã§ã¯ï¼ã©ã®ç®çã§å¼ã³åº
|
---|
| 586 | ããããå¤å®ããå¿
|
---|
| 587 | è¦ãåºã¦ããããï¼ãªã¼ãããããå¢å¤§ããï¼
|
---|
| 588 |
|
---|
| 589 | 5-2ã§ã¯ï¼ã«ã¼ãã«èµ·åæãIDLEã«ã¼ãæã«å¤æ°ã'1'ã«è¨å®ããã°ãããã¨ã«
|
---|
| 590 | ãªãï¼ãã®å ´åï¼ã«ã¼ãã«èµ·åæãIDLEã«ã¼ãæã«Threadã¢ã¼ãã§å®è¡ãã¦ã
|
---|
| 591 | åä½ã«åé¡ããªãããï¼ç¹ã«å²è¾¼ã¿ã®åºå
|
---|
| 592 | ¥ãå£ã®è¨è¨ã注æããå¿
|
---|
| 593 | è¦ãããï¼
|
---|
| 594 |
|
---|
| 595 | ã«ã¼ãã«èµ·åæã«é¢ãã¦ã¯ï¼å
|
---|
| 596 | ¨å²è¾¼ã¿ãç¦æ¢ãã¦ããï¼å²è¾¼ã¿ãå
|
---|
| 597 | ¥ããªãã®ã§
|
---|
| 598 | ç¹ã«åé¡ã¯ãªãï¼IDLEã«ã¼ãæã¯ï¼Threadã¢ã¼ãã§MSPã¨PSPã®é¸æãå¯è½ã§ã
|
---|
| 599 | ããã¨ãå©ç¨ãã¦ï¼éã¿ã¹ã¯ã³ã³ããã¹ãã®ã¹ã¿ãã¯ã§ããMSPã«å¤æ´ããï¼
|
---|
| 600 | ä¾å¤/å²è¾¼ã¿ã®å
|
---|
| 601 | ¥ãå£ã§ã¯ï¼å¤éå²è¾¼ã¿ã§ããããEXC_RETURNã®ã¢ã¼ãå¤å®ã®
|
---|
| 602 | ãããã§ã¯ãªãï¼ã¹ã¿ãã¯ã®å¤å®ãããã§è¡ãã°åé¡ãªãï¼ä¾å¤/å²è¾¼ã¿ãã
|
---|
| 603 | ã®ãªã¿ã¼ã³ã«é¢ãã¦ã¯ï¼å¤éå²è¾¼ã¿ã®å¤å®ã¯ï¼å
|
---|
| 604 | ¥ãå£ã¨åæ§ã«EXC_RETURNã®ã¹
|
---|
| 605 | ã¿ãã¯å¤å®ãããã§è¡ãã°ããï¼ä¾å¤ãªã¿ã¼ã³å¦çæã«pcã«ä»£å
|
---|
| 606 | ¥ãã
|
---|
| 607 | EXC_RETURNã®å¤ãä¸å¾0xfffffffd (Threadã¢ã¼ã with MSP)ã¨ããã®ã§ã¯ãªãï¼
|
---|
| 608 | ä¾å¤/å²è¾¼ã¿åä»ãæã«LRã«è¨å®ãããEXC_RETURNãç¨ãããã¨ã«ããï¼IDLE
|
---|
| 609 | ã«ã¼ãã«å²ãè¾¼ãã å ´åã§ãåé¡ãªããªã¿ã¼ã³ããï¼
|
---|
| 610 |
|
---|
| 611 | ã«ã¼ãã«èµ·åæã¯ï¼MSPãã¢ã¯ãã£ãã§ããï¼å²è¾¼ã¿ãã³ãã©å®è¡æã¯Handler
|
---|
| 612 | ã¢ã¼ãã§ãããã¨ããMSPãã¢ã¯ãã£ãã§ãï¼IDLEã«ã¼ãæã«MSPãã¢ã¯ãã£ã
|
---|
| 613 | ã«è¨å®ããã¨ï¼éã¿ã¹ã¯ã³ã³ããã¹ãã¯å
|
---|
| 614 | ¨ã¦ï¼MSPãã¢ã¯ãã£ãã«ãã¦åä½ã
|
---|
| 615 | ããã¨ã«ãªãï¼ã¾ãï¼å²è¾¼ã¿æã¯å²è¾¼ã¿åã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ã®æ
|
---|
| 616 | å ±ãï¼
|
---|
| 617 | EXC_RETURNã«è¨å®ãããï¼ãã®ããï¼ã³ã³ããã¹ãã®å¤å®ã¯ï¼å²è¾¼ã¿ãã¹ãå
|
---|
| 618 | æ°ãä¿æããå¤æ°ããªãã¨ãï¼ã¢ã¯ãã£ããªã¹ã¿ãã¯ãè¦ãã°ãããã¨ã«ãªãï¼
|
---|
| 619 | ã¾ãï¼exc_sense_context()ã«é¢ãã¦ã¯ï¼ä¾å¤ãã¬ã¼ã ä¸ã«EXC_RETURNã追å
|
---|
| 620 | ãï¼ãã®å
|
---|
| 621 | 容ã«ããå¤æããã°ããï¼ä»¥ä¸ã®çç±ã«ããï¼5-3ãæ¡ç¨ããï¼
|
---|
| 622 |
|
---|
| 623 |
|
---|
| 624 | 6.å²è¾¼ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³æã®Handlerã¢ã¼ãã¸ã®ç§»
|
---|
| 625 | è¡æ¹æ³
|
---|
| 626 |
|
---|
| 627 | 6-1
|
---|
| 628 | SVCãç¨ãã
|
---|
| 629 | 6-2
|
---|
| 630 | PendSVCãç¨ãã
|
---|
| 631 |
|
---|
| 632 | PendSVCã¨SVCã®éãã¯ï¼PendSVCãè¦æ±ããã¥ã¼ã¤ã³ã°ããï¼SVCã¯è¦æ±ããã¥
|
---|
| 633 | ã¼ã¤ã³ã°ãããªããã¨ã§ããï¼å²è¾¼ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼
|
---|
| 634 | ã³æã®Handlerã¢ã¼ãã¸ã®ç§»è¡ã¯ï¼ãã¥ã¼ã¤ã³ã°ãããã«å³åº§ã«å¦çãããå¿
|
---|
| 635 |
|
---|
| 636 | è¦ãããããï¼ã©ã¡ãã§å®ç¾ãã¦ãåé¡ãªãï¼ã©ã¡ããã«ã¼ãã«ã®ãªã½ã¼ã¹ã
|
---|
| 637 | ã¦ä½¿ç¨ãããã®é¸æã ãã§ããï¼
|
---|
| 638 |
|
---|
| 639 | ã©ã¡ãã使ãã¨ãã¦ãï¼åªå
|
---|
| 640 | 度ã®è¨å®ãåé¡ã¨ãªãï¼ãã£ã¹ãããã£ããå²è¾¼
|
---|
| 641 | ã¿ã«ããªã¨ã³ãããããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ã¾ã§ã®å¦çã¯ï¼å°ãªãã¨ãCPUã
|
---|
| 642 | ãã¯ç¶æ
|
---|
| 643 | ã§å®è¡ãããªããã°ãªããªãï¼SVCãPendSVCã¯ã©ã¡ããå²è¾¼ã¿åªå
|
---|
| 644 | 度
|
---|
| 645 | ãæã¤ããï¼NVICåªå
|
---|
| 646 | 度ãã¹ã¯ããBASEPRIåªå
|
---|
| 647 | 度ãã¹ã¯ã®æ¹ãé«ãå ´åï¼å¦
|
---|
| 648 | çãããªãï¼
|
---|
| 649 |
|
---|
| 650 | CPUããã¯ç¶æ
|
---|
| 651 | ãBASEPRIã®è¨å®ã§å®ç¾ããå ´åï¼ãã®è¨å®å¤ãSVCãPendSVCã«
|
---|
| 652 | è¨å®ããå¤ããä½ãããå¿
|
---|
| 653 | è¦ãããï¼è¨ãæããã¨ï¼SVCãPendSVCã®åªå
|
---|
| 654 | 度ã
|
---|
| 655 | CPUããã¯æã®åªå
|
---|
| 656 | 度ãã¹ã¯ã®å¤ããé«ãå¤ï¼ä»ã®å²è¾¼ã¿ããé«ãåªå
|
---|
| 657 | 度ï¼ã¨
|
---|
| 658 | ããå¿
|
---|
| 659 | è¦ãããï¼
|
---|
| 660 |
|
---|
| 661 | CPUããã¯ç¶æ
|
---|
| 662 | ãFAULTMASKãPRIMASKã§å®ç¾ããå ´åã¯ï¼ããããè¨å®ããã
|
---|
| 663 | ã¨ï¼SVCãPendSVCãåä»ããããªãããï¼ãã£ããBASEPRIã«ããå²è¾¼ã¿ãã
|
---|
| 664 | ã¹ã¯ããããã«è¨å®ããå¿
|
---|
| 665 | è¦ãããï¼ãã®å ´åãï¼SVCãPendSVCã¯ä»ã®å²è¾¼ã¿
|
---|
| 666 | ããé«ãåªå
|
---|
| 667 | 度ãè¨å®ããå¿
|
---|
| 668 | è¦ãããï¼
|
---|
| 669 |
|
---|
| 670 | 以ä¸ã«ããï¼Handlerã¢ã¼ãã¸ã®ç§»è¡ã®ããã«ã¯ï¼CPUããã¯ç¶æ
|
---|
| 671 | ãBASEPRIã§
|
---|
| 672 | å®ç¾ãï¼SVCãPendSVCã«è¨å®ããåªå
|
---|
| 673 | 度ãã«ã¼ãã«ç®¡çå
|
---|
| 674 | ã®æé«åªå
|
---|
| 675 | 度ããä¸
|
---|
| 676 | ã¤é«ãåªå
|
---|
| 677 | 度ã«è¨å®ããå¿
|
---|
| 678 | è¦ãããï¼
|
---|
| 679 |
|
---|
| 680 | ARMv7-Mã§ã¯SVCã«ããå®ç¾ããï¼SVNã®æ¹ãPendSVCããå®è¡ãªã¼ãããããå°
|
---|
| 681 | ããããï¼SVCã使ç¨ãã
|
---|
| 682 |
|
---|
| 683 | ARMv6-Mã§ã¯SVCã«ããå®ç¾ããï¼ARMv6-Mã¯CPUããã¯ç¶æ
|
---|
| 684 | ãPRIMASKã§å®ç¾ã
|
---|
| 685 | ã¦ããPRIMASKãã»ããããç¶æ
|
---|
| 686 | ã§SVCãå®è¡ããã¨ãã©ã¼ã«ãã¨ãªãããï¼
|
---|
| 687 | PendSVCãçºè¡ãã¦ï¼PRIMASKãã¯ãªã¢ãããã¨ã§å®ç¾ããï¼PendSVCã®å²è¾¼ã¿
|
---|
| 688 | åªå
|
---|
| 689 | 度ã¯æé«ã¨ãã¦ããããï¼ãã®éã§å²è¾¼ã¿ãå
|
---|
| 690 | ¥ããã¨ã¯ãªãï¼
|
---|
| 691 |
|
---|
| 692 |
|
---|
| 693 | 7. ä¾å¤/å²è¾¼ã¿åºå
|
---|
| 694 | ¥ãå£ã§ã®å¤éå²è¾¼ã¿ã®å¤æ
|
---|
| 695 |
|
---|
| 696 | 7-1
|
---|
| 697 | EXC_RETURNã®ã¢ã¼ãå¤å®ããã
|
---|
| 698 | 7-2
|
---|
| 699 | EXC_RETURNã®ã¹ã¿ãã¯å¤å®ããã
|
---|
| 700 | 7-3
|
---|
| 701 | å²è¾¼ã¿ãã¹ãåæ°ã®ç®¡çå¤æ°
|
---|
| 702 |
|
---|
| 703 | ä¾å¤/å²è¾¼ã¿åä»ãæã¯ï¼åä»ããä¾å¤/å²è¾¼ã¿ä»¥ä¸ã®å²è¾¼ã¿ã¯ç¦æ¢ãããï¼å
|
---|
| 704 | ¨
|
---|
| 705 | å²è¾¼ã¿ç¦æ¢ç¶æ
|
---|
| 706 | ã«ã¯ãªããªãï¼ãã®ããï¼å²è¾¼ã¿ãã¹ãåæ°ã®ç®¡çå¤æ°ãã¤ã³
|
---|
| 707 | ã¯ãªã¡ã³ãããåã«å²è¾¼ã¿ãå
|
---|
| 708 | ¥ãå¯è½æ§ãããããï¼7-3ã¯ä½¿ç¨ãããã¨ãã§
|
---|
| 709 | ããªãï¼
|
---|
| 710 |
|
---|
| 711 | 5ã§è°è«ããéãï¼IDLEã«ã¼ããThreadã¢ã¼ãã§å®è¡ããããï¼7-1ã§ã¯ãªãï¼
|
---|
| 712 | 7-2ã§å¤æããå¿
|
---|
| 713 | è¦ãããï¼
|
---|
| 714 |
|
---|
| 715 |
|
---|
| 716 | 8. IDLEã«ã¼ã
|
---|
| 717 |
|
---|
| 718 | 8-1
|
---|
| 719 | Threadã¢ã¼ãã§å®è¡
|
---|
| 720 | 8-2
|
---|
| 721 | Handlerã¢ã¼ãã§å®è¡
|
---|
| 722 |
|
---|
| 723 | 5ã§è°è«ããéãï¼Threadã¢ã¼ãã§å®è¡ã§ããæ¹ããªã¼ãããããå°ããï¼ã¾
|
---|
| 724 | ãï¼Threadã¢ã¼ãã§å®è¡ãã¦ãï¼å²ãè¾¼ã¿ã®åºå
|
---|
| 725 | ¥ãå£ã§æ£ããéã¿ã¹ã¯ã³ã³ã
|
---|
| 726 | ãã¹ãã¨å¤å®ã§ããã°ï¼Threadã¢ã¼ãã§åé¡ãªãï¼
|
---|
| 727 |
|
---|
| 728 |
|
---|
| 729 | 9ï¼ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã®ãµãã¼ã
|
---|
| 730 |
|
---|
| 731 | 9-1
|
---|
| 732 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ãããªã
|
---|
| 733 | 9-2
|
---|
| 734 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ããã
|
---|
| 735 |
|
---|
| 736 | ARMv7-Mã§ã¯ï¼CPUããã¯ãBASEPRIã§å®ç¾ãã¦ãããã¨ï¼ãã¯ã¿ãã¼ãã«ããµ
|
---|
| 737 | ãã¼ããã¦ããï¼å²è¾¼ã¿ãã³ãã©ãCè¨èªã§è¨è¿°å¯è½ã§ããããï¼ãµãã¼ãã
|
---|
| 738 | 容æã§ããããï¼ãµãã¼ãããï¼
|
---|
| 739 |
|
---|
| 740 | ARMv6-Mã§ã¯ï¼CPUããã¯ãPRIMASKã§å®ç¾ãã¦ããããï¼ãµã¼ãã¼ãããªãï¼
|
---|
| 741 |
|
---|
| 742 |
|
---|
| 743 | 10. CPUããã¯
|
---|
| 744 |
|
---|
| 745 | 10-1
|
---|
| 746 | BASEPRIã使ç¨(ARMv7-M)
|
---|
| 747 | åå¥ã®å²è¾¼ã¿ç¦æ¢è¨±å¯ã§ã¨ãã¥ã¬ã¼ã·ã§ã³(ARMv6-M)
|
---|
| 748 | 10-2
|
---|
| 749 | FAULTMASK/PRIMASKã使ç¨
|
---|
| 750 |
|
---|
| 751 | ã«ã¼ãã«ã®ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ããããªãï¼BASEPRIã使ç¨ããå¿
|
---|
| 752 | è¦ãã
|
---|
| 753 | ãï¼
|
---|
| 754 |
|
---|
| 755 | ARMv7-Mã§ã¯CPUããã¯ã«BASEPRIã使ç¨ããï¼
|
---|
| 756 |
|
---|
| 757 | ARMv6-Mã§ã¯CPUããã¯ã«PRIMASKã使ç¨ããï¼åå¥ã®å²è¾¼ã¿ç¦æ¢è¨±å¯ã§ã¨ãã¥
|
---|
| 758 | ã¬ã¼ã·ã§ã³ããæ¹æ³ã¯ï¼SysTicã®ã¿å¥ã®ã¬ã¸ã¹ã¿ã§è¨å®ããå¿
|
---|
| 759 | è¦ãããï¼å®è¡
|
---|
| 760 | ãªã¼ããããã大ããã¨ããåé¡ãããï¼
|
---|
| 761 |
|
---|
| 762 | 11. å²è¾¼ã¿ããã¯ã¨CPUä¾å¤ã®é¢ä¿
|
---|
| 763 |
|
---|
| 764 | 11-1
|
---|
| 765 | BASEPRIã使ç¨(ARMv7-M)
|
---|
| 766 | 11-2
|
---|
| 767 | FAULTMASK/PRIMASKã使ç¨
|
---|
| 768 |
|
---|
| 769 | FAULTMASK/PRIMASKã使ç¨ããã¨ï¼NMI 㨠Hardware Fault 以å¤ã®CPUä¾å¤ãç¦
|
---|
| 770 | æ¢ããã¦ãã¾ãï¼
|
---|
| 771 |
|
---|
| 772 | BASEPRIãç¨ããã¨ï¼å²è¾¼ã¿ããã¯ä¸ã«ãCPUä¾å¤ãåä»ãããå ´åã¯ï¼
|
---|
| 773 | BASEPRIãç¨ãã¦ï¼æé«åªå
|
---|
| 774 | 度ãCPUä¾å¤ã®ããã«ãªã¶ã¼ãããå¿
|
---|
| 775 | è¦ãããï¼
|
---|
| 776 |
|
---|
| 777 | å²è¾¼ã¿ããã¯æãï¼CPUä¾å¤ãåä»ããããã«ããããã°BASEPRIã使ç¨ããå¿
|
---|
| 778 |
|
---|
| 779 | è¦ãããï¼
|
---|
| 780 |
|
---|
| 781 | μIRON4.0ä»æ§ã®3.5.3ã§ã¯ï¼CPUä¾å¤ã®åªå
|
---|
| 782 | 度ã¯æ¬¡ã®ããã«å®ãããã¦ããï¼
|
---|
| 783 |
|
---|
| 784 | "CPUä¾å¤ãã³ãã©ã®åªå
|
---|
| 785 | é ä½ã¯ï¼CPUä¾å¤ãçºçããå¦çã®åªå
|
---|
| 786 | 度ã¨ï¼ãã£ã¹
|
---|
| 787 | ãããã£ã®åªå
|
---|
| 788 | é ä½ã®ãããããããé«ãï¼"
|
---|
| 789 |
|
---|
| 790 | CPUä¾å¤ãçºçããå¦çã®åªå
|
---|
| 791 | 度ãããé«ãã¨ããã®ã§ï¼CPUããã¯ãå²è¾¼ã¿ã
|
---|
| 792 | ãã¯ç¶æ
|
---|
| 793 | ã®ã¿ã¹ã¯ã§çºçããå ´åã§ãï¼åªå
|
---|
| 794 | ãã¦å®è¡ãããã¹ãã ã¨ãèãã
|
---|
| 795 | ããï¼
|
---|
| 796 |
|
---|
| 797 | ä¸æ¹ï¼TOPPERSæ¨æºå²è¾¼ã¿å¦çã¢ãã«ã®ä»æ§æ¸ã§ã¯ï¼CPUä¾å¤ã¯ï¼ããã»ããµæ¯
|
---|
| 798 | ã«ç°ãªãããï¼CPUä¾å¤ã®å¦çã¢ãã«ã®æ¨æºåæ¤è¨ã®å¯¾è±¡å¤ã¨ãã¦ããï¼ãã®
|
---|
| 799 | ããï¼ARM-Mã§ã®æ±ãã決ãã¦ï¼ããã¥ã¢ã«ã«æè¨ããã°ããã¨èããããï¼
|
---|
| 800 |
|
---|
| 801 | ARMv7-Mã§ã¯å²è¾¼ã¿ããã¯ã¯BASEPRIã使ç¨ããï¼
|
---|
| 802 |
|
---|
| 803 | ARMv6-Mã§ã¯å²è¾¼ã¿ããã¯ã¯PRIMASKã使ç¨ããï¼
|
---|
| 804 |
|
---|
| 805 |
|
---|
| 806 | 12. å¤é¨åªå
|
---|
| 807 | 度ã¨å
|
---|
| 808 | é¨åªå
|
---|
| 809 | 度ã®å¤æ
|
---|
| 810 |
|
---|
| 811 | å¤é¨åªå
|
---|
| 812 | 度ã¨ã¯APIã§æå®ããå²è¾¼ã¿åªå
|
---|
| 813 | 度(PRIå)ã®ãã¨ã§ããï¼å¤ãå°ãã
|
---|
| 814 | ã»ã©åªå
|
---|
| 815 | 度ãé«ãï¼å²è¾¼ã¿ãã³ãã©ã«ã¯ï¼-1ããé£ç¶ããè² ã®å¤ãè¨å®å¯è½ã§
|
---|
| 816 | ããï¼å
|
---|
| 817 | é¨åªå
|
---|
| 818 | 度ã¯ï¼BASEPRIãNVICã®åªå
|
---|
| 819 | 度ã¬ã¸ã¹ã¿ã«è¨å®ããå¤ã§ããï¼
|
---|
| 820 |
|
---|
| 821 | å®è£
|
---|
| 822 | ãããå²è¾¼ã¿åªå
|
---|
| 823 | 度ã®ãããå¹
|
---|
| 824 | ã TBITW_IPRI ã¨ããã¨ï¼è¨å®å¯è½ãªå¤é¨
|
---|
| 825 | åªå
|
---|
| 826 | 度ã¯æ¬¡ã®ããã«ãªãï¼
|
---|
| 827 |
|
---|
| 828 | TIPM_ENAALLï¼ï¼0ï¼ï½ -(1 << TBITW_IPRI)
|
---|
| 829 |
|
---|
| 830 |
|
---|
| 831 | 13. ã«ã¼ãã«ç®¡çå
|
---|
| 832 | ã®æé«åªå
|
---|
| 833 | 度(CPUããã¯ç¶æ
|
---|
| 834 | ã§ã®åªå
|
---|
| 835 | 度ãã¹ã¯)
|
---|
| 836 |
|
---|
| 837 | 6.ã§è¿°ã¹ãããã«ï¼å²è¾¼ã¿ã®åºå£ã§SVCãã³ãã©ãå¼ã³åºãå¿
|
---|
| 838 | è¦ãããããï¼
|
---|
| 839 | SVCãã³ãã©ã¯CPUããã¯ç¶æ
|
---|
| 840 | ã®BASEPRIã«è¨å®ããåªå
|
---|
| 841 | 度ãã¹ã¯ããé«ãåªå
|
---|
| 842 | 度
|
---|
| 843 | ãè¨å®ããå¿
|
---|
| 844 | è¦ãããï¼
|
---|
| 845 |
|
---|
| 846 | å®è£
|
---|
| 847 | ãããå²è¾¼ã¿åªå
|
---|
| 848 | 度ã®ãããå¹
|
---|
| 849 | ã TBITW_IPRIï¼åªå
|
---|
| 850 | 度ä¸ã®ãµãåªå
|
---|
| 851 | 度ã®
|
---|
| 852 | ãããå¹
|
---|
| 853 | ãTBIT_IPRIã¨ããã¨ï¼CPUããã¯ç¶æ
|
---|
| 854 | ï¼ã«ã¼ãã«ç®¡çå
|
---|
| 855 | å²è¾¼ã¿ã«è¨å®
|
---|
| 856 | å¯è½ãªæé«åªå
|
---|
| 857 | 度ï¼ã¨ãã¦æå®å¯è½ãªåªå
|
---|
| 858 | 度ãã¹ã¯ã®è¨å®ç¯å²ã¯ä»¥ä¸ã®å¤ã®ç¯
|
---|
| 859 | å²ã¨ãªãï¼
|
---|
| 860 |
|
---|
| 861 | -(2^(TBIW_IPRI) - 1) + (2^TBITW_SUBIPRI) ï½ -1
|
---|
| 862 |
|
---|
| 863 |
|
---|
| 864 | 14. å²è¾¼ã¿åªå
|
---|
| 865 | 度ãã¹ã¯
|
---|
| 866 |
|
---|
| 867 | ARMv7-Mã§ã¯BASEPRIã«ããå®ç¾ããï¼
|
---|
| 868 |
|
---|
| 869 | ARMv6-Mã§ã¯åå¥ã®å²è¾¼ã¿ç¦æ¢è¨±å¯æ©è½ãç¨ãã¦ã¨ãã¥ã¬ã¼ã·ã§ã³ããï¼
|
---|
| 870 |
|
---|
| 871 |
|
---|
| 872 | 15. FPUã®ãµãã¼ã
|
---|
| 873 |
|
---|
| 874 | 15-1
|
---|
| 875 | FPUã使ç¨ããã¿ã¹ã¯/ISRãã¦ã¼ã¶ãæå®ããï¼ æå®ãã¦ããªãã¿ã¹ã¯/ISR
|
---|
| 876 | ã§ã¯FPUã使ç¨ããã¨ä¾å¤ã¨ãªãï¼
|
---|
| 877 | 15-2
|
---|
| 878 | FPUã使ç¨ããã¿ã¹ã¯/ISRãã¦ã¼ã¶ã¯æå®ããªãï¼å
|
---|
| 879 | ¨ã¦ã®ã¿ã¹ã¯/ISRã§FPUã
|
---|
| 880 | 使ç¨å¯è½ã§ããï¼
|
---|
| 881 |
|
---|
| 882 | 15-1ã¯ä¸è¬ã«ã³ã³ããã¹ãã®ä¿å復帰ã®ãªã¼ãããããä½æ¸ããç®çã§æ¡ç¨ã
|
---|
| 883 | ããï¼15-1ãæ¡ç¨ããã¨ï¼ã¿ã¹ã¯ã¨ISRã®å±æ§ã®æ¡å¼µãå¿
|
---|
| 884 | è¦ã¨ãªãï¼
|
---|
| 885 |
|
---|
| 886 | ARMv7-Mã§ã¯ï¼FPUã使ç¨ããå ´åã®ã¿ä¾å¤ã»å²è¾¼ã¿ã®å
|
---|
| 887 | ¥ãå£ã§FPUã³ã³ããã¹
|
---|
| 888 | ããä¿åããæ©è½ãããããï¼15-2ãé¸æãã¦ãï¼FPUã使ããªãéãã¯ãã
|
---|
| 889 | ã«ãã£ã¯ãªãã¨èãï¼15-2ãæ¡ç¨ããï¼
|
---|
| 890 |
|
---|
| 891 | FPUã«é¢ãããµãã¼ãã®ããªã¨ã¼ã·ã§ã³ã¯æ¬¡ã®çµã¿åãããå¯è½ã§ããï¼
|
---|
| 892 |
|
---|
| 893 | FPCCR ã³ã³ããã¹ã
|
---|
| 894 | LSPEN ASPEN ã³ã³ãã¤ã«ãªãã·ã§ã³ ä¿å復帰 FPU
|
---|
| 895 | NO_FPU - - æå®ãªã ãªã ç¡å¹
|
---|
| 896 | FPU_NO_PRESERV 0 0 -mfpu=fpv4-sp-d16 ãªã æå¹
|
---|
| 897 | FPU_NO_LAZYSTACKING 0 1 -mfpu=fpv4-sp-d16 ãã æå¹
|
---|
| 898 | FPU_LAZYSTACKING 1 1 -mfpu=fpv4-sp-d16 ãã æå¹
|
---|
| 899 |
|
---|
| 900 | NO_FPU
|
---|
| 901 | FPUã使ç¨ããªãï¼Cortex-M0/Cortex-M0+/Cortex-M3/Cortex-M4 ã®å ´åã«æå®ï¼
|
---|
| 902 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ããªãï¼
|
---|
| 903 |
|
---|
| 904 | FPU_NO_PRESERV
|
---|
| 905 | FPUã使ç¨ããï¼Cortex-M4F ã®å ´åã«æå®å¯è½ï¼
|
---|
| 906 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ããªãï¼
|
---|
| 907 | FPUã使ç¨å¯è½ãªã¿ã¹ã¯ã¯1åãããã¯ï¼ã·ã¹ãã ä¸ã®æé«åªå
|
---|
| 908 | 度ã®ISR群ã§ä½¿
|
---|
| 909 | ç¨å¯è½ï¼
|
---|
| 910 |
|
---|
| 911 | FPU_NO_LAZYSTACKING
|
---|
| 912 | FPUã使ç¨ããï¼Cortex-M4F ã®å ´åã«æå®å¯è½ï¼
|
---|
| 913 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ãï¼Lazy stacking ã¯
|
---|
| 914 | 使ç¨ããªãï¼
|
---|
| 915 | å
|
---|
| 916 | ¨ã¦ã®ã¿ã¹ã¯/ISRã§FPUã使ç¨å¯è½ï¼
|
---|
| 917 |
|
---|
| 918 | FPU_LAZYSTACKING
|
---|
| 919 | FPUã使ç¨ããï¼Cortex-M4F ã®å ´åã«æå®å¯è½ï¼
|
---|
| 920 | ãã£ã¹ãããã£çã§ã¯FPUã³ã³ããã¹ãã®ä¿å復帰ãè¡ãï¼Lazy stacking ã
|
---|
| 921 | 使ç¨ããï¼
|
---|
| 922 | å
|
---|
| 923 | ¨ã¦ã®ã¿ã¹ã¯/ISRã§FPUã使ç¨å¯è½ï¼
|
---|
| 924 |
|
---|
| 925 |
|
---|
| 926 | FPU_NO_LAZYSTACKINGæã®ã¬ã¸ã¹ã¿ã®ä¿åã»å¾©å¸°ã³ã¼ã
|
---|
| 927 |
|
---|
| 928 | FPU_NO_LAZYSTACKING ã®å ´åã¯ä¸è¬ã¬ã¸ã¹ã¿ã¨åãã¿ã¤ãã³ã°ã§ï¼ãã£ã¹ãã
|
---|
| 929 | ãå
|
---|
| 930 | ã®ã¿ã¹ã¯ãFPUã使ç¨ãã¦ããããå¤æãã¦ã¬ã¸ã¹ã¿ãä¿åã»å¾©å¸°ããã°
|
---|
| 931 | ããï¼è©²å½ããç®æã¯æ¬¡ã®éãã§ããï¼
|
---|
| 932 |
|
---|
| 933 | ãã£ã¹ããã(dispatch)
|
---|
| 934 | ã»CONTROL.FPCAããã§ãã¯ãã¦'1'ãªãs16-s31ãä¿åãã
|
---|
| 935 | ã»å¾©å¸°ç¨ã«CONTROL.FPCAãã¿ã¹ã¯ã¹ã¿ãã¯ã«ä¿å
|
---|
| 936 |
|
---|
| 937 | ãã£ã¹ãããããã®å¾©å¸°(dispatch)
|
---|
| 938 | ã»CONTROL.FPCAãã¿ã¹ã¯ã¹ã¿ãã¯ãã復帰ãã
|
---|
| 939 | ã»å¾©å¸°ããCONTROL.FPCAããã§ãã¯ãã¦'1'ãªãs16-s31ãã¿ã¹ã¯ã¹ã¿ãã¯ãã
|
---|
| 940 | 復帰ããï¼
|
---|
| 941 |
|
---|
| 942 | é
|
---|
| 943 | 延ãã£ã¹ããã(ret_int_4)
|
---|
| 944 | ã»ã¿ã¹ã¯ãå²ãè¾¼ã¾ããéã®EXC_RETURNãã¿ã¹ã¯ã¹ã¿ãã¯ã«ä¿åãã¦ãã
|
---|
| 945 | ã»EXC_RETURNãã¿ã¹ã¯ã¹ã¿ãã¯ãã復帰
|
---|
| 946 | ã»å¾©å¸°ããEXC_RETURN[4] == 0(FPU使ç¨)ãªãs16-s31ãã¿ã¹ã¯ã¹ã¿ãã¯ã«ä¿å
|
---|
| 947 | ããï¼
|
---|
| 948 | ã»å¾©å¸°ç¨ã«EXC_RETURNã®å¤ãã¿ã¹ã¯ã¹ã¿ãã¯ã«ä¿å
|
---|
| 949 |
|
---|
| 950 | é
|
---|
| 951 | 延ãã£ã¹ãããããã®å¾©å¸°(ret_int_r)
|
---|
| 952 | ã»ã¿ã¹ã¯ãå²ãè¾¼ã¾ããéã®EXC_RETURNã®å¤ãã¿ã¹ã¯ã¹ã¿ãã¯ãã復帰
|
---|
| 953 | ã»å¾©å¸°ããEXC_RETURN[4] == 0(FPU使ç¨)ãªãs16-s31ãã¿ã¹ã¯ã¹ã¿ãã¯ãã復帰
|
---|
| 954 | ã»å
|
---|
| 955 | ã®SVCãã³ãã©å¼ã³åºãæã«FPUã¬ã¸ã¹ã¿ãç©ã¾ãªãããã«CONTROL.FPCAãã¯ãªã¢ï¼
|
---|
| 956 |
|
---|
| 957 | FPU_LAZYSTACKINGæã®ã¬ã¸ã¹ã¿ã®ä¿åã»å¾©å¸°ã³ã¼ã
|
---|
| 958 |
|
---|
| 959 | FPU_NO_LAZYSTACKINGæã®ã³ã¼ãããã®ã¾ã¾ä½¿ç¨ããã¨FPU_LAZYSTACKINGã®å ´
|
---|
| 960 | åã¯ï¼å²è¾¼ã¿ã»ä¾å¤çºçå¾ã«æ¬¡ã®ã¿ã¤ãã³ã°ã§ä¾å¤ãã¬ã¼ã ã«FPUã®ã³ã³ãã
|
---|
| 961 | ã¹ãããã¼ãã¦ã§ã¢ã«ãã£ã¦èªåçã«ä¿åãããï¼
|
---|
| 962 |
|
---|
| 963 | ä¾å¤ã»å²è¾¼ã¿ãã³ãã©å®è¡ä¸
|
---|
| 964 | FPUã使ç¨ããã¿ã¹ã¯/ISRå®è¡ä¸ã«ä¾å¤ã»å²è¾¼ã¿ãçºçãï¼ä¾å¤ã»å²è¾¼ã¿ãã³
|
---|
| 965 | ãã©ã§FPUå½ä»¤ãå®è¡ããå ´åï¼FPCCR.LSPACT==1 ã¨ãªã£ã¦ããããï¼
|
---|
| 966 |
|
---|
| 967 | é
|
---|
| 968 | 延ãã£ã¹ãããæ(ret_int_4)
|
---|
| 969 | ä¾å¤ã»å²è¾¼ã¿ãã³ãã©ã§FPUã使ç¨ããªãã£ãå ´åã¯ï¼ret_int_4å®è¡æã«ã¯ã³
|
---|
| 970 | ã³ããã¹ãã¯ä¿åããã¦ããªãï¼ããã«åã¬ã¸ã¹ã¿ã®å¤ã¯æ¬¡ã®ããã«ãªã£ã¦ã
|
---|
| 971 | ãï¼
|
---|
| 972 | ã»FPCCR.LSPACT == '1'
|
---|
| 973 | ã»FPCAR = ä¾å¤ãã¬ã¼ã ã®FPUã¬ã¸ã¹ã¿ã®ä¿åã¢ãã¬ã¹(S0ã®ã¢ãã¬ã¹)
|
---|
| 974 | ret_int_4ã§ã¯ï¼s16-s31 ãã¿ã¹ã¯ã¹ã¿ãã¯ã«ä¿åããï¼ããã§FPUã使ç¨ãã
|
---|
| 975 | ããï¼s0-s15,FPSRã¯ä¾å¤ãã¬ã¼ã ã«ä¿åãããï¼
|
---|
| 976 |
|
---|
| 977 | 以ä¸ã®ç®æã¯FPU_LAZYSTACKINGã®å ´åã«ã®ã¿å¿
|
---|
| 978 | è¦ã§ããï¼
|
---|
| 979 |
|
---|
| 980 | å²è¾¼ã¿åºå£ã§ã®ã¿ã¹ã¯ä¾å¤å¼ã³åºãæ
|
---|
| 981 | FPUã使ç¨ããã¿ã¹ã¯å®è¡ä¸ã«ä¾å¤/å²è¾¼ã¿ãçºçãï¼ä¾å¤/å²è¾¼ã¿ã®åºå£ãã
|
---|
| 982 | ã¿ã¹ã¯ä¾å¤å¦çãå¼ã³åºããå ´åã«ã¯ï¼FPCCR.LSPACT == '1' ã¨FPUã³ã³ãã
|
---|
| 983 | ã¹ããä¿åããã¦ããªãç¶æ
|
---|
| 984 | ã§ã¿ã¹ã¯ä¾å¤ãå¼ã³åºãããå¯è½æ§ãããï¼ã¿ã¹
|
---|
| 985 | ã¯ä¾å¤ã§ext_tsk()ãå¼ã³åºããå ´åãä»ã®ã¿ã¹ã¯ã«ãã£ã¹ãããããï¼
|
---|
| 986 | ter_tsk()ã§çµäºãããããå ´åã«ã¯ï¼FPCCR.LSPACT ã '0'ã«ã¯ãªã¢ããå¿
|
---|
| 987 | è¦
|
---|
| 988 | ãããï¼ext_tsk()ã®ã±ã¼ã¹ã¯ã¿ã¼ã²ããä¾åé¨exit_and_dispatch()ãå¼ã³åº
|
---|
| 989 | ãããããï¼ããã§ã¯ãªã¢ããã°è¯ããï¼ter_tsk()ã§ã¯ã¿ã¼ã²ããä¾åé¨ã
|
---|
| 990 | å¼ã³åºããªãããï¼ã¯ãªã¢ãããã¨ãåºæ¥ãªãï¼ãã®ããï¼å²è¾¼ã¿åºå£ã§ã®ã¿
|
---|
| 991 | ã¹ã¯ä¾å¤å¼ã³åºãã¿ã¤ãã³ã°ã§FPUã³ã³ããã¹ããã¹ã¿ãã¯ã«æ ¼ç´ããããï¼
|
---|
| 992 | å¯ä½ç¨ã®ãªãFPUå½ä»¤ãçºè¡ããï¼
|
---|
| 993 | ãªãï¼ä»ã®ã¿ã¹ã¯ã«ãã£ã¹ããããããå ´åã¯ï¼CONTROL.FPCAã'1'ã§ç¡ãã
|
---|
| 994 | ã(ã¿ã¹ã¯ä¾å¤ã§FPUã使ç¨ããªãã£ãå ´å)ï¼s16ï½s31ã®FPUã¬ã¸ã¹ã¿ã®ä¿åã
|
---|
| 995 | è¡ãããï¼ä¾å¤ãã¬ã¼ã ã¸ã®æ¸ãæ»ããçºçããªãï¼
|
---|
| 996 |
|
---|
| 997 | CONTROL.FPCAã®ã»ããã»ã¯ãªã¢ã®ã¿ã¤ãã³ã°
|
---|
| 998 |
|
---|
| 999 | ã¯ãªã¢ããç®æãè¤æ°ç®æã«ãªãã¨ææ¡ãå°é£ã§ããããï¼ãã£ã¹ãããã£ã®å
|
---|
| 1000 | é ã§
|
---|
| 1001 | ã¯ä¸å¾CONTROL.FPCAã'0'ã«ã¯ãªã¢ããï¼
|
---|
| 1002 |
|
---|
| 1003 | dispatchãå¼ã³åºããã¿ã¹ã¯ã¸ã®ãªã¿ã¼ã³ããéã«ã¯ï¼æ»ãå
|
---|
| 1004 | ã®ã¿ã¹ã¯ãFPU
|
---|
| 1005 | ã使ç¨ãããå ´åã¯ï¼s16ï½s31ã®å¾©å¸°ãè¡ãããï¼ãã®å¦çã«ãã
|
---|
| 1006 | CONTROL.FPCAã'1'ã«ã»ãããããï¼
|
---|
| 1007 |
|
---|
| 1008 | ã¾ãï¼EXC_RETURNã«ãããªã¼ã¿ã³æã¯EXC_RETURNã®å¤ã«ãã£ã¦ãªã¼ã¿ã¼ã³æã«
|
---|
| 1009 | ãã¼ãã¦ã§ã¢çã«èªåçã«CONTROL.FPCAãå
|
---|
| 1010 | ã®ç¶æ
|
---|
| 1011 | ã«å¾©å¸°ãããã®ã§ã½ããã¦
|
---|
| 1012 | ã§ã¢ã«ããå¦çã¯å¿
|
---|
| 1013 | è¦ãªãï¼
|
---|
| 1014 |
|
---|
| 1015 | ã¿ã¹ã¯ä¾å¤ã®æ±ã
|
---|
| 1016 |
|
---|
| 1017 | ã¿ã¹ã¯ä¾å¤ã§FPUã使ç¨ãã¦ï¼é常ã®å¦çã§FPUã使ç¨ããªãå ´åã¯ï¼ã¿ã¹ã¯ä¾
|
---|
| 1018 | å¤ã®å¼ã³åºãã®åå¾ã§ CONTROL.FPCA ãä¿å復帰ããæ¹æ³ããããï¼ã¬ã¢ã±ã¼
|
---|
| 1019 | ã¹ã§ããã¨èãããããããµãã¼ãããªãï¼
|
---|
| 1020 |
|
---|
| 1021 | ABI
|
---|
| 1022 |
|
---|
| 1023 | GCCã§ã¯3種é¡é¸æå¯è½ï¼
|
---|
| 1024 |
|
---|
| 1025 | hard : æµ®åå°æ°ç¹å½ä»¤ã使ç¨ãã¦ABIã¯FPUã¬ã¸ã¹ã¿ã使ç¨ï¼
|
---|
| 1026 | soft : æµ®åå°æ°ç¹å½ä»¤ã使ç¨ããªãï¼
|
---|
| 1027 | softfp : æµ®åå°æ°ç¹å½ä»¤ã使ç¨ãããABIã¯softã¨åãï¼
|
---|
| 1028 |
|
---|
| 1029 | æ¢åã®ã©ã¤ãã©ãªã¨ãªã³ã¯ããå ´åã¯softfpãæå¹ã ãï¼ã¦ã¼ã¶ã¼ã«ã¹ã¿ãã¤
|
---|
| 1030 | ãºã¨ãã¦ãã£ãã©ã«ãã¯ï¼hardã¨ããï¼
|
---|
| 1031 |
|
---|
| 1032 | ãã¯ã
|
---|
| 1033 |
|
---|
| 1034 | FPUã³ã³ããã¹ã復帰ä¿åãæå¹åãããã¯ãï¼
|
---|
| 1035 |
|
---|
| 1036 | TOPPERS_FPU_CONTEXT
|
---|
| 1037 |
|
---|
| 1038 | FPUã®ä½¿ç¨ãæå¹åãããã¯ãï¼
|
---|
| 1039 |
|
---|
| 1040 | TOPPERS_FPU_ENABLE
|
---|
| 1041 |
|
---|
| 1042 | FPUã®ã¢ã¼ããã¯ãã£ãæå®ãããã¯ãï¼ARMCCã¨åããã¦æ¬¡ã®ãã¯ãã使ç¨ããï¼
|
---|
| 1043 | __TARGET_FPU_FPV4_SP
|
---|
| 1044 |
|
---|
| 1045 | FPU_NO_PRESERV/FPU_NO_LAZYSTACKING/FPU_LAZYSTACKINGã®å ´åã¯æ¬¡ã®ãã¯ããå®ç¾©ããï¼
|
---|
| 1046 |
|
---|
| 1047 | TOPPERS_FPU_NO_PRESERV
|
---|
| 1048 |
|
---|
| 1049 | TOPPERS_FPU_NO_LAZYSTACKING
|
---|
| 1050 |
|
---|
| 1051 | TOPPERS_FPU_LAZYSTACKING
|
---|
| 1052 |
|
---|
| 1053 |
|
---|
| 1054 | 16. æªè§£æ±ºèª²é¡
|
---|
| 1055 | ã»å²è¾¼ã¿ããã¯ã¨CPUä¾å¤ã®é¢ä¿
|
---|
| 1056 | BASEPRIã使ã£ãã¨ãã¦ãï¼ããCPUä¾å¤å¦çä¸ã«ä»ã®ä¾å¤ãçºçããã¨ï¼ã
|
---|
| 1057 | ã®ä¾å¤ã¯åãä»ããããªãããï¼ITRONä»æ§ã¯æºãããªãï¼
|
---|
| 1058 | ->ããããã¦ããã¥ã¢ã«è¨è¼ã«éããã.
|
---|
| 1059 | ã¡ã¢ãªãããã¯ã·ã§ã³ã®ä¾å¤ããã¹ã¯å¯è½ã§ããããè¦ä»¶çï¼
|
---|
| 1060 |
|
---|
| 1061 | 以ä¸ï¼
|
---|