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

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

initial

File size: 12.9 KB
Line 
1
2 = TOPPERS/JSPカーネル ユーザズマニュアル =
3 (ARMv4 ターゲット依存部)
4
5 (Release 1.4.3対応,最終更新: 10-May-2007)
6
7------------------------------------------------------------------------
8 TOPPERS/JSP Kernel
9 Toyohashi Open Platform for Embedded Real-Time Systems/
10 Just Standard Profile Kernel
11
12 Copyright (C) 2000-2007 by Embedded and Real-Time Systems Laboratory
13 Toyohashi Univ. of Technology, JAPAN
14
15 上記著作権者
16は,以下の (1)〜(4) の条件か,Free Software Foundation
17 によってå…
18¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
19 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
20 を改変したものを含む.以下同じ)を使用・複製・改変・再é…
21å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
22 利用と呼ぶ)することを無償で許諾する.
23 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
24 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25 スコード中に含まれていること.
26 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
27 用できる形で再é…
28å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
29å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
30 者
31マニュアルなど)に,上記の著作権表示,この利用条件および下記
32 の無保証規定を掲載すること.
33 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
34 用できない形で再é…
35å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
36 と.
37 (a) 再é…
38å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
39マニュアルなど)に,上記の著
40 作権表示,この利用条件および下記の無保証規定を掲載すること.
41 (b) 再é…
42å¸ƒã®å½¢æ…
43‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
44 報告すること.
45 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
46 害からも,上記著作権者
47およびTOPPERSプロジェクトをå…
48è²¬ã™ã‚‹ã“と.
49
50 本ソフトウェアは,無保証で提供されているものである.上記著作権者
51お
52 よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
53 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
54 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
55
56 @(#) $Id: armv4.txt,v 1.11 2007/05/11 06:07:54 honda Exp $
57------------------------------------------------------------------------
58
59
601.ARMv4 ターゲット依存部の概要
61
62
631.1 ターゲットシステムと開発環境
64
65ARMV4 プロセッサのターゲットシステムとしては,ARMv4アーキテクチャのCPU
66コアを搭載した以下のボードをサポートしている.なお,Thumb命令はサポー
67トしていない.
68
69 ・ARM製の Integrator/CM922T-ETM(ARM922T) + Integrator/AP
70 ・YDK製の AZ9360MB(ARM926EJ-S)
71
72開発環境には,GCC などの GNU開発環境を用い,オブジェクトファイルフォー
73マットは ELF を標準とする.
74
75Integratorでは,実行間環境としてJTAG-ICEを用いることを想定している.
76JTAG-ICEとしては,ARM社製の Multi-ICE と,ソフィアシステムズ製の
77UniSTAC II/J ETM for ARM9 で動作確認している.
78
79
801.2 サポートする機能の概要
81
82ARMv4 依存の機能として、性能評価用システム時刻参ç…
83§æ©Ÿèƒ½(vxget_tim)をサポ
84ートしている。割込みの禁止と許可(dis_int、ena_int)はサポートしていない。
85
86
871.3 他のターゲットへのポーティング
88
89他のターゲットにポーティングするためには,システム依存部に以下のコード
90が必
91要となる.
92
93 ・割込みの出å…
94¥ã‚Šå£å‡¦ç†ï¼ˆsys_support.S)
95 ・タイマードライバ
96 ・シリアルドライバ
97
98
991.4 Integrator の初期化
100
101
1021.5 シリアルポート
103
104Integrator ではIntegrator/AP 上の UART をカーネルログ出力用に使用する.
105ディフォルトでは,速度115200bps,データ:8bit,Parity:none,Stop:1bitであ
106る。
107
108
1091.6 Thumbコードについて
110
111Thumbコードの利用については,現時点ではサポートしてない.
112
113
1142.ARMv4 プロセッサ依存部の機能
115
116この節では、カーネルおよびシステムサービスの機能の中で、ARMv4依存の部分
117について解説する。
118
119
1202.1 データ型
121
122int型および unsigned int型のサイズは 32ビットである。
123
1242.2 割込み管理機能と割込みハンドラ
125
126カーネル管理外の割込みとしては FIQがある。よって、CPUロック状æ…
127‹ã‚„初
128期化ルーチン内
129では、FIQ 以外の割込みはすべて禁止されている。å…
130·ä½“的には、
131CPSR(カレントプログラム状æ…
132‹ãƒ¬ã‚¸ã‚¹ã‚¿)のIRQ禁止ビット(ビット7)が 1 に設
133定される。
134
135
136DEF_INH で指定する割込みハンドラ番号(inhno)は、KS32C50100 で周辺モジュー
137ル毎に定義されている割り込み番号である.LH79532 では割込みコントローラ
138の各チャネル番号である。データ型(INHNO)は unsigned int型に定義されてい
139る。
140
141
1422.3 CPU例外管理機能とCPU例外ハンドラ
143
144DEF_EXC で指定する割込みハンドラ番号(excno)は、ARMv4 で定義されている,
145例外要因である.そのデータ型(EXCNO)は unsigned int 型に定義されている。
146DEF_EXC で、例外コード番号として有効でない値や、CPU例外に対応しない番号
147を指定した場合の動作は保証されない。
148
149CPU例外ハンドラに渡されるp_excinfは,CPU例外発生時のコンテキストを保存
150したスタックへのポインタが渡される.スタックの構造を以下に示す.
151
152
153 ----------------------
154 | CPSR | <-- p_excinf
155 ----------------------
156 | R0 |
157 ----------------------
158 | R1 |
159 ----------------------
160 | R2 |
161 ----------------------
162 | R3 |
163 ----------------------
164 | ip |
165 ----------------------
166 | lr |
167 ----------------------
168 | PC |
169 ----------------------
170
171
1722.4 スタートアップモジュール
173
174ARMv4 依存のスタートアップモジュール(start.S)では、次の初期化処理を行う。
175
176(A) プロセッサモードの初期化とスタックポインタの初期化
177
178最初に、プロセッサモードをスパーバイザーモード(SVC)、IRQ,FIQ割込みを禁止
179にする.
180
181次に、スタックポインタ(sp)を STACKTOP に設定する。ここで割込みスタッ
182クポインタに設定されたスタック領域は、カーネル起動後は非タスクコンテキ
183スト用のスタック領域として使われる。STACKTOP は、sys_config.h 部で定義
184することを想定している。
185
186(B) hardware_init_hook の呼出し
187
188hardware_init_hook が 0 でない場合には、hardware_init_hook を呼び出す。
189hardware_init_hook は、カーネルが起動される前に行う必
190要があるターゲッ
191ト依存の初期化を行うために用意している。hardware_init_hook がどこでも
192定義されていない場合、リンカでこのシンボルを 0 に定義する(リンカスク
193リプト内
194に記述あり)。
195
196(C) bssセクションと dataセクションの初期化
197
198bssセクションをゼロクリアする。また、dataセクションを初期化する。
199
200(D) software_init_hook の呼出し
201
202software_init_hook が 0 でない場合には、software_init_hook を呼び出す。
203software_init_hook は、カーネルが起動される前に行う必
204要があるソフトウェ
205ア環境(å…
206·ä½“的には、ライブラリ)依存の初期化を行うために用意している。
207software_init_hook がどこでも定義されていない場合、リンカでこのシンボ
208ルを 0 に定義する(リンカスクリプト内
209に記述あり)。
210
211(E) カーネルの起動
212
213kernel_start へ分岐し、カーネルを起動する。kernel_start からリターンし
214てくることは想定していない。
215
216
217
2183.システム依存部の機能
219
220
2213.1 システムクロックドライバ
222
223システムクロックドライバが isig_tim を呼び出す周期は、sys_defs.h 中の
224TIC_NUME と TIC_DENO で定義されている(標準は 1ミリ秒周期)。この定義
225を変更することで、isig_tim を呼び出す周期を変更することができる。ただ
226し、タイマの精度が 1μ秒であるため、1μ秒単位で端数になる値を設定した
227場合には、isig_tim の呼出し周期に誤差が生じることになる。
228
229
2303.2 性能評価用システム時刻参ç…
231§æ©Ÿèƒ½
232
233ARMv4 依存部では、性能評価用システム時刻参ç…
234§æ©Ÿèƒ½(vxget_tim)をサポートし
235ている。性能評価用システム時刻の精度は 1μ秒単位であるが、タイマの現在値
236を読み出すために一時的にタイマを停止させる必
237要があるため、vxget_tim を呼
238ぶ度にシステムクロックが少しづつ遅
239れることになる。なお、SYSUTIM型は UD型
240(64ビットの符号無し整数型)に定義している。
241
242
2433.3 シリアルインタフェースドライバ
244
245Integrator 依存部では,Intergrator/AP上の UART をサポートしている.
246
247
2484.開発環境の構築
249
250開発環境の構築方法については,GNU開発環境構築マニュアルを参ç…
251§ã®ã“と.
252
253
2544.1 開発環境のバージョン
255動作確認したツールのバージョンは以下の通りである.
256
257 BINUTILS : 2.11.2
258 GCC-CORE : 3.0.2
259 GDB : 5.0
260 NEWLIB : 1.9.0
261
262もしくは
263
264 BINUTILS : 2.14
265 GCC-CORE : 3.3
266 GDB : 5.3
267 NEWLIB : 1.11.0
268
2694.2 ツールソースの修正
270上記のバージョンのツールを構築するさい以下の修正が必
271要となる.
272
2734.2.1 GDB
274 ./gdb/rdi-share/devsw.c
275 39行目,69行目 のstruct tm lmの宣言している行をコメントアウトする.
276
277
2784.3 GDBスタブによるプログラムのダウンロード
279 ホストPCとボードをシリアルケーブルで繋ぎ,gdbにダウンロードしたい
280 プログラムを指定する.
281 次に以下のコマンドを実行する.ttySXXのXXはシリアルを接続してい
282 るポート番号である.
283
284 set remotebaud 57600
285 set endian little
286 set rdi /dev/ttySXX
287 後は,loadでプログラムをダウンロードして,continueで実行する.
288 また,Ctrl-Cで動作中のプログラムを停止できる.
289
290
291
2925.その他
293
2945.1 ディレクトリ・ファイル構成
295
296ARMv4 ターゲット依存部の各ファイルの概要は次の通り.
297
298 config/armv4/
299 Makefile.config MakefileのARMv4依存定義
300 armelf.ld ビッグエンディアン用リンカスクリプト
301 armv4.h ARMv4の定義
302 cpu_config.c プロセッサ依存部の関数
303 cpu_config.h プロセッサ依存部の構成定義
304 cpu_context.h コンテキスト操作
305 cpu_defs.h プロセッサ依存部のアプリケーション用定義
306 cpu_insn.h 低レベルのプロセッサ操作ルーチン
307 cpu_rename.def カーネルの内
308部識別名のリネーム定義
309 cpu_rename.h カーネルの内
310部識別名のリネーム
311 cpu_support.S プロセッサ依存部のサブルーチン
312 cpu_unrename.h カーネルの内
313部識別名のリネーム解除
314 makeoffset.c offset.h 生成サポートプログラム
315 start.S スタートアップモジュール
316 tool_config.h 開発環境依存部の構成定義(GNU開発環境用)
317 tool_defs.h 開発環境依存部のアプリケーション用定義(GNU開発環境用)
318
319 config/armv4/integrator
320 Makefile.config Makefileの Integrator 依存定義
321 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
322 hw_serial.h SIOドライバ
323 hw_timer.h タイマ操作ルーチン
324 integrator.c Integrator ハードウェア操作関数
325 integrator.h Integrator ハードウェア定義
326 integrator.ld Integrator リンカスクリプト
327 sys_config.c システム依存部の関数
328 sys_config.h システム依存部の構成定義
329 sys_defs.h システム依存部のアプリケーション用定義
330 sys_rename.def カーネルの内
331部識別名のリネーム定義
332 sys_rename.h カーネルの内
333部識別名のリネーム
334 sys_support.S システム依存部のサブルーチン
335 sys_unrename.h カーネルの内
336部識別名のリネーム解除
Note: See TracBrowser for help on using the repository browser.