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

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

initial

File size: 34.0 KB
Line 
1 = TOPPERS/JSPカーネル ユーザズマニュアル =
2 (M16C ターゲット依存部)
3
4 (Release 1.4.4対応,最終更新: 20-May-2011)
5
6------------------------------------------------------------------------
7 TOPPERS/JSP Kernel
8
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) 2003-2004,2007,2010,2011 by Naoki Saito
15 Nagoya Municipal Industrial Research Institute, JAPAN
16 Copyright (C) 2003-2004 by Platform Development Center
17 RIOCH COMPANY,LTD. JAPAN
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------------------------------------------------------------------------
61
621. M16C ターゲット依存部の概要
63
641.1 ターゲットシステム
65
66M16C ターゲット依存部は,ターゲットシステムとして
67オークス電子株式会社の OASKS16 及び OAKS16-MINI をサポートしている.
68OAKS16 はプロセッサとして M30620FCAFP-CPU を,OAKS16-MINI は
69M30262F8FG-CPUを搭載している.
70
711.2 開発環境と実行環境
72
73開発環境は,ルネサスエレクトロニクス社製の開発ツールを使用する.
74ビルド管理の方法として,2つの形æ…
75‹ã‚’用意している.
76
77ひとつは,ルネサスエレクトロニクス社製の統合開発環境 TM を使用して
78開発を行う方法である.
79
80もうひとつは,DOS窓から make コマンドを用いて開発を行う方法である.
81ただし,この方法は以下の条件が必
82要である.
83 ・OAKS16 ターゲット依存部で開発を行う場合にのみ利用可能
84 ・開発ツール NC30WA がライブラリアンを利用可能な版であること
85  (最近の無償評価版コンパイラはこの条件を満たしている)
86 ・perl が利用できること
87
88開発環境の詳細に関しては,tools/M16C-RENESAS ディレクトリ中の
89README.txt を参ç…
90§ã®ã“と.
91
92実行環境は Windows がインストールされていて,かつ,シリアルポートを
93搭載したPC があれば,プログラムのビルドおよびボード上での実行が可能である.
94
951.3 サポートする機能の概要
96
97ターゲット依存とされている機能に対するサポート状況は以下の通り.
98 ・性能評価用システム時刻参ç…
99§æ©Ÿèƒ½ (vxget_tim) : サポート
100 ・割込みマスクの変更・参ç…
101§ (chg_ixx, get_ixx):未サポート
102 ・割り込みの禁止と許可(dis_int,ena_int):未サポート
103
1041.4 他のターゲットへのポーティング
105
106M16C は CPU上に多くのデバイスが実装
107されており,SFR という形式で
108統一化されている.そのため M16C シリーズの CPU を搭載するボードであれば,
109ポーティングは容易に出来ると思われる.
110
1111.5 シリアルポート
112
113ターゲットボードには UART1 ポートが実装
114されており,また UART0 ポートが
115拡張可能となっている.ターゲット依存部のシリアルドライバでは 2つのポート
116が必
117要に応じて利用可能となっている.
118なお,OAKS16-MINI 版のシリアルドライバは,RAMサイズが 2KBという制約のため
119XON/XOFF 及びエコー等の機能には対応していない.
120
121シリアルポートの設定を以下に示す.
122 ・ボーレイト,19200[bps].
123 ・データ長,8 ビット.
124 ・ストップビット,1 ビット.
125 ・パリティなし.
126
1271.6 対象とするソースコードの文字コード
128
129TOPPERSプロジェクトからå…
130¬é–‹ã•ã‚Œã‚‹ TOPPERS/JSP カーネルのパッケージは,
131文字コード及び改行コードが EUC+LF 及び SJIS+CRLF の 2つのパターンの
132パッケージが存在する.EUC+LF版のパッケージでもダウンロードして展開後,
133文字コード変換すれば使用可能と思われるが,M16C依存部を利用する場合は,
134SJIS+CRLF のパッケージをダウンロードすることを推奨する.
135
136
1372. M16C プロセッサ依存部の機能
138
139この節では,カーネルおよびシステムサービスの機能の中で,M16C依存の部分
140について解説する.
141
1422.1 データ型
143
144int 型と unsigned int 型のサイズは 16ビットである.また,_int64_ には
145対応していない.
146
147ポインタに関して,M16C では16ビット長の near ポインタ及び 32ビット長の
148far ポインタが存在する.near ポインタは RAM 及びデバイスのポート領域である
149SFR(Special Function Register) をアクセスする為のポインタである.
150一方,far ポインタは near ポインタでアクセス可能な領域に加え
151ROM 領域までアクセスが可能なポインタである.
152このようにサイズが異なる2種類のポインタが存在するため,ユーザプログラム
153を作成する場合,ポインタのサイズを意識する必
154要がある.
155
156μITRON 4.0 仕様のデータ型の定義に関し,今回のポーティングでは
157VP を near ポインタ,VP_INT を far ポインタとしている.
158
159また,size_t 型のデータサイズについては,ルネサスエレクトロニクス製
160Cコンパイラ NC30WA V.5.40 Release00 以降の版では32ビットであるが,
161それより前の版のコンパイラでは16ビットと,既定サイズが異なるため,
162注意が必
163要である.
164
165
1662.2 割込み管理機能と割込みハンドラ
167
168M16C のCPUロック状æ…
169‹ã®å®Ÿè£…
170はフラグレジスタ中の割込み許可フラグ(Iフラグ)
171を用いて行う.CPUロック状æ…
172‹ã§ã¯ Iフラグが 0 に設定され,ハードウェア
173マスカブル割込みは禁止(受付が保留)される.CPUロック解除状æ…
174‹ã§ã¯ Iフラグ
175が 1 に設定され,(割込み優å…
176ˆåº¦ãƒ¬ãƒ™ãƒ«(IPL)の値にもよるが,)マスク可能な
177割込み要求の受付が可能となる.
178
179M16C 依存部におけるカーネル管理外の割込みは,NMI のみである.
180
181DEF_INH で指定する割込みハンドラ番号(inhno)は,M16Cでのソフトウェア
182割込み番号を表し,そのデータ型(INHNO)は char型に定義されている.
183
184M16C プロセッサでは,割込みのå…
185¥å£å‡¦ç†ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’割込みベクタで指定する.
186割込みベクタは可変ベクタ及び固定ベクタから構成され,そのうち可変ベクタ
187については VECTOR_ADR (start.a30) で指定されたアドレスへ静的にé…
188ç½®ã•ã‚Œã‚‹ï¼Ž
189本開発環境では,コンフィギュレーションにより生成された kernel_cfg.c の
190内
191容を解析し,割込みベクタを生成するユーティリティを用意している.
192
193このユーティリティは m16cvec.exe という名称で utils/m16c-renesas
194ディレクトリに置かれ,前処理された kernel_cfg.c の内
195容を解析して
196割込みベクタ定義ファイル m16cvec.incを生成する.
197m16cvec.inc ファイルは CPU のスタートアップモジュールである start.a30
198からインクルードされる.
199
200なお,DEF_INH の割込みハンドラ番号として未定義の範囲の値を指定した場合,
201その DEF_INH で指定した関数が,定義されていない割込み用の割込みハンドラ
202として使われるように,設定される.
203そのため,この方法を使えば,ユーザは未定義の(つまり,DEF_INH で定義して
204いない)割込みが発生した場合のハンドラを設定することができる.
205
206
2072.3 CPU 例外管理機能と CPU 例外ハンドラ
208
209DEF_EXC で指定する例外ハンドラ番号(excno)は,M16Cでのソフトウェア割込み
210番号を表し,そのデータ型(EXCNO)は char 型に定義されている.
211
212CPU例外として,ハードウェアノンマスカブル割込みとソフトウェアノンマスカ
213ブル割込みがある.ハードウェアノンマスカブル割込みについては,
214リセットを除き,割込みベクタの設定が可能である.
215
216CPU例外ハンドラに対応するベクタは,割込みハンドラの際と同様に
217m16cvec.exe を用いて m16cvec.inc に設定する.
218なお,CPU例外ハンドラ番号として未定義の値を設定した場合は,
219定義されていないCPU例外ハンドラのハンドラとして設定される.
220そのため,ユーザは未定義のCPU例外が発生した場合のハンドラを
221設定することができる.
222
2232.4 スタートアップモジュール
224
225M16C 依存部のスタートアップモジュール (start.a30) は次に示す初期化を実行
226した後,カーネル (kernel_start) を起動する.ただし,kernel_start から
227戻ってくることは想定していない.電源投å…
228¥ç›´å¾Œã«èµ·å‹•ã•ã‚Œã‚‹ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—
229モジュールの開始番地は m16cvec.inc のベクタ定義より _hardware_start と
230されているが,それがé…
231ç½®ã•ã‚Œã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹å€¤ã¯ãƒªãƒ³ã‚¯æ™‚に決定される.
232
233(1) スタックポインタの設定
234
235(2) CPU関連の初期設定
236
237プロセッサモードの設定とクロックの設定を行う.
238
239(3) hardware_init_hook の呼出し(未実行)
240
241M16Cアセンブラは,C言語コンパイラと同期を取ったプリコンパイル処理がで
242きない.hardware_init_hook の判定ができないため対応していない.
243実際,M16Cのハードウェア設定に関しては,sys_initialize()関数中で行って
244も十分に対応できると考えられるのでそちらで対応していただきたい.
245
246(4) bssセクションと dataセクションの初期化
247
248bssセクションをゼロクリアする.また,dataセクションを初期化する.
249
250(5) software_init_hook の呼出し
251
252software_init_hook の値が 0 でなければ,software_init_hook を呼び出す.
253software_init_hook はカーネル起動前に,ソフトウェア環境 (ライブラリ等)
254依存の初期化を行うために用意されている.
255
256software_init_hook の定義は cpu_config.c 中で行う.既定では 0 に仮設定
257されている.独自に別の場所で software_init_hook を定義する場合,マクロ
258として EXTERNAL_SOFT_HOOK を定義する.そのようにすれば,å…
259ƒã®å¤‰æ•°å®šç¾©ã¯
260含まれなくなるため,外部での設定が可能となる.
261例えば,ライブラリの初期設定などを行いたい場合は,外部からの変数定義を
262行うことが可能となる.
263
264(6) カーネルの起動
265
266kernel_start へ分岐し,カーネルを起動する.kernel_start からリターンし
267てくることは想定していない.
268
2692.5 割込み発生時のスタック使用量について
270
271カーネル起動,及び,割込み発生時はタスク用のスタックとは別の割込み専用の
272スタックを使用している.このスタック領域は RAMEND というマクロで
273指定されたアドレスから低位方向に向かうメモリ上の領域に確保される.
274そのため,システム起動時にはこの領域を確保する必
275要がある.
276
277割込みネストレベルが 0(つまり,タスク実行中)で割込みが発生すると,
278タスクコンテキスト用スタックにレジスタを保存した後,割込み用スタックに
279スタックを切り替える.そのため,タスクコンテキスト用スタックには
280汎用レジスタ,フラグ,PC など 20バイトの領域が余分に必
281要となる.
282
283割込みネストレベルが 1 以上の状æ…
284‹ (つまり,非タスクコンテキスト)で
285割込み要求が受け付けられた場合,割込みスタックにレジスタが保存される.
286これには割込み発生毎に20バイトずつ必
287要である.それに加え,それぞれの
288割込み処理ルーチンで使用されるスタックサイズが必
289要となる.
290
2913. システム依存部の機能
292
2933.1 システムクロックドライバ
294
295システムクロックドライバが isig_tim を呼び出す周期は,sys_defs.h の中の
296TIC_NUME と TIC_DENO で定義されている(標準は 1ミリ秒周期).
297この定義を変更することで,isig_tim を呼び出す周期を変更することができる.
298ただし,タイマの精度が1μ秒であるため,1μ秒単位で端数になる値を設定した
299場合には,isig_timの呼出し周期に誤差が生じることになる.
300
3013.2 性能評価用システム時刻参ç…
302§æ©Ÿèƒ½
303
304M16Cでは,性能評価用システム時刻参ç…
305§æ©Ÿèƒ½ (vxget_tim) をサポートしている.
306OAKS16 では精度 0.0625[us],OAKS16-MINIでは精度 1.6[us]である.SYSUTIM
307型は UW 型 (32 ビット符号なし整数型) である.
308
3093.3 シリアルインタフェースドライバ
310
311OAKS16,OAKS16-MINI では UART0 と UART1 の 2つのシリアルポートが
312ボード上に実装
313できる.このうちコネクタが実装
314された UART1 を
315ログ出力用に使用している.
316
317
3183.4 メモリマップ
319
3203.4.1 OAKS16のメモリマップ
321
322(1) 実行環境
323
324 0x00000 - 0x003ff SFR領域
325 0x00400 - 0x02bff 内
326臓 RAM,data_NE,data_NO,bss_NE,bss_NO
327 0xe0000 - 0xffdff 内
328蔵 ROM,program,rom_FE,rom_FO,data_NEI,
329 data_NOI
330 0xffe00 - 0xfffdb 内
331蔵 ROM,ハード,ソフト割込みベクタ領域 (vector)
332 0xfffdc - 0xfffff 内
333蔵 ROM,ハードCPU例外ベクタ領域(fvector)
334
3353.4.2 OAKS16-MINIのメモリマップ
336
337(1) 実行環境
338
339 0x00000 - 0x003ff SFR領域
340 0x00400 - 0x00bff 内
341臓 RAM,data_NE,data_NO,bss_NE,bss_NO
342 0xe0000 - 0xffdff 内
343蔵 ROM,program,rom_FE,rom_FO,data_NEI,
344 data_NOI
345 0xffe00 - 0xfffdb 内
346蔵 ROM,ハード,ソフト割込みベクタ領域 (vector)
347 0xfffdc - 0xfffff 内
348蔵 ROM,ハードCPU例外ベクタ領域(fvector)
349
3504. 開発
351
3524.1 開発環境の構築
353
354開発環境は,Windows XP (Service Pack 3)で動作確認した.
355構築環境はルネサスエレクトロニクス社製の開発環境を用いる.
356ビルド管理方法として,以下の 2つがある.
357
358(1) ルネサスエレクトロニクス社製の統合開発環境 TM を使用した環境
359
360 対象:OAKS16ボード,OAKS16-MINIボード
361 方式:ルネサスエレクトロニクス社の統合開発環境 TM V3.20 を用いて構築する.
362 その際,カーネル部をライブラリ化せず構築する
363 動作確認コンパイラ:
364 NC30WA Version 5.45 Release 1 無償評価版
365 NC30WA Version 5.10 Release 1 Entry版
366 注)2011年5月時点での最新版(NC30WA Version 6.00 Release 00) は
367 ツールの仕様変更により現時点では対応していない.
368
369(2) DOS窓から make コマンドを用いて開発を行う環境
370
371 対象:OAKS16 ボード
372 方式:DOS窓からmakeを使って構築
373 カーネル部をライブラリ化して構築する
374 動作確認コンパイラ:
375 NC30WA Version 5.45 Release 1 無償評価版
376 その他必
377要ツール
378 GNU make (version 3.80 で動作確認済)
379 Perl (動作確認は Active Perl v5.6.1 及び v5.12.2で行った)
380
381ただし,いずれの場合も NC30WA のインストールå…
382ˆã«ã¯æ³¨æ„ãŒå¿…
383要である.
384最近の版では規定値として C:\Program Files 以下にインストールされるが,
385TM 及び make はパス文字列中に空白が含まれる場合,正しく動作しない.
386そのため,インストールå…
387ˆãƒ‘スが空白を含まないようにする必
388要がある.
389
390また,ソースの展開位置とツールのインストールå…
391ˆã¨ãŒç•°ãªã‚‹ãƒ‰ãƒ©ã‚¤ãƒ–に
392é…
393ç½®ã•ã‚Œã¦ã„る構成も,正常に動作しない場合があるため,推奨しない.
394
3954.2 統合開発環境TMを用いた構築
396
397OAKS16 フルキットまたは OAKS16 MINI フルキットに添付の開発環境を用いて
398M16C用の TOPPERS/JSP カーネルを構築する.実行は,FlashROM 書き込み
399ツール FlashSta を用い,構築した MOT ファイルをボード上のフラッシュ
400ROM へ書き込むことにより行う.
401
402したがって,統合開発環境 TM,コンパイラ NC30WA,フラッシュROM 書き込み
403ツール FlashSta もインストールする必
404要がある.
405
406また,ターゲットプログラムの構築には,開発ホスト上で動作する,
407コンフィギュレータ cfg/cfg.exe 及び M16Cターゲット特有のユーティリティ
408プログラム utils/m16c-renesas/{m16cvec.exe, m16coffset.exe} も用いる.
409これらのプログラムはコンパイル済みのものが用意されているが,
410プログラムを変更したい場合は再構築する必
411要がある.
412
4134.2.1 ツールの構築
414
415cfg.exe の構築については user.txt などを参ç…
416§ã®ã“と.
417utils/m16c-renesas 上のツール m16coffset.exe と m16cvec.exe を
418構築する場合,MinGW (Minimalist GNU for Windows)を使用する.
419(ちなみに,cfg.exe のビルドも MinGW で対応可能である)
420
421通常は既にコンパイル済みのものが用意されているため,そちらを
422利用すればよい.
423
424MinGW (Minimalist GNU for Windows)
425http://www.mingw.org/
426http://sourceforge.net/projects/mingw/ (インストーラのå…
427¥æ‰‹å…
428ˆ)
429
4304.2.2 TM にプロジェクトを選択しビルドする.
431
432(1) プロジェクト設定ファイルの変更
433
434注:場合によっては本節(1)の書き換えを行わなくてもツールがパスの設定を
435自動的に行う場合があるため,問題が生じたときに書き換えを行えばよい.
436
437tools/M16C-RENESAS 以下にある,TM のプロジェクト設定ファイル
438Jsp14sample1.tmi,Jsp14sample1.tmk,Jsp14sample1m.tmi,Jsp14sample1m.tmk
439の設定内
440容には絶対パス指定が行われている箇所がある.
441
442その部分が現在の tools/M16C-RENESAS ディレクトリの絶対パスと異なる場合は,
443TM を使ってプロジェクトの設定を行う前に,エディタを使って絶対パスの設定を
444書き換える.以下にJsp14sample1.tmiとJsp14sample1.tmkの例を示す.
445
446---Jsp14sample1.tmi ---
447[PROJECT]
448ProjectName=Jsp14sample1
449WorkingDirectory=C:\usr\TOPPERS\jsp-1.4\tools\R16C-RENESAS <-絶対パス
450OutputDirectory=.
451ProjectFile=C:\usr\TOPPERS\jsp-1.4\tools\R16C-RENESAS\Jsp14sample1.tmk <-絶対パス
452ProjectInfoFile=C:\usr\TOPPERS\jsp-1.4\tools\R16C-RENESAS\Jsp14sample1.tmi <-絶対パス
453TargetName=M16C Family
454Type=1
455GoalFile=C:\usr\TOPPERS\jsp-1.4\tools\R16C-RENESAS\Jsp14sample1.x30 <-絶対パス
456[NC]
457Name=NC30WA
458Version=V.4.00 Release 2
459 :
460
461---Jsp14sample1.tmk ---
462####################################################################
463# Makefile for TM V.3.20
464# Copyright 1998-2002 MITSUBISHI ELECTRIC CORPORATION
465# AND MITSUBISHI ELECTRIC SEMICONDUCTOR APPLICATION ENGINEERING CORPORATION
466# All Rights Reserved.
467#
468# Notice : Don't edit.
469# Date : 2004 01(January) 10(Saturday) PM.03.11
470# Project : Jsp14sample1
471####################################################################
472
473DELETE = @-del
474LNLIST = $(PROJECT).cmd
475PRJDIR = C:\usr\TOPPERS\jsp-1.4\tools\R16C-RENESAS <-絶対パス
476LMC = LMC30
477CC = NC30
478 :
479
480(2) プロジェクトのオープン
481
482(2-1) Windows メニューから TM を起動する.
483(2-2) TM が起動したら「Open Project」メニューを開く.
484(2-3) tools/M16C-RENESAS ディレクトリ中の Jsp14sample1.tmk または
485 Jsp14sample1m.tmk を選択する.
486 OAKS16用の構築を行う場合は,Jsp14sample1.tmkを,OAKS16 MINI用の構築を
487 行う場合は,Jsp14sample1m.tmk を選択する.
488(2-4) 選択時,コンパイラの違いにより設定メニューが表示される場合がある.
489 この環境は,NC30WA コンパイラの Version 5.10 Entry 版及び Version 5.45
490 にて評価を行っている.現在の環境にしたがって設定する.
491
492(3) プリプロセッサの指定
493
494ビルド過程でプリプロセッサを使用するため,開発環境がインストールされた
495場所に応じて CPP という名前のマクロを変更する.
496
497(3-1) TM から Project Editor を起動する.
498(3-2) 表示されるウィンドウのメニューで「プロジェクト → マクロブラウザ」
499 を選択する.
500(3-3) CPP という名前のマクロを,開発環境のインストールå…
501ˆã«å¿œã˜ã¦ç·¨é›†ã™ã‚‹ï¼Ž
502 ここには cpp30.exe という実行ファイルのフルパス名を設定する.
503
504(4) プロジェクトのビルド
505
506(4-1) 設定後,「リビルド」メニューを選択しビルドを行う.
507
508ビルドが完了すると,このディレクトリ中に Jsp14sample1.mot または
509Jsp14sample1m.mot という名称のファイルが生成される.
510TMの設定としてソースファイルの依存性の設定を行っていないので,
511構築時は「リビルド」でビルドすることを推奨する.
512
513
5144.2.3 FlashStaを用いてフラッシュROMに書き込む
515
516開発用のパソコンとボードとを,RS-232Cケーブルを使って接続する.
517CNVSS ピンをジャンパーピンを使ってショートさせる.
518
519電源を接続し,電源スイッチをオンにする.そして FlashStaを起動する.
520Select Programメニューにてポートを選択して「OK」ボタンを押下する.
521ID Checkメニューが表示されたら「Refer..」ボタンを押下し,
522生成したMOTファイルを選択する.
523
524Select Program に戻ったら,「OK」ボタンを押下し M16C Flash Start
525メニューが表示する.
526まず,「Erase」ボタンを押下し,フラッシュROMをクリアする.
527その後,「Program..」ボタンを押下しプログラムの書き込みを行う.
528書き込みが終了したら,「Exit」ボタンを押下しFlashStaを終了させる.
529電源を切り,CNVSSピンからジャンパーピンを外す.
530
5314.2.4. sample1の実行
532
533パソコンにシリアル・ターミナルを立ち上げる.
534設定は以下の通り.
535
536 Baud rate:19200
537 Data:8 bit
538 Parity:none
539 Stop:1 bit
540
541Flow controlはOAKS16 MINIではnone,OAKS16ではnoneでもXob/Xoffのどちらかに
542設定すること.電源をå…
543¥ã‚Œã‚‹ã¨ï¼Œsample1が実行される.
544
545
5464.3 DOS窓からmakeコマンドを用いた構築
547
548GNU make を用いてM16C用のTOPPERS/JSPを構築する方法を示す.
549この方法は OAKS16 の場合のみ対応している.
550コンパイラはライブラリアンを含む NC30WAの版を前提としている.
551現在では,ルネサスエレクトロニクスのウェブサイトから無償評価版がå…
552¥æ‰‹å¯èƒ½ã§ã‚る.
553
554過去のコンパイラの Entry版ではライブラリアン lb30.exe が含まれないことが
555あるため,そのままビルドすることが出来ない.その場合はライブラリ化
556しないように Makefile (実際のファイル名は sample ディレクトリの
557Makefile.m16c-oaks16 ) を書き換える必
558要がある.
559
560構築にあたっては,コンフィギュレータ cfg.exe が cfg ディレクトリに,
5614.2.1 で示したツール,すなわち m16coffset.exe および m16cvec.exe が
562utils/m16c-renesas ディレクトリに,それぞれ存在していることが前提となる.
563通常は用意されているものを利用すればよい.
564また,開発ツール NC30WAはあらかじめインストールしておくことが必
565要である.
566
567
5684.3.1 開発ツールのå…
569¥æ‰‹
570
571ツールは以下のサイトからå…
572¥æ‰‹å¯èƒ½ï¼Ž
573
574GNU Make
575http://www.mingw.org/
576
577Active Perl
578http://www.activestate.com/
579
580
5814.3.2 サンプルプログラムの構築方法について
582
583サンプルプログラムの構築方法は基本的に doc/user.txt の 「7.4 サンプル
584プログラムの構築」で示された方法に準拠している.ただし,コンフィギュレ
585ーションスクリプト等の perl で書かれたスクリプトはそのまま Windows の
586DOS窓(WindowsXPでは「コマンドプロンプト」)の上では使用することが
587できない.そのため,utils/m16c-renesas ディレクトリに用意された,
588専用の Perlスクリプトを使用する.
589
5904.3.3 コンフィギュレーションスクリプトの実行
591
592 > mkdir OBJ
593 > cd OBJ
594 > perl ..\utils\m16c-renesas\configure.m16c
595
596何も引数を指定しない場合は
597-C m16c -S oaks16 -T renesas -p \perl\bin\perl
598というオプションを指定して configure を実行した場合と同じ動作を行う.
599
600この処理により,カレントディレクトリには以下のファイルが生成される
601 ・Makefile
602 ・サンプルプログラム用のコンフィギュレーションファイル(sample1.cfg)
603 ・サンプルプログラム本体(sample1.hおよびsample1.c)
604ここでMakefileの修正が必
605要ならば,修正を行うのは他のターゲットの場合と同じである.
606
6074.3.4 依存関係ファイルの生成およびサンプルプログラムのロードモジュール作成
608
609依存関係ファイル Makefile.depend およびロードモジュール jsp.mot を作成する
610には次のように実行する.MinGW の make を利用する場合,make の代わりに
611mingw32-make を実行する必
612要があるかもしれない.
613
614 > make depend
615 > make
616
617make depend の実行過程においてプリプロセッサ(cpp30.exe)を用いるが,
618ツールのインストールå…
619ˆã«å¿œã˜ã¦ï¼Œãƒ—リプロセッサコマンドのフルパス名を
620適切に設定する必
621要がある.
622
623設定はプロセッサ依存部ディレクトリ(config/m16c-renesas)にある Makefile.config
624の中の CPP という変数で行っている.この部分をインストール場所に応じて書き換える.
625
6264.3.5 フラッシュROM への書き込みおよびサンプルプログラムの実行
627
628構築した MOTファイルを FlashSta コマンド用いて,ボード上のフラッシュROMに
629書き込む手順からå…
630ˆã¯ä¸Šè¨˜ 4.2.3,4.2.4で説明した内
631容と同じである.
632
6334.3.6 OAKS16-MINIの対応について
634
635OAKS16-MINI 用のカーネルを構築する場合は,Makefile.m16c-oaks16_mini を
636使用する.OAKS16-MINI版のカーネルでは,メモリサイズ削減の為に,
637ログ機能はタスク化していない.そのため,コンフィギュレーション・ファイルを
638修正する必
639要がある.sample1.cfg 中の28行目の
640「#include "@(SRCDIR)/systask/logtask.cfg"」のの行を削除するか,
641またはコメント化してログ機能がタスク化しないよう修正を行った後,ビルドする.
642他の手順はOAKS16版と同様である.
643
6444.4 デバッガ
645
646OAKS16 および OAKS16-MINI には,KD30 デバッガが添付されている.
647このデバッガはフラッシュ ROM 上の KD30 モニターと UART1 を用いて
648通信を行いデバッグ機能を実現する.本カーネルはフラッシュROM 上に
649書き込みを行い実行する.カーネルを書き込む際,既存のモニタープログラムを
650上書きする為,カーネル実行時は KD30 デバッカは使用できない.
651
652再び KD30 を使いたい場合は,KD30 付属のモニタプログラムをフラッシュ ROM
653へ書き込む必
654要がある.
655
656なお,本カーネルは TOPPERS 教育 WG で開発された「TOPPERS初級実装
657セミナー」
658の教材に対応している.その為,教材で使用している「タスク・モニター」と
659併用することにより,TOPPERS/JSP 実行中のメモリ及び SFR の参ç…
660§ã‚„設定,
661タスクの管理や状æ…
662‹è¡¨ç¤ºãŒå¯èƒ½ã¨ãªã‚‹ï¼Žå¿…
663要な場合は「タスク・モニター」との
664併用を勧める.
665
6664.5 コンパイルスイッチ
667
668以下のコンパイルスイッチの設定が可能である.
669
670(1) NEED_API
671
672コンパイル時,NEED_API をマクロ定義すると api.h が cpu_config.h にインクルード
673される.これにより,ライブラリ化の為の分割コンパイルを抑止することができる.
674
675(2) EXTERNAL_SOFT_HOOK
676
677コンパイル時,EXTERNAL_SOFT_HOOKをマクロすると software_init_hook が
678ターゲット依存部で定義されなくなる.従って,ユーザ側でsoftware_init_hook
679の定義を与えることができる.
680
681(3) MON
682
683アセンブル時に値の定義を行う.通常は MON=0 として構築する.
684MON=1 とするとタスク切り替え時にタスクモニタリング用の関数呼び出しを行う
685ようになる.これは教育用のタスクモニタと併用する場合にこの設定を行う.
686
6875. ファイル構成
688
6895.1 ディレクトリ・ファイル構成
690
691(1) config/m16c-renesas
692
693 api.h 非ライブラリ化時のAPI定義
694 cpu_config.c M16Cプロセッサ依存部の C 関数
695 cpu_config.h M16Cプロセッサ依存部の構成定義
696 cpu_context.h M16Cプロセッサ依存部のコンテキスト操作
697 cpu_defs.h M16Cプロセッサ依存部のアプリケーション用定義
698 cpu_insn.h M16Cプロセッサのアセンブリ inline 関数
699 cpu_rename.def カーネルの内
700部識別名のリネームとその解除の定義リスト
701 cpu_rename.h カーネルの内
702部識別名のリネームの定義
703 cpu_support.a30 M16Cプロセッサのアセンブリ関数
704 cpu_unrename.h カーネルの内
705部識別名のリネーム解除の定義
706 Makefile.config Makefile の M16C依存定義
707 makeoffset.c offset.inc 生成サポート関数
708 start.a30 スタートアップモジュール
709 tool_config.h M16Cプロセッサの開発環境依存モジュール定義
710 tool_defs.h M16Cプロセッサの開発環境依存定義
711
712(2) config/m16c-renesas/oak16/
713
714 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
715 hw_serial.h OAKS16用SIOドライバのヘッダファイル
716 hw_timer.h OAKS16用タイマ操作ルーチン
717 Makefile.config Makefile の OAKS16ボード依存定義
718 Makefile.kernel カーネルのファイル構成の定義(M16C用)
719 oaks16.h M30620FCAFPプロセッサの定義
720 sfr_uart.c OAKS16用SIOドライバのC関数
721 sfr_uart.h OAKS16用SIOドライバのヘッダファイル
722 sys_config.c OAKS16ボード依存部の C 関数
723 sys_config.h OAKS16ボード依存部の構成定義
724 sys_defs.h OAKS16ボード依存部のアプリケーション用定義
725 sys_rename.def カーネルの内
726部識別名のリネームとその解除の定義リスト
727 sys_rename.h カーネルの内
728部識別名のリネームの定義
729 sys_unrename.h カーネルの内
730部識別名のリネーム解除の定義
731
732(3) config/m16c-renesas/oaks16_mini/
733
734 hw_serial.cfg SIOドライバのコンフィギュレーションファイル
735 hw_serial.h OAKS16-MINI用SIOドライバ
736 hw_timer.h OAKS16-MINI用タイマ操作ルーチン
737 Makefile.config Makefile の OAKS16-MINIボード依存定義
738 Makefile.kernel カーネルのファイル構成の定義(M16C用)
739 oaks16mini.h M30262F8FGプロセッサの定義
740 serial_mini.c 簡略型OAKS16-MINI用シリアルドライバー
741 sys_config.c OAKS16-MINIボード依存部の C 関数
742 sys_config.h OAKS18-MINIボード依存部の構成定義
743 sys_defs.h OAKS16-MINIボード依存部のアプリケーション用定義
744 sys_rename.def カーネルの内
745部識別名のリネームとその解除の定義リスト
746 sys_rename.h カーネルの内
747部識別名のリネームの定義
748 sys_unrename.h カーネルの内
749部識別名のリネーム解除の定義
750 syslog_mini.c 簡易型システムログプログラム
751
752(4) sample/
753
754 Makefile.m16c-oaks16
755 ライブラリ型 OAKS16用JSP を構築するための make ファイル
756
757(5) その他
758
759 tools/M16C-RENESAS/
760 utils/m16c-renesas/
761 これらについては,tools/M16C-RENESAS/README.txt を参ç…
762§ã®ã“と.
Note: See TracBrowser for help on using the repository browser.