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