source: asp3_wo_tecs/trunk/arch/arm_gcc/doc/mpcore_memo.txt@ 306

Last change on this file since 306 was 306, checked in by ertl-honda, 7 years ago

3.1.0を反映

File size: 11.0 KB
Line 
1
2 TOPPERSプロジェクト 設計メモ
3 MPCoreおよびそれを用いたチップ/ボードに関するメモ
4
5 作成者
6: 高田広章(名古屋大学)
7 最終更新: 2016年1月16日
8
9○メモの位置づけ
10
11このメモは,MPCoreと,それを用いた以下のチップ/ボードに関して,
12TOPPERSカーネルをポーティングするにあたって必
13要となる事項
14をまとめたもの
15である.
16
17・ARM11 MPCore
18・Core Tile for ARM11 MPCore(CT11MPCore)
19・RealView Platform Baseboard for ARM11 MPCore
20
21○目次
22
23・参考文献
24・MPCoreとは?
25・SCU(Snoop Control Unit)
26・ARM CT11MPcore with RealView Emulation Baseboard
27 - 用語の整理
28 - ARM11 MPCoreテストチップの割込み機能
29 - CoreTile for ARM11 MPcoreの割込み機能
30 - デバイスレジスタのアドレス
31・ARM11 MPCore内
32蔵タイマ
33 - タイマ
34 - ウォッチドッグ
35
36○参考文献
37
38[1] ARM11 MPCore Processor Technical Reference Manual, 2008
39Revision: r2p0
40DDI0360F_arm11_mpcore_r2p0_trm.pdf
41
42[2] Cortex-A9 MPCore Technical Reference Manual, 2012
43Revision: r4p1
44DDI0407I_cortex_a9_mpcore_r4p1_trm
45
46[3] Core Tile for ARM11 MPCore User Guide
47HBI-0146
48DUI0318F_core_tile_for_arm11_mpcore_ug.pdf
49
50[4] Using a CT11MPCore with the RealView Emulation Baseboard, 2008
51ARM DAI 0152E
52DAI0152E_ct11mpcore_on_emulation_baseboard.pdf
53
54[5] RealView Platform Baseboard for ARM11 MPCore User Guide, 2011
55HBI-0159, HBI-0175, HBI-0176
56DUI0351E_realview_platform_baseboard_for_arm11_mpcore_ug.pdf
57
58○MPCoreとは?
59
60MPCoreとは,ARMコアを1〜4個と,SCU(Snoop Control Unit)など,マルチコ
61アシステムに必
62要な周辺回路を含むプロセッサアーキテクチャの名称と思われ
63る.
64
65参考文献[1]によると,ARM11 MPCoreとは,1〜4個のMP11 CPU(コア)を載せ,
66SCU,DIC(Distributed Interrupt Controller),コア毎のプライベートタイ
67マとプライベートウォッチドッグ,AXIインタフェースなどを含むプロセッサの
68名称である.MP11 CPUとは,ARM11を拡張したコアのことと思われる.
69
70参考文献[2]によると,Cortex-A9 MPCoreとは,1〜4個のCortex-A9プロセッサ
71(コア)を載せ,SCU,GIC(Generic Interrupt Controller),プライベート
72ペリフェラル(グローバルタイマ,コア毎のプライベートタイマとウォッチドッ
73グ),AXIインタフェース(オプション)などを含むプロセッサの名称である.
74
75以上より,MPCoreチップ依存部には,SCU,GIC(またはDIC),プライベートペ
76リフェラルを扱うコードを含めるのが妥当と考えられる.ただし,GIC(および
77DIC)については,別のARMプロセッサにもå…
78±é€šã§ä½¿ã‚ã‚Œã‚‹ãŸã‚ï¼ŒARMコア依存部
79に含める.
80
81○SCU(Snoop Control Unit)
82
83SCUは,各コアが持つL1キャッシュのコヒーレンスを保つための回路である.
84ARM11 MPCoreでは,SCUがパフォーマンスモニタの機能を持っているが,
85Cortex-Aシリーズでは,パフォーマンスモニタは独立した機能として用意され
86ており,SCUはパフォーマンスモニタの機能を持たない.
87
88以下では,SCUの制御レジスタについてまとめる.
89
90SCU制御レジスタ(MPCORE_SCU_CTRL)… 32ビット
91!ARM11 MPCoreとCortex-A9 MPCoreで,ビットé…
92ç½®ãŒç•°ãªã‚‹ï¼Ž
93
94SCUコンフィギュレーションレジスタ(MPCORE_SCU_CONFIG)… 32ビット
95
96SCU CPUパワーステータスレジスタ(MPCORE_SCU_CPUSTAT)… 32ビット
97!ARM11 MPCoreとCortex-A9 MPCoreで,ビットé…
98ç½®ãŒç•°ãªã‚‹ï¼Ž
99
100SCUå…
101¨ç„¡åŠ¹åŒ–レジスタ(MPCORE_SCU_INVALL)… 32ビット
102 - このレジスタに書き込むことで,タグメモリを無効化できる.
103
104○ARM CT11MPcore with RealView Emulation Baseboard
105
106●用語の整理
107
108・Emulation Baseboard(EB)
109 - コアを含まないベースボード
110 - メモリや各種のペリフェラルを搭載する
111
112・Platform Baseboard(PB)
113 - コアを搭載するベースボード
114 - メモリや各種のペリフェラルも搭載する
115
116・CoreTile(CT)
117 - Emulation Baseboard(EB)に載せるためのコアを搭載した小型ボード
118
119・Core Tile for ARM11 MPCore(CT11MPCore)
120 - ARM11 MPCoreのテストチップを搭載したCoreTile
121 + 4プロセッサ構成のARM11 MPCore
122 + L220 レベル2 キャッシュコントローラ
123
124・HDRX,HDRY,HDRZ(何の略か不明)
125 - BaseboardとCoreTileを接続する3つのコネクタの名称
126
127・DCC(Debug Communications Controller)
128
129●ARM11 MPCoreテストチップの割込み機能([3] 4.3.2節)
130
131・搭載されている割込みコントローラ
132 - DIC(Distributed Interrupt Controller)
133 - GICの前身となる仕様(GICv0に相当)
134
135・チップ外からの割込み要求ライン
136 - nIRQ[3:0] … DICの割込みID31に
137 - nFIQ[3:0] … 各プロセッサのFIQに直結
138 - INT[15:0] … DICの割込みID32〜47に
139
140・CPSR中のFビットを無効にして,FIQをNMI扱いできる
141 - テストチップ割込み制御レジスタで設定
142 PERIPHBASE+0x3004U
143
144・DICは32本の割込み要求ラインを持つ
145 - ハードウェア割込み(GICのSPIに相当)の本数のことと思われる
146
147・テストチップのINT[31:16]は,チップ内
148に閉じて使用
149 - INT[31:29]:L220からの割込み(3本)
150 - INT[17:28]:各プロセッサおよびSCUからの割込み(12本)PMUIRQ[0:11]
151 - INT[16]:未使用(1本)
152
153●CoreTile for ARM11 MPcoreの割込み機能([3] 3.4.2節)
154
155・3つの割込みモードをサポート
156 - Legacy mode
157 - Normal mode with DCC interrupt routing
158 - Normal mode without DCC interrupt routing … これで使っている
159 - EBシステムFPGAのSYS_PLD_CTL1レジスタのINTMODE[2:0]で設定する
160
161・Normal mode without DCC
162 - Emulation Baseboardからの16本に割込み要求ラインを,そのまま
163 INT[15:0]に接続.nIRQ[3:0]とnFIQ[3:0]は使わない
164 - 割込み番号のアサイン
165 INT[0]:ACCI
166 INT[1]:EB_TIMER0/1
167 INT[2]:EB_TIMER2/3
168 INT[3]:USB
169 INT[4]:EB_UART0
170 INT[5]:EB_UART1
171 …
172 INT[10]:EB_GIC1_nIRQ
173 INT[11]:EB_GIC2_nIRQ
174 INT[12]:EB_GIC1_nFIQ
175 INT[13]:EB_GIC2_nFIQ
176 …
177
178●デバイスレジスタのアドレス
179
180・ペリフェラルベースアドレス(PERIPHBASE)([3] 3.10.1節)
181 - 以下のレジスタのアドレスを決める
182 + ARM11 MPCoreのレジスタ
183 SCUの制御レジスタ
184 + L220キャッシュコントローラのレジスタ
185 + ARM11 MPCoreテストチップのレジスタ
186 Test chip PLL control register
187 Test chip interrupt control register
188 Test chip cluster ID register
189 Test chip power status register
190 Test chip way map register
191 Test chip clock divider register
192 - CT11MPCoreでは,CoreTile上のジャンパスイッチで設定可能
193 + デフォルトは,0x1F000000
194 - QEMUでは,0x10100000に設定されている(qemu-2.1.0/hw/arm/realview.c)
195
196・Emulation Baseboard上のリソースのアドレス([4] 5.2節,[5] 4章)
197 - ベースアドレスは,0x10000000
198 - レジスタをアンロックする方法
199 + base+0x20に,0xA05Fを書き込む
200 - メモリマップ
201 0x10000000〜0x10000fff システムレジスタ
202 0x10001000〜0x10001fff システムコントローラ(SP810)
203 …中略…
204 0x10009000〜0x10009fff UART0 … ARM UART PL011 r1p3
205 0x1000a000〜0x1000afff UART1 … ARM UART PL011 r1p3
206 0x1000b000〜0x1000bfff UART2 … ARM UART PL011 r1p3
207 0x1000c000〜0x1000cfff UART3 … ARM UART PL011 r1p3
208 …中略…
209 0x10010000〜0x10010fff Watchdog … ARM WDOG SP805 r2p0
210 0x10011000〜0x10011fff Timer 0&1 … ARM Dual-Timer SP804 r1p2
211 0x10012000〜0x10012fff Timer 2&3 … ARM Dual-Timer SP804 r1p2
212 …中略…
213
214○ARM11 MPCore内
215蔵タイマ([1] 9.2節)
216
217ARM11 MPCoreは,コア毎に,プライベートタイマとプライベートウォッチドッ
218グを持つ.ウォッチドッグは,タイマとして使用することもできる.
219
220●タイマ
221
222タイマロードレジスタ(MPCORE_TMR_LR)… 32ビット
223 - カウントレジスタが0になった時にリロードする値を保持するレジスタ.
224 - このレジスタに書き込むと,カウントレジスタにも書き込まれる.
225
226タイマカウントレジスタ(MPCORE_TMR_CNT)… 32ビット
227 - ダウンカウンタ.
228 - 0になったら,割込みを要求する.
229 - オートリロードモードでは,0になったら,ロードレジスタの値に戻る.
230 - ロードレジスタかカウンタレジスタに書き込むと,新しい値からカウント.
231
232タイマ制御レジスタ(MPCORE_TMR_CTRL)… 32ビット
233 [31:16] 予約(SBZ/RAZ)
234 [15:8] プリスケーラ
235 [7:3] 予約(SBZ/RAZ)
236 [2] 割込みイネーブル
237 [1] オートリロード
238 [0] タイマイネーブル
239
240タイマ割込み状æ…
241‹ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆMPCORE_TMR_ISR)… 32ビット
242 [31:1] 予約
243 [0] イベントフラグ
244 - カウンタレジスタが0になった時にセットされる.
245 - 1を書き込むとクリアされる.
246
247●ウォッチドッグ
248
249ウォッチドッグロードレジスタ(MPCORE_WDG_LR)… 32ビット
250 - カウントレジスタが0になった時にリロードする値を保持するレジスタ.
251 - このレジスタに書き込むと,カウントレジスタにも書き込まれる.
252
253ウォッチドッグカウントレジスタ(MPCORE_WDG_CNT)… 32ビット
254 - ダウンカウンタ.
255 + タイマモード
256 - 0になったら,割込みを要求する.
257 - オートリロードモードでは,0になったら,ロードレジスタの値に戻る.
258 - ロードレジスタかカウンタレジスタに書き込むと,新しい値からカウント.
259 + ウォッチドッグモード
260 - 0になったら,リセットを要求する.
261 - このレジスタへは書き込めない.
262
263ウォッチドッグ制御レジスタ(MPCORE_WDG_CTRL)… 32ビット
264 [31:16] 予約(SBZ/RAZ)
265 [15:8] プリスケーラ
266 [7:4] 予約(SBZ/RAZ)
267 [3] ウォッチドッグモード(ここに0を書いても変更できない)
268 [2] 割込みイネーブル
269 [1] オートリロード
270 [0] ウォッチドッグイネーブル
271
272ウォッチドッグ割込み状æ…
273‹ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆMPCORE_WDG_ISR)… 32ビット
274 [31:1] 予約
275 [0] イベントフラグ
276 - タイマモードで,カウンタレジスタが0になった時にセット.
277 - 1を書き込むとクリア.
278
279ウォッチドッグリセット状æ…
280‹ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆMPCORE_WDG_RST)… 32ビット
281 [31:1] 予約
282 [0] リセットフラグ
283 - ウォッチドッグモードで,カウンタレジスタが0になった時に
284 セット.
285 - 1を書き込むとクリア.
286
287ウォッチドッグディスエーブルレジスタ(MPCORE_WDG_DIS)… 32ビット
288 0x12345678と0x87654321をこの順で書くと,ウォッチドッグがディスエー
289 ブルされる(制御レジスタ中のウォッチドッグモードビットが0になる).
290
291以上
Note: See TracBrowser for help on using the repository browser.