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 | ã»æåã®ãªãªã¼ã¹
|
---|