source: anotherchoice/tags/jsp-1.4.4-full-UTF8/doc/microblaze.txt@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 16.4 KB
Line 
1
2 = TOPPERS/JSPカーネル ユーザズマニュアル =
3 (Microblaze ターゲット依存部)
4
5 (Release 1.4.2対応,最終更新: 27-Jul-2005)
6 (Embedded Development Kit(EDK)7.1対応)
7
8------------------------------------------------------------------------
9 TOPPERS/JSP Kernel
10 Toyohashi Open Platform for Embedded Real-Time Systems/
11 Just Standard Profile Kernel
12
13 Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
14 Toyohashi Univ. of Technology, JAPAN
15
16 上記著作権者
17は,以下の (1)〜(4) の条件か,Free Software Foundation
18 によってå…
19¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
20 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
21 を改変したものを含む.以下同じ)を使用・複製・改変・再é…
22å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
23 利用と呼ぶ)することを無償で許諾する.
24 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
25 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
26 スコード中に含まれていること.
27 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
28 用できる形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
31 者
32マニュアルなど)に,上記の著作権表示,この利用条件および下記
33 の無保証規定を掲載すること.
34 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
35 用できない形で再é…
36å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
37 と.
38 (a) 再é…
39å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
40マニュアルなど)に,上記の著
41 作権表示,この利用条件および下記の無保証規定を掲載すること.
42 (b) 再é…
43å¸ƒã®å½¢æ…
44‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
45 報告すること.
46 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
47 害からも,上記著作権者
48およびTOPPERSプロジェクトをå…
49è²¬ã™ã‚‹ã“と.
50
51 本ソフトウェアは,無保証で提供されているものである.上記著作権者
52お
53 よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
54 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
55 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
56
57 @(#) $Id: microblaze.txt,v 1.14 2005/07/27 11:28:44 honda Exp $
58------------------------------------------------------------------------
59
60
611.Microblaze ターゲット依存部の概要
62
631.1 ターゲットシステム
64
65Microblaze プロセッサのターゲットシステムとしては,Microblaze がサポート
66してる FPGA を搭載したシステムをサポートしている.なお,JSPカーネルを動
67作させるには,64Kbyte程度のメモリが必
68要である.システム依存部として以下
69のボードをサポートしている.
70
71・YDKテクノロジーズ製の MIREF(FPGA:XCV400E-QFP240)
72・YDKテクノロジーズ製の MIREF-MULTI(FPGA:XC2V3000-FF1152)
73・ Xilinx製の Xilinx MultiMedia Board(FPGA:XC2V2000-FF896)
74
75
761.2 開発環境
77
78開発環境には,EDKに含まれているGCC などの GNU開発環境を用い,オブジェク
79トファイルフォーマットは ELF を標準とする.
80
81PCでは,EDKをイントールすると,GNUの開発環境を動作させるため xygwin がイ
82ンストールされる.JSPカーネルの構築には,perlやg++(ホスト環境の)がひつよ
83うなため,Cygwin をインストールする必
84要がある.同一のマシンにCygwin をイ
85ンストールした後,xygwin をインストールすると Cygwin 上のアプリケーショ
86ンが正しく動作しないため,xygwin のインストール後に,Cygwin をインストー
87ルすることを推奨する.
88
89EDKに含まれるGNUの開発環境は,xygwinで動作すること前提に作成されているた
90め,Cygwin上の make から呼び出した場合エラーが表示されないといった制約が
91ある.そのため,Xilinx の Web サイト(
92http://www.xilinx.com/guest_resources/gnu/index.htm)からGNUのソースをダ
93ウンロードして Cygwin 用に構築する.
94
95
961.2 システム構成
97
98通常のターゲットの場合は,./config 以下で
99
100 (プロセッサ)/(ターゲットボード1)
101 /(ターゲットボード2)
102
103という構成でディレクトリが作成されており,(プロセッサ)はプロセッサコ
104アやプロセッサパッケージいわゆるICにパッケージされたものを示し,プロセッ
105サ依存部と呼ぶ.(ターゲットボード)はそのICを搭載したボード依存の機能
106についてのコードを置いている場所でターゲット依存部と呼ぶ.一方
107Microblaze は,システム構成を自由に変更できるため,このように明確な切
108り分けはできない.そこで,JSPカーネルを動作させるための必
109要最小限の構
110成をプロセッサ依存部として(プロセッサ)に置く.プロセッサ依存部として
111の,JSPカーネルを動作させるための最小構成を以下に示す.
112
113 ・INTC(割込みコントローラ)
114 レジスタ IVR,SIE,CIEレジスタが必
115要
116 ・TIM,UARTLITE
117 INTCに接続する(割込みを有効にする)
118
119これ以外の機能のコードはターゲット依存部として,(ターゲットボード)以
120下のディレクトリにé…
121ç½®ã™ã‚‹ï¼Ž
122
123é…
124å¸ƒãƒ‘ッケージに含まれているターゲット依存部を以下に示す.それぞれの依存
125部は上記のデバイスのアドレスやコンパイルオプションが異なるだけでコードは
126ほぼ等しい.
127
128 ・./miref
129 (株)YDKデクノロジーズ製の MIREF ボード用
130
131 ・./miref_multi
132 (株)YDKデクノロジーズ製の MIREF-MULTI ボード用
133
134 ・./multimedia
135 Xilinx製の Xilinx MultiMedia Board 用
136
137
138
1391.4 システムコンフィギュレーション
140
141 新たなシステムでJSPカーネルを動作させる場合は,適当なターゲット依存部
142 のファイルをベースにシステム構成にあわせて書き換えればよい.
143 システム毎に編集する必
144要がある項
145目を以下に示す.
146
147 ・./sys_defs.h
148 STACKTOP : スタック初期アドレス
149 TIMER_CLOCK : タイマークロック
150 TIC_NUME : タイムティック周期の分子
151 TIC_DENO : タイムティック周期の分母
152 INTC_BASE : INTCのベースアドレス
153 TIMER_BASE : TIMERのベースアドレス
154 UART_BASE : UARTベースアドレス
155 TIMINTLVL : TIMERの割込み番号
156 UARTINTLVL : UARTの割込み番号
157
158 ・./Makefile.config
159 COPTS : コンパイルオプション
160 LIBS : ライブラリ指定
161 LDFLAGS : リンカオプション
162 TEXT_START_ADDRESS : TEXTセクションのスタートアドレス
163 DATA_START_ADDRESS : DATAセクションのスタートアドレス
164
165
166
167 ディフォルトとのリンカスクリプトとしては,./microblaze/mbelf.l を
168 用意している.このリンカスクリプトでは,アドレスをtext,dataセクショ
169 ンの2つを指定することが可能である.さらに複雑なマッピングを行いた
170 い場合は,リンカスクリプトを新たに作り 上記の LDSCRIPT に指定すれ
171 ばよい.
172
173
1741.3 サポートする機能の概要
175
176Microblaze 依存の機能として,性能評価用システム時刻参ç…
177§æ©Ÿèƒ½ï¼ˆvxget_tim)
178をサポートしている.割込みマスクの変更・参ç…
179§(chg_ixx,get_ixx)と,割込
180みの禁止と許可(dis_int,ena_int)はサポートしていない.
181
182
1831.4 制限事項
184
185 ・CPU例外機能とCPU例外ハンドラ
186 Microblaze にはCPU例外のベクタはあるが,発生要因がない.そのため,
187 CPU例外機能とCPU例外ハンドラはサポートしない.
188
189
190
1912.Microblaze プロセッサ依存部の機能
192
193この節では,カーネルおよびシステムサービスの機能の中で,Microblaze 依
194存の部分について解説する.
195
1962.1 データ型
197
198signed int型および unsigned int型のサイズは 32ビットである.
199
2002.2 割込み管理機能と割込みハンドラ
201
202DEF_INH で指定する割込みハンドラ番号(inhno)は,MHSファイルでデバイス
203に指定した割込み優å…
204ˆåº¦ã‚’表し,そのデータ型(INHNO)は unsigned int型に
205定義されている.DEF_INH で,割込み優å…
206ˆåº¦ã¨ã—て有効でない値や,実際の割
207込み優å…
208ˆåº¦ã¨ã¯ç•°ãªã‚‹ç•ªå·ã‚’指定した場合の動作は保証されない.
209
210
2112.4 スタートアップモジュール
212
213Microblaze 依存のスタートアップモジュール(start.S)では,次の初期化処
214理を行う.
215
216(A) MSRの初期化
217
218キャッシュの設定を反映してMSRを初期化する.MDMを使用している場合などは,
219BIPビットが'1'となっている場合があるため,rtbd命令によりクリアする.
220
221(B) スモールデータアンカーの設定とスタックポインタの初期化
222
223最初に,Read-only small data area anchor(R2)とRead-write small data
224area anchor(R13)を初期化する
225
226次に,割込みスタックポインタ(R1)を STACKTOP - 4 に設定する.-4 する
227のは,スタートアップルーチンのワーク用である.
228
229
230(C) 例外/割込みベクタへのハンドラの登録
231
2320x0C-0x10 の例外ベクタに例外ハンドラ(exception_entry)を,0x10-0x14の
233割込みベクタに割込みハンドラ(interrupt_entry)を登録する.
234
235
236(D) hardware_init_hook の呼出し
237
238hardware_init_hook が 0 でない場合には,hardware_init_hook を呼び出す.
239hardware_init_hook は,カーネルが起動される前に行う必
240要があるターゲッ
241ト依存の初期化を行うために用意している.hardware_init_hook がどこでも
242定義されていない場合,リンカでこのシンボルを 0 に定義する(リンカスク
243リプト内
244に記述あり).
245
246(E) bssセクションの初期化
247
248bssセクションをゼロクリアする.なお,dataセクションについては,RAMの使
249用量を減らす目的で,ROM化に対応した初期化は行っていない.
250
251(F) software_init_hook の呼出し
252
253software_init_hook が 0 でない場合には,software_init_hook を呼び出す.
254software_init_hook は,カーネルが起動される前に行う必
255要があるソフトウェ
256ア環境(å…
257·ä½“的には,ライブラリ)依存の初期化を行うために用意している.
258software_init_hook がどこでも定義されていない場合,リンカでこのシンボ
259ルを 0 に定義する(リンカスクリプト内
260に記述あり).
261
262(G) カーネルの起動
263
264kernel_start へ分岐し,カーネルを起動する.kernel_start からリターンし
265てくることは想定していない.
266
267
2682.5 性能評価用システム時刻参ç…
269§æ©Ÿèƒ½
270
271Microblaze 依存部では,性能評価用システム時刻参ç…
272§æ©Ÿèƒ½ï¼ˆvxget_tim)をサ
273ポートしている.性能評価用システム時刻の精度はタイマに供給するクロック
274によって決まる.なお,SYSUTIM型は UD型(64ビットの符号無し整数型)に定
275義している.
276
277
2782.6 シリアルインタフェースドライバ
279
280Microblze 依存部のシリアルインタフェースドライバは,UART をサポートし
281ている.カーネルのログ出力として使用する UART は INTCに接続して割込み
282を有効にして,そのアドレスを./sys_config.h で UART_BASE として定義すれ
283ばよい.
284
285
2862.7 キャッシュ
287
288キャッシュの有効/無効はシステムの起動から終了まで一律固定とし,ユーザーが
289変更してもその変更はそのタスクのみで有効とする.キャッシュを有効とする
290には,システム依存部の sys_defs.h で,D_CACHE_ENABLE I_CACHE_ENABLE
291を define すればよい.
292
2935.その他
294
2955.1 ディレクトリ・ファイル構成
296
297Microblaze ターゲット依存部の各ファイルの概要は次の通り.
298
299 config/microblze/
300 Makefile.config Makefile の Microblaze依存定義
301 cpu_defs.h プロセッサ依存部のアプリケーション用定義
302 cpu_config.h プロセッサ依存部の構成定義
303 cpu_config.c プロセッサ依存部の関数
304 cpu_support.S プロセッサ依存部のサブルーチン
305 cpu_context.h コンテキスト操作
306 makeoffset.c offset.h 生成サポートプログラム
307 cpu_insn.h 低レベルのプロセッサ操作ルーチン
308 start.S スタートアップモジュール
309 mbelf.ld リンカスクリプト
310 cpu_rename.def カーネルの内
311部識別名のリネーム定義
312 cpu_rename.h カーネルの内
313部識別名のリネーム
314 cpu_unrename.h カーネルの内
315部識別名のリネーム解除
316 microblaze.h Microblaze の定義
317 microblaze.c Microblaze 用コード
318 microblaze_asm.inc Microblaze のアセンブラマクロ
319 hw_serial.h SIOドライバ
320 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
321 hw_timer.h タイマ操作ルーチン
322 tool_defs.h 開発環境依存部のアプリケーション用定義(GNU開発環境用)
323 tool_config.h 開発環境依存部の構成定義(GNU開発環境用)
324
325 config/microblaze/miref
326 Makefile.config Makefile の MIREF 依存定義
327 sys_defs.h システム依存部のアプリケーション用定義
328 sys_config.h システム依存部の構成定義
329 sys_config.c システム依存部の関数
330 sys_support.S システム依存部のサブルーチン
331 sys_rename.def カーネルの内
332部識別名のリネーム定義
333 sys_rename.h カーネルの内
334部識別名のリネーム
335 sys_unrename.h カーネルの内
336部識別名のリネーム解除
337
338 config/microblaze/mire_multi
339 Makefile.config Makefile の MIRE_MULTI 依存定義
340 sys_defs.h システム依存部のアプリケーション用定義
341 sys_config.h システム依存部の構成定義
342 sys_config.c システム依存部の関数
343 sys_support.S システム依存部のサブルーチン
344 sys_rename.def カーネルの内
345部識別名のリネーム定義
346 sys_rename.h カーネルの内
347部識別名のリネーム
348 sys_unrename.h カーネルの内
349部識別名のリネーム解除
350
351 config/microblaze/multimedia
352 Makefile.config Makefile の MIRE_MULTI 依存定義
353 sys_defs.h システム依存部のアプリケーション用定義
354 sys_config.h システム依存部の構成定義
355 sys_config.c システム依存部の関数
356 sys_support.S システム依存部のサブルーチン
357 sys_rename.def カーネルの内
358部識別名のリネーム定義
359 sys_rename.h カーネルの内
360部識別名のリネーム
361 sys_unrename.h カーネルの内
362部識別名のリネーム解除
363
364
365
366
3675.2 ターゲットへのダウンロードと実行
368
369ターゲットへのダウンロードと実行手順については,GNU開発環境構築マニュ
370アルに説明されている.JSPカーネルはターゲットに xmdstub を組み込んだ状
371æ…
372‹ã§ GDB よりダウンロードし実行することができる.
373
374
375
3765.3 サポート
377
378バグ等を発見した場合は toppers-users の ML に報告もしくは,Microblaze 依
379存部の開発者
380の以下のメールアドレスに連絡して頂きたい
381
382 honda@ertl.jp
383
384
385また,今後以下のページでもサポートを行う予定である.
386
387 http://www.ertl.jp/~honda/microblaze
388
389
390以上
391
392
Note: See TracBrowser for help on using the repository browser.