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

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

initial

File size: 13.6 KB
Line 
1
2 = TOPPERS/JSPカーネル ユーザズマニュアル =
3 (M32R ターゲット依存部)
4
5 (Release 1.4.3 対応,最終更新: 29-Mar-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-2003 by Embedded and Real-Time Systems Laboratory
13 Toyohashi Univ. of Technology, JAPAN
14 Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
15 Graduate School of Information Science, Nagoya Univ., JAPAN
16
17 上記著作権者
18は,以下の (1)〜(4) の条件か,Free Software Foundation
19 によってå…
20¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
21 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
22 を改変したものを含む.以下同じ)を使用・複製・改変・再é…
23å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
24 利用と呼ぶ)することを無償で許諾する.
25 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
26 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
27 スコード中に含まれていること.
28 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
29 用できる形で再é…
30å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
31å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
32 者
33マニュアルなど)に,上記の著作権表示,この利用条件および下記
34 の無保証規定を掲載すること.
35 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
36 用できない形で再é…
37å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
38 と.
39 (a) 再é…
40å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
41マニュアルなど)に,上記の著
42 作権表示,この利用条件および下記の無保証規定を掲載すること.
43 (b) 再é…
44å¸ƒã®å½¢æ…
45‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
46 報告すること.
47 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
48 害からも,上記著作権者
49およびTOPPERSプロジェクトをå…
50è²¬ã™ã‚‹ã“と.
51
52 本ソフトウェアは,無保証で提供されているものである.上記著作権者
53お
54 よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
55 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
56 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
57
58 @(#) $Id: m32r.txt,v 1.10 2007/05/30 03:57:10 honda Exp $
59------------------------------------------------------------------------
60
61
62このドキュメントでは,TOPPERS/JSP M32R版について解説する.
63
641. M32R ターゲット依存部の概要
65
661.1 ターゲットシステムと開発環境
67
68M32Rプロセッサのターゲットシステムとしては,以下のものをサポートしてい
69る.
70
71 ・ルネサステクノロジ M3A-ZA36 (M32102)
72 ・ルネサステクノロジ M3A-2131 (M32102)
73
74開発環境には,GCCなどのGNU開発環境を用い,オブジェクトファイルフォーマッ
75トはELFを標準とする.
76
77TOPPERS/JSP M32Rの開発は 次の環境で行われている.
78
79 ・GNU gcc-4.1.2
80 ・GNU binutils-2.17
81 ・GNU gdb-6.6
82
831.2 サポートする機能の概要
84
85 ・多重割込み
86
87 M32R環境では割込みハンドラ起動中の多重割り込みを許可する.
88
89 ・chg_ipm
90
91 M32R環境では,chg_ipm(割込みマスクレベルの変更)をサポートする.
92 タスク内
93でchg_ipmを利用してマスクレベルを変更した場合,実行した
94 タスクでのみ変更が有効となる (ディスパッチ時に割込みマスクを退避
95 /変更する).
96
971.3 TOPPERS/JSP M32R環境の制限事項
98
99
100 ・vxget_tim
101
102 M32R環境ではvxget_timをサポートしない.
103
104 ・ena_int, dis_int
105
106 M32R環境ではユーザによる割込み許可・禁止は行えないものとしている.
107 ただし,ena_int/dis_intは,loc_cpu/unl_cpuの別名として存在する.
108
109 ・タイマティックは1ms
110
111 TOPPERS/JSP M32Rでは,1msの精度でカーネルタイマを駆動する.
112
113
1142. M32R環境に依存した機能
115
116この節では,カーネルおよびシステムサービスの機能の中で,M32R環境依存の
117部分について解説する.
118
1192.1 データ型
120
121int型 および unsigned int型のサイズは32ビットである.割込み優å…
122ˆåº¦ã‚’表
123現する型 IPR は符号なし8ビット整数である.
124
125
1263. システムに依存した機能
127
1283.1 メモリマップ
129
130・M3A-2131
131
132 0x00000000 - 0x0000020f : ベクタテーブル, EITハンドラの一部 (FLASH ROM)
133 0x00000210 - : 未使用 (FLASH ROM)
134 0x00f00000 - 0x00f0ffff : プログラム + システムスタック (内
135蔵RAM)
136 0x01000000 - 0x017fffff : データ (外部SDRAM 8MB)
137
138M3A-2131依存部では,デフォルトで内
139蔵RAM上にプログラムをé…
140ç½®ã™ã‚‹ã‚ˆã†ã«
141なっている.内
142蔵RAM上にプログラムをé…
143ç½®ã™ã‚‹ãŸã‚ã«ã¯ï¼Œãƒ™ã‚¯ã‚¿ãƒ†ãƒ¼ãƒ–ル
144(0x00000000-0x0000020f)領域を,0xFF3C0000 (BRA PC+0x00F00000)で埋める
145必
146要がある.
147
148スタック領域は,内
149蔵RAM領域の末尾からアドレス値が減少する方向へ進む.
150データ領域は所定の領域からアドレス値が増加する方向へ確保される.
151
152M3A-2131依存部では,システムスタックを除くすべてのデータを外部SDRAM に
153é…
154ç½®ã™ã‚‹ã“とをデフォルトとしている.é…
155ç½®ã‚’変えるためには.M3A-2131用リ
156ンカスクリプトファイル(jsp/config/m32r/m3a2131/m32relf.ld)を修正す
157ればよい。
158
159・M3A-ZA36
160
161 0x00f00000 - 0x00f0ffff : プログラム + システムスタック(内
162蔵SRAM)
163 0x04000000 - 0x047fffff : データ(外部SDRAM 64MB)
164
165M3A-ZA36依存部では,内
166蔵SRAM上にテキストセクションをé…
167ç½®ã“とを標準とし
168ている.スタック領域は,外部SDRAM領域の0x04100000番地からアドレス値が
169減少する方向へ進む.
170
171データ領域は,SDRAMのå…
172ˆé ­ç•ªåœ°0x04000000からアドレス値が増加する方向へ
173確保される.そのため,カーネルをロードする際には,予めデバッガ等で
174SDRAMを初期化しておく必
175要がある.
176
177メモリé…
178ç½®ã‚’変えるためには,M3A-ZA36用リンカスクリプトファイル
179(jsp/config/m32r/m3a_za36/m32relf.ld)を修正すればよい.
180
181
1823.2 他のシステム/チップへのポーティング
183
184ポーティング作業は次のステップからなる.
185 ・メモリマップドレジスタのアドレス値設定
186 ・タイマー値の設定
187 ・RAM開始番地の設定
188 ・イニシャルスタックポインタの設定
189
1903.2.1 メモリマップドレジスタのアドレス値設定
191
192TOPPERS/JSP M32R環境ではいくつかの制御レジスタを参ç…
193§ã—ている.これらは
194å…
195¨ã¦ã‚·ã‚¹ãƒ†ãƒ ä¾å­˜éƒ¨ç”¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®sys_defs.hで定義されている.利用者
196は
197必
198要に応じてこれらの値を修正すること.
199
2003.2.2 タイマー値の設定
201
202TOPPERS/JSP M32R環境では標準で1msごとに割込みを発生させている.
203
204割込みを発生させるまでの時間は,タイマコンペアレジスタの値をマニュアル
205にしたがって,TIMER_CLKCNTを調整することで変更できる.
206
207・m3a2131
208
209config/m32r/m3a2131/sys_config.h
210
211/* M3A-2131 66MHz で 115.2kbps */
212#define TIMER_CLKCNT (16667*2)
213#define TIMER_PORT 5
214
215・m3a_za36
216
217config/m32r/m3a_za36/sys_config.h
218
219#define TIMER_CLKCNT 1250 /* 10MHz で 57600bps */
220#define TIMER_PORT 4
221
222また,タイムティック自体を修正する場合は,sys_defs.hのTIC_NUMEおよび
223TIC_DENOを修正する.それぞれは次式に従う.
224
225タイムティック(ms) = TIC_NUME(ms) / TIC_DENO(ms)
226
2273.2.3 RAM開始番地の設定
228
229m32relf.ldのMEMORY部の内
230容を修正することで,メモリのサイズおよび位置を
231変更できる.また,各セクションの末尾にある"> iram"を"> eram"に変更する
232ことで,セクション毎にé…
233ç½®ã™ã‚‹ä½ç½®ã‚’変更できる.
234
2353.2.4 イニシャルスタックポインタの設定
236
237起動時に設定される初期スタックポインタ(割込みスタックポインタ)の番地は
238m32relf.ldの__stackに記述されている.この__ stackには4バイトアラインさ
239れた値を格納する.
240
241M3A-ZA36の初期スタックポインタは,以下のように設定されている.
242
243PROVIDE(__stack = 0x04100000);
244
245スタックはプリデクリメントスタックであるため,__stackで示されたアドレ
246スには何も格納されないことに注意されたい.
247
2483.2.5 その他の設定
249
250 ・使用するタイマユニットの番号
251 config/m32r/(sys)/sys_config.h: TIMER_PORT宣言
252 使用するタイマユニット番号を定める。デフォルトは5。標準の状
253 æ…
254‹ã§ã¯ã€ã“の宣言を修正するだけで、割込み番号やレジスタアドレ
255 スなども修正される。
256
257 ・コンソールに使用するUARTユニットのID
258 config/m32r/(sys)/sys_config.h: CONSOLE_PORTID宣言
259 コンソールとして使用するUARTユニットIDを指定する。UARTユニッ
260 トIDは1から始まることに注意。デフォルトは1。
261
262 ・割込み要因の最大数
263 config/m32r/(sys)/sys_config.h: NUM_INTERRUPT宣言
264 割込みベクタテーブルを作成するための割込み要因の最大数を設定
265 する。デフォルトは64 (0-63)。
266
267
2684.開発環境の構築
269
270開発環境の構築方法については,GNU開発環境構築マニュアルを参ç…
271§ã™ã‚‹ã“と.
272本CPUを識別するためのターゲット名は m32r-elf である.
273
2745.その他
275
2765.1 ディレクトリ・ファイル構成
277
278[jsp]
279 +- [doc]
280 | +- m32r.txt : このファイル
281 +- [config]
282 +- [m32r]
283 +- cpu_config.c : プロセッサ依存モジュール
284 +- cpu_config.h : プロセッサ依存モジュール
285 +- cpu_context.h : タスクコンテキスト操作ルーチン
286 +- cpu_defs.h : CPU依存情
287報(割込み/例外番号など) 定義ファイル
288 +- cpu_support.S : CPU依存アセンブリ言語コーディング部
289 +- m32rasm.inc : アセンブラ用インクルードファイル
290 +- m32r.h : レジスタマップ (M32R å…
291±é€š)
292 +- Makefile.config : CPU依存Makefile
293 +- makeoffset.c : 構造体オフセット位置取得用
294 +- start.S : スタートアップ / 割込みハンドラ
295 +- cpu_rename.h : シンボル名衝突回避ヘッダ
296 +- cpu_unrename.h : 同上
297 +- cpu_rename.def : 衝突回避対象シンボル定義ファイル
298 +- tool_defs.h : 処理系依存部
299 +- tool_config.h : トレースログ機能定義ファイル (非対応)
300 +- [m3a_2131]
301 +- hw_serial.h : シリアル操作 (M32R内
302蔵非同期SIO)
303 +- hw_serial.c : 同上
304 +- hw_timer.h : タイマ操作 (M32R内
305蔵タイマ)
306 +- m32relf.ld : M3A-2131専用リンカスクリプト
307 +- Makefile.config : システム依存Makefile
308 +- sys_config.h : システム依存モジュール
309 +- sys_config.c : システム依存モジュール
310 +- sys_defs.h : システム依存定義ファイル
311 +- sys_support.S : システム依存アセンブラ部
312 +- sys_rename.h : シンボル名衝突回避ヘッダ
313 +- sys_unrename.h : 同上
314 +- sys_rename.def : 衝突回避対象シンボル定義ファイル
315 +- [m3a_za36]
316 +- ...
317
318
3196.バージョン履歴
320
321 2007年05月28日 Release 1.4.3
322 ・cpu_support.Sのタスク例外起動判定処理を修正
323 ・m3a-2131g50のディレクトリ名をm3a_2131に変更
324 ・m3a-2131のSDRAM初期化処理を修正
325 ・M32Rå…
326±é€šã®ãƒ¬ã‚¸ã‚¹ã‚¿ãƒžãƒƒãƒ—ã‚’m32r.hとしてプロセッサ依存部に置く
327 2007年04月22日 Release 1.4.2
328 ・cpu_support.Sでenadspを実装
329できていない問題を修正.M3A-ZA36
330 のサポートを追加.
331 2003年06月17日 Release 1.4β
332 ・å…
333±é€šéƒ¨ãŒã„くつか変更になったので、それに合わせる
334 2003年04月21日 Release 1.4α
335 ・TOPPERS/JSP rel 1.4αにあわせこむ作業を行う
336 2002年08月09日 Release 1.2
337 ・VDECセミナーで勉強した成果を反映.32ビットシンボルロードを
338 shigh/low擬似命令に変更
339 2002年08月06日 Release 1.1
340 ・lock_cpu/unlock_cpuのインラインアセンブリ記述部で破壊される
341 レジスタのリストを書くのを忘れていたのを修正
342 ・一部アセンブリ言語部のラベル付けを修正し、デフォルトコンパイ
343 ルオプションを-O0から-O2に
344 ・コードの一部に "V850" の記述があったのを修正
345 2002年04月15日 Release 1.0
346 ・M32R依存部 正式リリース
347 2002年03月10日 Release 0.2
348 ・クロックを66MHzに.使用タイマを0->5へ.
349 ・ドキュメント整備
350 2002年03月01日 Release 0.1
351 ・最初のリリース
Note: See TracBrowser for help on using the repository browser.