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

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

initial

File size: 14.7 KB
Line 
1
2 = TOPPERS/JSPカーネル ユーザズマニュアル =
3 (ColdFire Version 2 ターゲット依存部)
4
5 (Release 1.4.1対応,最終更新: 6-Oct-2004)
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) 2004-2006 by Embedded and Real-Time Systems Laboratory
15 Graduate School of Information Science, Nagoya Univ., JAPAN
16 Copyright (C) 2007 by KURUSUGAWA Electronics Industry Inc, JAPAN
17 Copyright (C) 2008 by Takahisa Yokota
18
19 上記著作権者
20は,以下の (1)〜(4) の条件か,Free Software Foundation
21 によってå…
22¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
23 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
24 を改変したものを含む.以下同じ)を使用・複製・改変・再é…
25å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
26 利用と呼ぶ)することを無償で許諾する.
27 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
28 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
29 スコード中に含まれていること.
30 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
31 用できる形で再é…
32å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
33å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
34 者
35マニュアルなど)に,上記の著作権表示,この利用条件および下記
36 の無保証規定を掲載すること.
37 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
38 用できない形で再é…
39å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
40 と.
41 (a) 再é…
42å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
43マニュアルなど)に,上記の著
44 作権表示,この利用条件および下記の無保証規定を掲載すること.
45 (b) 再é…
46å¸ƒã®å½¢æ…
47‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
48 報告すること.
49 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
50 害からも,上記著作権者
51およびTOPPERSプロジェクトをå…
52è²¬ã™ã‚‹ã“と.
53
54 本ソフトウェアは,無保証で提供されているものである.上記著作権者
55お
56 よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
57 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
58 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
59
60 @(#) $Id: m68k.txt,v 1.13 2004/10/06 06:51:51 honda Exp $
61------------------------------------------------------------------------
62
63
641.ColdFire V2 ターゲット依存部の概要
65
661.1 ターゲットシステム
67
68ColdFire V2プロセッサのターゲットシステムとしては,フリースケール・セミコン
69ダクタ株式会社のCPUボードM52235EVB(MCF52235)のみをサポートしている.
70
711.2 開発環境と実行環境
72
73開発環境には,GCCなどのGNU開発環境を用い,オブジェクトファイルフォーマッ
74トはELFを標準とする.
75
76実行環境として,ROMから直接起動する方法とGDBスタブを用いる方法をサポート
77している.GDBスタブを用いる場合には,Makefile中で,DBGENVにGDB_STUBを
78定義する(デフォルト).ROMモニタを用いる場合には,DBGENVを定義しない.
79
80(注)RAMにカーネルをé…
81ç½®ã™ã‚‹ã¨M52235EVBではサイズが収まらないため、GDB_STUB
82は現状使用しない
83
841.3 サポートする機能の概要
85
86ColdFire V2依存の機能として,割込みマスクの変更・参ç…
87§ï¼ˆchg_ixx,get_ixx)を
88サポートしている.また,M52235EVBボード依存の機能として,性能評価用システム
89時刻参ç…
90§æ©Ÿèƒ½ï¼ˆvxget_tim)をサポートしている.割込みの禁止と
91許可(dis_int,ena_int)はサポートしていない.
92
93
942.ColdFireプロセッサ依存部の機能
95
96この節では,カーネルおよびシステムサービスの機能の中で,ColdFire依存の部
97分について解説する.
98
992.1 データ型
100
101signed int型,unsigned int型,size_t型のサイズは,いずれも32ビットであ
102る.
103
1042.2 割込み管理機能と割込みハンドラ
105
106カーネル管理外の割込みはNMIのみである.よって,CPUロック状æ…
107‹ã‚„初期化ルー
108チン内
109では,NMI以外の割込みはすべて禁止されている.å…
110·ä½“的には,IPM
111(Interrupt Priority Mask)が7に設定される.
112
113DEF_INHで指定する割込みハンドラ番号(inhno)は,MCF52235での例外ベクタ番
114号を表し,そのデータ型(INHNO)はunsigned int型に定義されている.
115DEF_INHで,例外ベクタ番号として有効でない値や,外部割込みに対応しない
116番号を指定した場合の動作は保証されない.
117
118MCF52235依存の機能として,SR(Status Register)中のIPM(Interrupt
119Priority Mask)の値を変更するためのサービスコールchg_ipmと,参ç…
120§ã™ã‚‹ãŸ
121めのサービスコールget_ipmをサポートしている.なお,IPMの値を表すデータ
122型IPMは,unsigned int型に定義されている.
123
124これらのサービスコールは,タスクコンテキストでCPUロック解除状æ…
125‹ã®å ´åˆ
126にのみ呼び出すことができる.chg_ipmによりIPMを0以外(すなわち,何らか
127の割込みが禁止されている状æ…
128‹ï¼‰ã«ã—た場合でも,ディスパッチは禁止されず,
129chg_ipmにより変更したIPMの値は,ディスパッチ後のタスクに引き継がれる.
130例えば,あるタスクでIPMを1に変更した後,何らかの割込みにより別のタスク
131に切り替わると,切り替わった後のタスクでもIPMは1になる.ただし,IPMを0
132以外に設定していても,実行できるタスクがなくなった場合にはIPMは一時的
133に0になる.これは,COLDFIREの命令セットからくる制限事項
134である(解決手段
135がないわけではない).
136
137chg_ipmをサポートするために,割込みハンドラの出å…
138¥å£å‡¦ç†ãªã©ã«ã‚ªãƒ¼ãƒãƒ˜ãƒƒ
139ドを生じている.そこで,SUPPORT_CHG_IPMというマクロにより,これらのサー
140ビスコールをサポートするかどうかを切り替えられるようにしている.
141SUPPORT_CHG_IPMは,cpu_config.hの中でマクロ定義されている.
142
143ColdFire V2依存の割込みマスクの変更・参ç…
144§ã®ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールの仕様は次の
145通り.
146
147(1) chg_ipm 割込みマスクの変更
148
149【C言語API】
150 ER ercd = chg_ipm(IPM ipm);
151
152【パラメータ】
153 IPM ipm 設定すべき IPM の値
154
155【リターンパラメータ】
156 ER ercd エラーコード
157
158【エラーコード】
159 E_CTX コンテキストエラー
160 E_PAR パラメータエラー(ipm が不正)
161
162【機能】
163
164IPM(Interrupt Priority Mask)を ipm で指定された値に設定する.指定し
165た値が 0〜6 以外の場合,E_PARエラーとなる.IPM を 1〜6 に設定した場合
166でも,ディスパッチは禁止されない.また,設定した IPM の値は,ディスパッ
167チ後も引き継がれる.ディスパッチを禁止したい場合には,dis_dsp と併用す
168ればよい.
169
170なお,このサービスコールを用いて,IPM を 7 (すべての割込みを禁止)に
171設定することはできない.IPM を 7 にしたい場合には,loc_cpu を使うべき
172である.
173
174このサービスコールは,タスクコンテキストで CPUロック解除状æ…
175‹ã®æ™‚のみ呼
176び出すことができる.非タスクコンテキストや CPUロック状æ…
177‹ã§å‘¼ã³å‡ºã—た場
178合には,E_CTXエラーとなる.
179
180(2) get_ipm 割込みマスクの参ç…
181§
182
183【C言語API】
184 ER ercd = get_ipm(IPM *p_ipm);
185
186【パラメータ】
187 なし
188
189【リターンパラメータ】
190 ER ercd エラーコード
191 IPM ipm 現在の IPM の値
192
193【エラーコード】
194 E_CTX コンテキストエラー
195
196【機能】
197
198現在の IPM(Interrupt Priority Mask)の値を読み出し,ipm に返す.
199
200このサービスコールは,タスクコンテキストで CPUロック解除状æ…
201‹ã®æ™‚のみ呼
202び出すことができる.非タスクコンテキストや CPUロック状æ…
203‹ã§å‘¼ã³å‡ºã—た場
204合には,E_CTXエラーとなる.
205
2062.3 CPU例外管理機能とCPU例外ハンドラ
207
208DEF_EXC で指定する割込みハンドラ番号(excno)は,COLDFIREでの例外ベクタ
209番号を表し,そのデータ型(EXCNO)は unsigned int型に定義されている.
210DEF_EXC で,例外ベクタ番号として有効でない値や,CPU例外に対応しない番
211号を指定した場合の動作は保証されない.
212
2132.4 スタートアップモジュール
214
215COLFIRE依存のスタートアップモジュール(start.S)では,次の初期化処理を
216行う.
217
218(A) ハードウェアの初期化
219
220最初にSRAM、FlashROMのé…
221ç½®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定する。
222
223(B) プロセッサモードの初期化とスタックポインタの初期化
224
225プロセッサのモードを,スーパバイザモード・割込みモードに設定し,NMI 以外
226のすべての割込みを禁止する.スタートアップモジュールは,スーパバイザモード
227で起動しなければならないので,ここでスーパバイザモードに設定するのは,本当
228はムダである.
229
230次に,割込みスタックポインタ(SPI)を STACKTOP に設定する.ここで割込
231みスタックポインタに設定されたスタック領域は,カーネル起動後は非タスク
232コンテキスト用のスタック領域として使われる.STACKTOP は,sys_config.h
233部で定義することを想定している.また,フレームポインタを 0 に初期化す
234る.
235
236(B) 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(C) bssセクションと dataセクションの初期化
247
248bssセクションをゼロクリアする.また,dataセクションを初期化する.
249
250(D) software_init_hook の呼出し
251
252software_init_hook が 0 でない場合には,software_init_hook を呼び出す.
253software_init_hook は,カーネルが起動される前に行う必
254要があるソフトウェ
255ア環境(å…
256·ä½“的には,ライブラリ)依存の初期化を行うために用意している.
257software_init_hook がどこでも定義されていない場合,リンカでこのシンボ
258ルを 0 に定義する(リンカスクリプト内
259に記述あり).
260
261(E) カーネルの起動
262
263kernel_start へ分岐し,カーネルを起動する.kernel_start からリターンし
264てくることは想定していない.
265
266
2673.M52235EVB システム依存部の機能
268
269 特になし
270
2714.開発環境の構築
272
273開発環境の構築方法については,GNU開発環境構築マニュアルを参ç…
274§ã™ã‚‹ã“と.
275
2764.1 開発環境のバージョン
277
278動作確認したツールのバージョンは以下の通りである.
279
280 BINUTILS : 2.18
281 GCC-CORE : 3.6.3
282
283GCC 3.3を用いる場合,コンパイラが標準Cライブラリ関数を呼び出すコードを
284生成するため,NEWLIBが必
285要になる.NEWLIBの標準Cライブラリをリンクする
286ために,Makefile中のLIBSの定義に以下のように -lc を追加する必
287要がある.
288
289 LIBS := $(LIBS) $(CXXLIBS) -lc -lgcc
290
291
2925.その他
293
2945.1 ディレクトリ・ファイル構成
295
296M68040ターゲット依存部の各ファイルの概要は次の通り.
297
298 config/cfv2/
299 Makefile.config MakefileのColdFire V2依存定義
300 cpu_config.c プロセッサ依存部の関数
301 cpu_config.h プロセッサ依存部の構成定義
302 cpu_context.h コンテキスト操作
303 cpu_defs.h プロセッサ依存部のアプリケーション用定義
304 cpu_insn.h 低レベルのプロセッサ操作ルーチン
305 cpu_rename.def カーネルの内
306部識別名のリネーム定義
307 cpu_rename.h カーネルの内
308部識別名のリネーム
309 cpu_support.S プロセッサ依存部のサブルーチン
310 cpu_unrename.h カーネルの内
311部識別名のリネーム解除
312 m52235.h MCF52235の定義
313 makeoffset.c offset.h生成サポートプログラム
314 mcfpit.h MCF52235内
315臓PITタイマードライバ
316 mcfuart.c MCF52235内
317臓UART用シリアルドライバ
318 mcfuart.h MCF52235内
319臓UART用シリアルドライバ
320 start.S スタートアップモジュール
321 tinet_cpu_config.h TINET用ヘッダ
322 tinet_cpu_defs.h TINET用ヘッダ
323 tool_config.h 開発環境依存部の構成定義(GNU開発環境用)
324 tool_defs.h 開発環境依存部のアプリケーション用定義(GNU開発環境用)
325 util.h
326 vector_table.c
327
328 config/cfv2/m52235evb/
329 Makefile.config MakefileのM52235EVB依存定義
330 Makefile.tinet
331 cfv2.h ColdFireV2の定義
332 cfv2elf.ld リンカスクリプト
333 cfv2elf.stub.ld リンカスクリプト(stub用)
334 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
335 hw_serial.h SIOドライバ
336 hw_timer.h タイマ操作ルーチン
337 m52235evb.h M52235EVBボードのハードウェア資源の定義
338 sys_config.c システム依存部の関数
339 sys_config.h システム依存部の構成定義
340 sys_defs.h システム依存部のアプリケーション用定義
341 sys_rename.def カーネルの内
342部識別名のリネーム定義
343 sys_rename.h カーネルの内
344部識別名のリネーム
345 sys_support.S システム依存部のサブルーチン
346 sys_unrename.h カーネルの内
347部識別名のリネーム解除
348 tinet_sys_config.c TINET用システム依存部の関数
349 tinet_sys_config.h TINET用システム依存部の構成定義
350 user_config.h ユーザー定義情
351å ±
352
3535.2 ターゲットへのダウンロードと実行
354
355ターゲットへのダウンロードと実行手順については,GNU開発環境構築マニュ
356アルに説明されているが,以下では,ColdFire V2および M52235EVBボードの場
357合に特有の事項
358について説明する.
359
360ROMから直接起動する方法
361
362 CF FlasherでBDM経由で書き込むことによりROMから起動できる。
363
364
365以上
Note: See TracBrowser for help on using the repository browser.