1 |
|
---|
2 | TOPPERSããã¸ã§ã¯ã è¨è¨ã¡ã¢
|
---|
3 | ã«ããµã¹ RZ/Aããã³GR-PEACHã«é¢ããã¡ã¢
|
---|
4 |
|
---|
5 | ä½æè
|
---|
6 | : é«ç°åºç« ï¼åå¤å±å¤§å¦ï¼
|
---|
7 | æçµæ´æ°: 2016å¹´3æ21æ¥
|
---|
8 |
|
---|
9 | âã¡ã¢ã®ä½ç½®ã¥ã
|
---|
10 |
|
---|
11 | ãã®ã¡ã¢ã¯ï¼ã«ããµã¹ RZ/Aã¨ï¼ãããç¨ãããã¼ãã§ããGR-PEACHã«é¢ãã¦ï¼
|
---|
12 | TOPPERSã«ã¼ãã«ããã¼ãã£ã³ã°ããã«ããã£ã¦å¿
|
---|
13 | è¦ã¨ãªãäºé
|
---|
14 | ãã¾ã¨ãããã®
|
---|
15 | ã§ããï¼
|
---|
16 |
|
---|
17 | âç®æ¬¡
|
---|
18 |
|
---|
19 | ã»åèæç®
|
---|
20 | ã»RZ/Aã¨ã¯ï¼
|
---|
21 | ã»RZ/A1ãããä¾åé¨
|
---|
22 |
|
---|
23 | âåèæç®
|
---|
24 |
|
---|
25 | [1] RZ/A1Hã°ã«ã¼ãï¼RZ/A1Mã°ã«ã¼ã ã¦ã¼ã¶ã¼ãºããã¥ã¢ã« ãã¼ãã¦ã§ã¢ç·¨
|
---|
26 | Rev.2.00 2015.05
|
---|
27 | r01uh0403jj0200_rz_a1h.pdf
|
---|
28 |
|
---|
29 | [2] RZ/A1Lã°ã«ã¼ã ã¦ã¼ã¶ã¼ãºããã¥ã¢ã« ãã¼ãã¦ã§ã¢ç·¨
|
---|
30 | Rev.2.00 2015.05
|
---|
31 | r01uh0437jj0200_rz_a1l.pdf
|
---|
32 |
|
---|
33 | âRZ/Aã·ãªã¼ãºã¨ã¯ï¼
|
---|
34 |
|
---|
35 | RZ/Aã·ãªã¼ãºã¨ã¯ï¼ARM Cortex-A9ã³ã¢ãæè¼ããã«ããµã¹ã®ä¸é£ã®ãã¤ã³ã³ã®
|
---|
36 | ç·ç§°ã§ï¼ç¾æç¹ã§ä»¥ä¸ã®4ã¤ã®ããããããï¼
|
---|
37 |
|
---|
38 | ã»RZ/A1L
|
---|
39 | ã»RZ/A1LU
|
---|
40 | ã»RZ/A1M
|
---|
41 | ã»RZ/A1H
|
---|
42 |
|
---|
43 | ãããã¯ããããï¼åä½å¨æ³¢æ°400MHzã®ARM Cortex-A9ã³ã¢ã1ã¤æè¼ãã¦ãã
|
---|
44 | ãï¼æè¼ããRAM容éãå¨è¾ºããã¤ã¹ã«éããããï¼
|
---|
45 |
|
---|
46 | âRZ/A1ãããä¾åé¨
|
---|
47 |
|
---|
48 | TOPPERS/ASP3ã«ã¼ãã«ã§ã¯ï¼ä¸ã®4ã¤ã®ããããRZ/A1ã¨ç·ç§°ãï¼ä»å¾ï¼RZ/A2x
|
---|
49 | ãåºã¦ããã¨æ³åãï¼RZ/A1ã¨ç§°ãã¦ããï¼ï¼ãã®å
|
---|
50 | ±éé¨ãarch/arm_gcc/rza1
|
---|
51 | ãã£ã¬ã¯ããªã«ç½®ããã¨ã«ããï¼ãã ãï¼ç¾æç¹ã§4ã¤ã®ããããã¹ã¦ã«å¯¾å¿ã§
|
---|
52 | ãã¦ããããã§ã¯ãªãï¼
|
---|
53 |
|
---|
54 | âã³ã¢
|
---|
55 |
|
---|
56 | ã»ARM Cortex-A9 MPCore à 1ã³ã¢ï¼Revision: r3p0ï¼
|
---|
57 | å½ä»¤ãã£ãã·ã¥ï¼32KB
|
---|
58 | ãã¼ã¿ãã£ãã·ã¥ï¼32KB
|
---|
59 | TLBã¨ã³ããªï¼128
|
---|
60 | Jazelleï¼ã¡ãã£ã¢ããã»ãã·ã³ã°ã¨ã³ã¸ã³ï¼FPUï¼PTMã¤ã³ã¿ãã§ã¼ã¹
|
---|
61 | å
|
---|
62 | èµã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¯ä½¿ç¨ããªã
|
---|
63 | ãã©ã¤ãã¼ãã¡ã¢ãªé åã®ãã¼ã¹ã¢ãã¬ã¹ï¼0xf0000000
|
---|
64 |
|
---|
65 | ã»å
|
---|
66 | èµã®ã¿ã¤ãã¯å®è£
|
---|
67 | ããã¦ãã模æ§ã ãï¼å²è¾¼ã¿ãããããã¨ãã§ããªã
|
---|
68 |
|
---|
69 | âå²è¾¼ã¿ã³ã³ããã¼ã©
|
---|
70 |
|
---|
71 | ã»ã³ã¢å¤ã«å²è¾¼ã¿ã³ã³ããã¼ã©ãæè¼
|
---|
72 | ã»ARM PrimeCell Generic Interrupt Controllerï¼PL390ï¼
|
---|
73 | - ARM GICã¢ã¼ããã¯ãã£ä»æ§ ãã¼ã¸ã§ã³1ã«å¯¾å¿
|
---|
74 | ã»å²è¾¼ã¿åªå
|
---|
75 | é ä½ï¼32ã¬ãã«è¨å®å¯è½
|
---|
76 |
|
---|
77 | ã»ã¬ã¸ã¹ã¿ã®çªå°
|
---|
78 | | 0xfcfef800 ICR0 å²è¾¼ã¿ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿0
|
---|
79 | | 0xfcfef802 ICR1 å²è¾¼ã¿ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿1
|
---|
80 | | 0xfcfef804 IRQRR IRQå²è¾¼ã¿è¦æ±ã¬ã¸ã¹ã¿
|
---|
81 |
|
---|
82 | 0xe8201000 ICDDCR åé
|
---|
83 | å¨å¶å¾¡ã¬ã¸ã¹ã¿
|
---|
84 | â ãã£ã¹ããªãã¥ã¼ã¿å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICD_CTLRï¼
|
---|
85 | â¦â¦
|
---|
86 | â» å²è¾¼ã¿ã¢ã¯ãã£ãã»ããã¬ã¸ã¹ã¿ã¯ï¼å²è¾¼ã¿ã¢ã¯ãã£ããããã¬ã¸ã¹ã¿
|
---|
87 | â» å²è¾¼ã¿ã¢ã¯ãã£ãã¯ãªã¢ã¬ã¸ã¹ã¿ã¯ç¡ã
|
---|
88 | | 0xe8201d00 ppi_status PPIã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿
|
---|
89 | | 0xe8201d04 spi_status0 SPIã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿0
|
---|
90 | | â¦â¦
|
---|
91 | | 0xe8201d44 spi_status16 SPIã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿16
|
---|
92 | 0xe8201f00 ICDSGIR ã½ããã¦ã§ã¢çæå²è¾¼ã¿ã¬ã¸ã¹ã¿
|
---|
93 |
|
---|
94 | 0xe8202000 ICCICR CPUã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿
|
---|
95 | â CPUã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICC_CTLRï¼
|
---|
96 | â¦â¦
|
---|
97 |
|
---|
98 | ãå²è¾¼ã¿ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿0ï¼ICR0ï¼
|
---|
99 | - NMIå
|
---|
100 | ¥åã¬ãã«ã®èªã¿åºã
|
---|
101 | - NMIã¨ãã¸ã»ã¬ã¯ãã®è¨å®ï¼èªã¿åºã
|
---|
102 | - NMIå²è¾¼ã¿è¦æ±ã®èªã¿åºãï¼ã¯ãªã¢
|
---|
103 |
|
---|
104 | ãå²è¾¼ã¿ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿1ï¼ICR1ï¼
|
---|
105 | - IRQ7ãIRQ0ã«å¯¾ãã¦ï¼ãã¼ã¬ãã«ï¼ç«ã¡ä¸ããã¨ãã¸ï¼ç«ã¡ä¸ããã¨ã
|
---|
106 | ã¸ï¼ä¸¡ã¨ãã¸ã®è¨å®ï¼èªã¿åºã
|
---|
107 | â IRQå²è¾¼ã¿ããªã¬è¨å®ã¯ãã®ã¬ã¸ã¹ã¿ã§è¡ãï¼GICå´ã¯ã¬ãã«ã«è¨å®ãã
|
---|
108 |
|
---|
109 | ãIRQå²è¾¼ã¿è¦æ±ã¬ã¸ã¹ã¿ï¼IRQRRï¼
|
---|
110 | - IRQ7ãIRQ0ã®å²è¾¼ã¿è¦æ±ã®èªã¿åºãï¼ã¯ãªã¢
|
---|
111 |
|
---|
112 | ã»å²è¾¼ã¿è¦å ã¨å²è¾¼ã¿ID
|
---|
113 | - NMIå²è¾¼ã¿ ⦠CPUã«FIQã§éç¥
|
---|
114 | - IRQå²è¾¼ã¿
|
---|
115 | - å
|
---|
116 | èµå¨è¾ºã¢ã¸ã¥ã¼ã«å²è¾¼ã¿
|
---|
117 | - 端åå²è¾¼ã¿
|
---|
118 |
|
---|
119 | ã»IRQå²è¾¼ã¿ã¨å
|
---|
120 | èµå¨è¾ºã¢ã¸ã¥ã¼ã«å²è¾¼ã¿ã«å¯¾ãã¦ï¼å²è¾¼ã¿ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§
|
---|
121 | ãã³ã¬ã¸ã¹ã¿ï¼GICD_ICFGRnï¼ãæå®ãããå¤ã«åæåããï¼
|
---|
122 | â gic_kernel_impl.cã«ããã¯ãå
|
---|
123 | ¥ãããã¨ãå¿
|
---|
124 | è¦
|
---|
125 | â ä¸æ¬ãã¦åæåããªãã¦ãæ£ããåãã¦ãã
|
---|
126 |
|
---|
127 | âã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹
|
---|
128 |
|
---|
129 | ã»RZ/A1ã¯ï¼FIFOå
|
---|
130 | èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ãæã¤
|
---|
131 | RZ/A1Hï¼8ãã¼ã
|
---|
132 | RZ/A1Lï¼5ãã¼ã
|
---|
133 |
|
---|
134 | ã»ãã¼ãæ¯ã®ã¬ã¸ã¹ã¿
|
---|
135 | SCSMR ã·ãªã¢ã«ã¢ã¼ãã¬ã¸ã¹ã¿ ãªãã»ããï¼0x00 16ããã
|
---|
136 | SCBRR ãããã¬ã¼ãã¬ã¸ã¹ã¿ ãªãã»ããï¼0x04 8ããã
|
---|
137 | SCSCR ã·ãªã¢ã«ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x08 16ããã
|
---|
138 | SCFTDR éä¿¡FIFOãã¼ã¿ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x0C 8ããã
|
---|
139 | SCFSR ã·ãªã¢ã«ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x10 16ããã
|
---|
140 | SCFRDR åä¿¡FIFOãã¼ã¿ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x14 8ããã
|
---|
141 | SCFCR FIFOã³ã³ããã¼ã«ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x18 16ããã
|
---|
142 | SCFDR FIFOãã¼ã¿ã«ã¦ã³ãã¬ã¸ã¹ã¿ ãªãã»ããï¼0x1C 16ããã
|
---|
143 | SCSPTR ã·ãªã¢ã«ãã¼ãã¬ã¸ã¹ã¿ ãªãã»ããï¼0x20 16ããã
|
---|
144 | SCLSR ã©ã¤ã³ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x24 16ããã
|
---|
145 | SCEMR ã·ãªã¢ã«æ¡å¼µã¢ã¼ãã¬ã¸ã¹ã¿ ãªãã»ããï¼0x28 16ããã
|
---|
146 |
|
---|
147 | âOSã¿ã¤ã
|
---|
148 |
|
---|
149 | ã»2ãã£ã³ãã«ã®OSã¿ã¤ããæã¤
|
---|
150 | - 32ãããã¿ã¤ã
|
---|
151 | ã»2ã¤ã®åä½ã¢ã¼ã
|
---|
152 | ã»P0Ïã§é§å
|
---|
153 | - P0Ïã¯33.33MHzï¼æ大ï¼
|
---|
154 | - ã¦ã¼ã¶ã¼ãºããã¥ã¢ã«ã«ã¯33.33MHzã¨è¡¨è¨ããã¦ãããï¼400MHzã®12å
|
---|
155 | å¨ãªã®ã§ï¼å®éã«ã¯ï¼33.333333â¦MHzã¨æããã
|
---|
156 |
|
---|
157 | ã»ã¤ã³ã¿ã¼ãã«ã¿ã¤ãã¢ã¼ã
|
---|
158 | - ä¸å®ééã§å²è¾¼ã¿ãçºçãããå ´åã«ä½¿ç¨
|
---|
159 | - æå®å¤ãã0ã¾ã§ãã¦ã³ã«ã¦ã³ãï¼å¨æã¯ï¼æå®å¤+1ï¼
|
---|
160 | - 0ããæå®å¤ã«æ»ãæã«å²è¾¼ã¿ãçºç
|
---|
161 |
|
---|
162 | - æå®å¤ãå¤æ´ããã¨ï¼æ¬¡ã«æ»ãæã«åæ
|
---|
163 | - ããã«æå®å¤ãåæ ããããã¨ãå¯è½
|
---|
164 |
|
---|
165 | - ã«ã¦ã³ãéå§æã«å²è¾¼ã¿ãçºçãããæ©è½ãããï¼ä½¿éãä¸æï¼
|
---|
166 | - 0ã«ãªã£ãå¾ã«ã«ã¦ã³ããæ¢ããã¢ã¼ãã¯ãªãï¼ã¯ã³ã·ã§ããã¯ã§ããªãï¼
|
---|
167 |
|
---|
168 | ã»ããªã¼ã©ã³ãã³ã°ã³ã³ãã¢ã¢ã¼ã
|
---|
169 | - 0x00000000ãã0xffffffffã¾ã§ã«ã¦ã³ãã¢ãã
|
---|
170 | - æå®å¤ã«ãªã£ããï¼å²è¾¼ã¿ãçºç
|
---|
171 |
|
---|
172 | - æå®å¤ã®è¨å®æã«ï¼æå®å¤ãéãã¦ããå ´åã®å¯¾çã課é¡
|
---|
173 | â èªã¿è¾¼ãã§ï¼æå®å¤ãéãã¦ãããï¼GICãæä½ãã¦å²è¾¼ã¿è¦æ±ãåºã
|
---|
174 |
|
---|
175 | ã»ãã£ãã«æ¯ã®ã¬ã¸ã¹ã¿
|
---|
176 | OSTMnCMP ã³ã³ãã¢ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x00 RW 32ããã
|
---|
177 | âãæå®å¤ããè¨å®
|
---|
178 | OSTMnCNT ã«ã¦ã³ãã¬ã¸ã¹ã¿ ãªãã»ããï¼0x04 R 32ããã
|
---|
179 | OSTMnTE ã«ã¦ã³ãã¤ãã¼ãã«ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ 0x10 R 8ããã
|
---|
180 | OSTMnTS ã«ã¦ã³ãéå§ããªã¬ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x14 W 8ããã
|
---|
181 | OSTMnTT ã«ã¦ã³ãåæ¢ããªã¬ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x18 W 8ããã
|
---|
182 | OSTMnCTL å¶å¾¡ã¬ã¸ã¹ã¿ ãªãã»ããï¼0x20 RW 8ããã
|
---|
183 | â åä½ã¢ã¼ãã¨ã«ã¦ã³ãéå§æã®å²è¾¼ã¿ã®æç¡ãè¨å®
|
---|
184 |
|
---|
185 | ã»33.33â¦MHzã®ã¯ããã¯ã§ãã¾ããããï¼
|
---|
186 | - ã¿ã¤ããå·¡åããå¨æãæ±ãã
|
---|
187 | 2^32(= 4,294,967,296)/33.33â¦
|
---|
188 | = 2^32(= 4,294,967,296)*3/100
|
---|
189 | = 128,849,018.88μsï¼ç´2åï¼
|
---|
190 | â ããã 128,849,019μs ã¨ä¸¸ããã®ã¯è¨±å®¹ç¯å²
|
---|
191 | ãã®èª¤å·®ã¯ï¼æ°´æ¶çºæ¯åã®ç²¾åº¦ãããå°ãã
|
---|
192 |
|
---|
193 | - ã«ã¦ã³ã¿å¤ * 3 / 100 ãμsåä½ã®æå»ã¨ããã¨
|
---|
194 |
|
---|
195 | ã«ã¦ã³ã¿å¤ μsåä½æå»ï¼ã«ã¦ã³ã¿å¤ * 3 / 100ï¼
|
---|
196 | 0ã33 [34] 0
|
---|
197 | 34ã66 [33] 1
|
---|
198 | 67ã99 [33] 2
|
---|
199 | 100ã133 [34] 3
|
---|
200 | ⦠â¦
|
---|
201 | 4294967200ã4294967233 [34] 128,849,016
|
---|
202 | 4294967234ã4294967266 [33] 128,849,017
|
---|
203 | 4294967267ã4294967295 [29] 128,849,018
|
---|
204 | â æå¾ã ãééã29ã«ãªã
|
---|
205 | â ãã¤ï¼long longã§ã®è¨ç®ãå¿
|
---|
206 | è¦
|
---|
207 |
|
---|
208 | - (x / 4 + x / 4000000000) * 3 / 25 ãμsåä½ã®æå»ã¨ããã¨
|
---|
209 | where x = ã«ã¦ã³ã¿å¤
|
---|
210 | ã«ã¦ã³ã¿å¤ μsåä½æå»ï¼ã«ã¦ã³ã¿å¤ * 3 / 100ï¼
|
---|
211 | 0ã35 [36] 0
|
---|
212 | 36ã67 [32] 1
|
---|
213 | 68ã99 [32] 2
|
---|
214 | 100ã135 [36] 3
|
---|
215 | 136ã167 [32] 4
|
---|
216 | 168ã199 [32] 5
|
---|
217 | ⦠â¦
|
---|
218 | 3999999900ã3999999935 [36] 119999997
|
---|
219 | 3999999936ã3999999967 [32] 119999998
|
---|
220 | 3999999968ã3999999999 [32] 119999999
|
---|
221 | 4000000000ã4000000031 [32] 120000000 ⦠ããã32ã«ãªã
|
---|
222 | 4000000032ã4000000063 [32] 120000001
|
---|
223 | 4000000064ã4000000095 [32] 120000002
|
---|
224 | ⦠â¦
|
---|
225 | 4294967196ã4294967231 [36] 128849016
|
---|
226 | 4294967232ã4294967263 [32] 128849017
|
---|
227 | 4294967264ã4294967295 [32] 128849018 ⦠æå¾ã32ãç¶æããã
|
---|
228 | â» 32ã¨36ã®éã§ã°ãã¤ãã®ã¯ï¼4ã§å²ã£ã¦ããã®ã§ãããããªã
|
---|
229 |
|
---|
230 | - y = (x - z * 999999999) * 3 / 100 + z * 30000000 ãμsåä½ã®æå»ã¨ããã¨
|
---|
231 | where x = ã«ã¦ã³ã¿å¤, z = x / 1000000000
|
---|
232 | ãã¹ã¦ã®ééã33ã34ã®ããããã«è½ã¡çã
|
---|
233 |
|
---|
234 | ----------------------------------------------------------------------
|
---|
235 | #!/usr/bin/env ruby
|
---|
236 | # -*- coding: utf-8 -*-
|
---|
237 |
|
---|
238 | def calc(x)
|
---|
239 | # y = (x / 4 + x / 4000000000) * 3 / 25
|
---|
240 | z = x / 1000000000
|
---|
241 | y = (x - z * 999999999) * 3 / 100 + z * 30000000
|
---|
242 | return(y)
|
---|
243 | end
|
---|
244 |
|
---|
245 | xx = yy = -1
|
---|
246 | 0.upto(200).each do |x|
|
---|
247 | y = calc(x)
|
---|
248 | if (y != yy)
|
---|
249 | if yy >= 0
|
---|
250 | puts(sprintf("%d - %d [%d] ... %d", xx, x-1, x - xx, yy))
|
---|
251 | end
|
---|
252 | yy = y
|
---|
253 | xx = x
|
---|
254 | end
|
---|
255 | end
|
---|
256 |
|
---|
257 | xx = yy = -1
|
---|
258 | 3999999800.upto(4000000200).each do |x|
|
---|
259 | y = calc(x)
|
---|
260 | if (y != yy)
|
---|
261 | if yy >= 0
|
---|
262 | puts(sprintf("%d - %d [%d] ... %d", xx, x-1, x - xx, yy))
|
---|
263 | end
|
---|
264 | yy = y
|
---|
265 | xx = x
|
---|
266 | end
|
---|
267 | end
|
---|
268 |
|
---|
269 | xl = xx = yy = -1
|
---|
270 | 4294967100.upto(4294967295).each do |x|
|
---|
271 | y = calc(x)
|
---|
272 | if (y != yy)
|
---|
273 | if yy >= 0
|
---|
274 | puts(sprintf("%d - %d [%d] ... %d", xx, x-1, x - xx, yy))
|
---|
275 | end
|
---|
276 | yy = y
|
---|
277 | xx = x
|
---|
278 | end
|
---|
279 | xl = x
|
---|
280 | end
|
---|
281 | puts(sprintf("%d - %d [%d] ... %d", xx, xl, xl + 1 - xx, yy))
|
---|
282 | ----------------------------------------------------------------------
|
---|
283 |
|
---|
284 | 以ä¸
|
---|