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

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

initial

File size: 48.8 KB
Line 
1 = TOPPERS/JSPカーネル ユーザズマニュアル =
2 (H8Sターゲット依存部 (H8C(HEW)対応版))
3
4 (Release 1.4.4対応,最終更新: 29-Dec-2010)
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-2004 by Embedded and Real-Time Systems Laboratory
13 Toyohashi Univ. of Technology, JAPAN
14 Copyright (C) 2001-2007 by Industrial Technology Institute,
15 Miyagi Prefectural Government, JAPAN
16 Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering
17 Tomakomai National College of Technology, JAPAN
18
19 上記著作権者
20は,以下の (1)〜(4) の条件か,Free Software Foundation
21
22 によってå…
23¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
24 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
25 を改変したものを含む.以下同じ)を使用・複製・改変・再é…
26å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
27 利用と呼ぶ)することを無償で許諾する.
28 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
29 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
30 スコード中に含まれていること.
31 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
32 用できる形で再é…
33å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
35 者
36マニュアルなど)に,上記の著作権表示,この利用条件および下記
37 の無保証規定を掲載すること.
38 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
39 用できない形で再é…
40å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
41 と.
42 (a) 再é…
43å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
44マニュアルなど)に,上記の著
45 作権表示,この利用条件および下記の無保証規定を掲載すること.
46 (b) 再é…
47å¸ƒã®å½¢æ…
48‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
49 報告すること.
50 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
51 害からも,上記著作権者
52およびTOPPERSプロジェクトをå…
53è²¬ã™ã‚‹ã“と.
54
55 本ソフトウェアは,無保証で提供されているものである.上記著作権者
56お
57 よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
58 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
59 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
60
61 @(#) $Id: h8s-renesas.txt,v 1.2 2007/03/23 07:27:55 honda Exp $
62
63 ------------------------------------------------------------------------
641. H8Sターゲット依存部の概要
65
661. 1 ターゲットシステムと開発環境
67
68 本実装
69はgcc対応だったH8S依存部を(株)ルネサス ソリューションズ製の開
70発環境H8C(HEW)に対応させたものである。
71
72 H8Sプロセッサのターゲットシステムは、H8S/2339Fを搭載した以下のボード
73である。
74
75 ・株式会社ミスポ製 MiNET-H8S/2339F (H8S/2339F搭載)
76
77本実装
78は以下のモードで使用することを前提としている。
79 CPU動作モード:アドバンスドモード
80 割込み制御モード2
81他のモードで使用する場合は、アセンブラ部分を修正する必
82要がある。
83
841. 2 サポートする機能の概要
85
86 性能評価用システム時刻参ç…
87§æ©Ÿèƒ½ (vxget_tim)、割込みマスクの変更・参ç…
88§
89 (chg_ipm、 get_ipm)をサポートしているが、 割り込みの禁止と許可
90(dis_int、ena_int) はサポートしていない。
91
921. 3 他のターゲットへのポーティング
93
94 H8S/2000シリーズであれば、ポーティングは容易に出来ると思われる。
95
961. 4 シリアルポート (SCI)
97
98 H8S/2000シリーズにはSCI0〜SCI1(SCI2)の2本(3本)のシリアルポートが
99あり、user_config.hに定義しているTNUM_PORTにより何本使用するか指定でき
100る。現在の実装
101では3本まで使用できる。(下記の注意を参ç…
102§ï¼‰
103JSP カーネルのログ出力用にはSCI1を使用している。
104
105注意:
106 MiNET-H8S/2339Fでは、SCI0がH-UDIデバッグポートと競合している、SCI0の
107コネクタが実装
108されていない等の理由により、SCI0の動作確認はしていない。
109
110
111シリアルポートの設定を以下に示す。
112
113 ・ボーレート   38400[bps]
114 ・データ長    8ビット
115 ・ストップビット 1ビット
116 ・パリティなし
117
1182. H8S プロセッサ依存部の機能
119
120 カーネルとシステムサービス機能の中で、H8S依存の部分について解説する。
121
1222. 1 データ型
123
124 int型とunsigned int型のサイズは 16ビットである。また、処理系の制約か
125ら、64ビット整数はサポートしていない。
126
1272. 2 割込み管理機能と割込みハンドラ
128
129本実装
130では割込み制御モード2のみをサポートしている。
131(割込みモード0についてはH8と互換なので、H8ターゲット依存部 (H8C(HEW)
132対応版)が参考になると思われる。)
133
134user_config.hとuser_config.incで定義されるMAX_IPMマクロにより、カーネ
135ルが管理する割込みレベルが変更できる。
136IPM:Interrupt Priority Mask
137(処理系の仕様により、定義ファイルが2つあるので注意)
138
139  カーネル管理下の割込み = 割込みレベルがMAX_IPM 以下の割込み
140  カーネル管理外の割込み = プライオリティレベル(MAX_IPM+1)
141               以上の割込みとNMI
142
143初期化ルーチン内
144ではNMI以外の割込みはすべて禁止されているのに対して、
145CPUロック状æ…
146‹ã§ã¯ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ä¸‹ã®å‰²è¾¼ã¿ã®ã¿ãŒç¦æ­¢ã•ã‚Œã¦ã„る。
147(「カーネル管理外の割込み」についてはμITRON4.0仕様書を参ç…
148§ï¼‰
149å…
150·ä½“的には、CPUロック状æ…
151‹ã§ã¯EXRレジスタのIビットにMAX_IPMの値をセット
152し、さらにカーネル内
153のフラグ変数をセットしている。
154
155DEF_INHで指定する割込みハンドラ番号(inhno)は,H8Sでの例外ベクタ番号を
156表し,そのデータ型(INHNO)はunsigned int型に定義されている.
157DEF_INHで,例外ベクタ番号として有効でない値や,外部割込みに対応しない
158番号を指定した場合の動作は保証されない.
159
1602.2.1 割込みハンドラの登録方法
161
162jsp-1.4.1 H8S依存部(gcc版)では、割込みベクタテーブルを手動で編集して
163いたが、これをコンフィギュレーション時にDEF_INH( )の引数から自動生成す
164るよう仕様変更している。
165
166割込みハンドラを登録する作業手順
167 タイマ割込みを例に説明する。
168
169 (1) 割込みハンドラの記述
170
171   割込み要求をクリアする処理が必
172要な場合は割込みハンドラのC言語
173   ルーチン、またはそこから呼ばれる関数内
174に記述する方法を標準と
175   する。
176
177   タイマ割込みでの記述例:
178    jsp/systask/timer.c
179      timer_handler( )から呼び出されるhw_timer_int_clear( )
180      (jsp/config/h8s-renesas/hw_timer.h)
181
182
183 (2) コンフィギュレーション・ファイルの記述
184
185   コンフィギュレーション・ファイルの記述方法は他のプロセッサと同様
186   である。
187   ベクタ番号はjsp/config/h8-renesas/h8s2xxxf.hでマクロ定義している。
188   DEF_INH( )の第1引数の割込みハンドラ番号はプリプロセス後に整数定数
189   になっていなければならない。(自動割り付け非対応整数値パラメータ)
190   ベクタテーブル自動生成時もそれを仮定している。
191
192   タイマ割込みでの記述例:
193    jsp/systask/timer.cfg
194     DEF_INH(INHNO_TIMER, { TA_HLNG, timer_handler });
195
196
197 (3) 割込みプライオリティレベルの設定
198
199   初期化処理のcpu_initialize( )ですべての割込みをレベル0に初期化し
200   ている。
201   デバイスドライバの初期化処理で割込み要因毎のプライオリティ・レベ
202   ルを設定するための関数が用意されている。
203    
204   【C言語API】
205     void icu_set_ilv( UH ipr, BOOL mask, INT level )
206
207   【パラメータ】
208 UH ipr 設定するインタラプトプライオリティレジスタの
209 アドレスの下位16ビット
210 ( IPRA - IPRK マクロで設定 )
211 BOOL mask 設定するインタラプトプライオリティレジスタの
212 設定範囲(上位部分または下位部分)の選択
213 ( IPR_UPR、または、IPR_LOW マクロで設定 )
214 INT level 設定する割込みレベル ( 0 - 7 )
215
216   【リターンパラメータ】
217     なし
218
219   【機能】
220     インタラプトプライオリティレジスタの各例外要因別に、割込みレベル
221     設定を行う。
222     この関数を呼び出す前にcpu_config.hをインクルードする必
223要がある。
224
225   【タイマ割込みでの記述例】
226
227     jsp/config/h8s-renesas/hw_timer.h
228      hw_timer_initialize( )
229      icu_set_ilv( IPRF, IPR_UPR, TPU0_INT_LVL );
230
231   設定に用いる値はマクロ定義されている。
232   
233   ・IPRA〜IPRKレジスタのアドレス
234    jsp/config/h8s-renesas/h8s2339f.h
235 #define IPRA 0xfec4
236 #define IPRB 0xfec5
237 #define IPRC 0xfec6
238 #define IPRD 0xfec7
239 #define IPRE 0xfec8
240 #define IPRF 0xfec9
241 #define IPRG 0xfeca
242 #define IPRH 0xfecb
243 #define IPRI 0xfecc
244 #define IPRJ 0xfecd
245 #define IPRK 0xfece
246
247
2482.2.2 割込みマスクの変更・参ç…
249§
250
251H8S依存の機能として,EXRレジスタ中のIPMの値を変更するためのサービスコー
252ルchg_ipmと,参ç…
253§ã™ã‚‹ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールget_ipmをサポートしている.
254なお,IPMの値を表すデータ型IPMは,unsigned char型に定義されている.
255
256これらのサービスコールは,タスクコンテキストでCPUロック解除状æ…
257‹ã®å ´åˆ
258にのみ呼び出すことができる.chg_ipmによりIPMをレベル0以外(すなわち,
259何らかの割込みが禁止されている状æ…
260‹ï¼‰ã«ã—た場合でも,ディスパッチは禁止
261されず,chg_ipmにより変更したIPMの値は,ディスパッチ後のタスクに引き継
262がれる.
263例えば,あるタスクでIPMをレベル1に変更した後,何らかの割込みにより別の
264タスクに切り替わると,切り替わった後のタスクでもIPMはレベル1になる.
265
266chg_ipmをサポートするために,割込みハンドラの出å…
267¥å£å‡¦ç†ãªã©ã«ã‚ªãƒ¼ãƒ
268ヘッドを生じている.そこで,SUPPORT_CHG_IPMというマクロにより,これら
269のサービスコールをサポートするかどうかを切り替えられるようにしている.
270SUPPORT_CHG_IPMは,user_config.hおよびuser_config.incの中でマクロ
271定義されている.
272
273H8S依存の割込みマスクの変更・参ç…
274§ã®ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールの仕様は次の通り.
275
276(1) chg_ipm 割込みマスクの変更
277
278【C言語API】
279 ER ercd = chg_ipm(IPM ipm);
280
281【パラメータ】
282 IPM ipm 設定すべき IPM の値
283
284【リターンパラメータ】
285 ER ercd エラーコード
286
287【エラーコード】
288 E_CTX コンテキストエラー
289 E_PAR パラメータエラー(ipm が不正)
290
291【機能】
292
293IPM(Interrupt Priority Mask)を ipm で指定された値に設定する.
294IPMに指定した値が0〜MAX_IPMの範囲外の場合,E_PARエラーとなる.IPM を0
295以外に設定した場合でも,ディスパッチは禁止されない.また,設定したIPM
296の値は,ディスパッチ後も引き継がれる.ディスパッチを禁止したい場合には,
297dis_dspと併用すればよい.
298
299なお,このサービスコールを用いて,IPMをMAX_IPM(カーネル管理の割込みを
300すべて禁止)に設定してもCPUロック状æ…
301‹ã¨ã¯åŒºåˆ¥ã•ã‚Œã‚‹ã€‚(ディスパッチが
302禁止されない。)
303
304このサービスコールは,タスクコンテキストで CPUロック解除状æ…
305‹ã®æ™‚のみ呼
306び出すことができる.非タスクコンテキストや CPUロック状æ…
307‹ã§å‘¼ã³å‡ºã—た場
308合には,E_CTXエラーとなる.
309
310(2) get_ipm 割込みマスクの参ç…
311§
312
313【C言語API】
314 ER ercd = get_ipm(IPM *p_ipm);
315
316【パラメータ】
317 なし
318
319【リターンパラメータ】
320 ER ercd エラーコード
321 IPM ipm 現在の IPM の値
322
323【エラーコード】
324 E_CTX コンテキストエラー
325
326【機能】
327
328現在の IPM(Interrupt Priority Mask)の値を読み出し,ipm に返す.
329
330このサービスコールは,タスクコンテキストで CPUロック解除状æ…
331‹ã®æ™‚のみ呼
332び出すことができる.非タスクコンテキストや CPUロック状æ…
333‹ã§å‘¼ã³å‡ºã—た場
334合には,E_CTXエラーとなる.
335
336
3372. 3 CPU例外管理機能と CPU例外ハンドラ
338
339H8Sプロセッサ自体にCPU例外を扱う機能が備わっていないため、カーネルのH8S
340依存部もCPU例外をサポートしていない。従って、CPU 例外ハンドラの設定関
341数 define_exc( )は何もしない関数である。
342他機種との互換性のため、CPU例外ハンドラ番号のデータ型 (EXCNO) は
343unsigned int型に定義されている。
344
345
3462. 4 スタートアップモジュール
347
348 H8S依存のスタートアップモジュール (start.src) は次に示す初期化を実行し
349た後、カーネル (kernel_start) を起動する。ただし、 kernel_start から戻っ
350てくることは想定していない。
351
352 (1) スタックポインタの設定
353
354 (2) ハードウェア依存の初期化処理の呼出し
355      HARDWARE_INIT_HOOKマクロが定義されていれば、ハードウェア依
356     存の初期化処理を呼出す。このルーチンはカーネルを起動する前に、
357     ターゲット依存のハードウェア的な初期化を行うために用意し、そ
358     のラベル名をHARDWARE_INIT_HOOKマクロとして定義する。
359     HARDWARE_INIT_HOOKマクロの定義はsys_config.incで行うのを
360     標準とする。
361
362     また、HARDWARE_INIT_HOOKを呼び出す時点でRAMが使用できない場合
363     に対応するため、関数呼び出しではなくjmp命令を使用している。
364     従って、HARDWARE_INIT_HOOKから戻ってくるときもrts命令ではなく、
365     jmp命令を用いる。その際の戻りå…
366ˆç•ªåœ°ã®ãƒ©ãƒ™ãƒ«ã¯_clear_b_section
367     である。
368
369 (3) Bセクションの初期化
370 Bセクションのå…
371¨é ˜åŸŸã‚’ 0 クリアする。
372
373 (4) Dセクションの初期化
374 Dセクションを外部 RAM に転送する。
375
376 (5) ソフトウェア環境依存の初期化処理の呼出し
377      SOFTWARE_INIT_HOOKマクロが定義されていれば、ソフトウェア環
378     境依存の初期化処理を呼出す。この関数はカーネルを起動する前に、
379     ソフトウェア環境(ライブラリ等)依存の初期化を行うために用意す
380     る。例えば、ライブラリの初期設定などである。
381     その関数名をSOFTWARE_INIT_HOOKマクロとして定義する。
382     SOFTWARE_INIT_HOOKマクロの定義はsys_config.incで行うのを
383     標準とする。
384
3852. 5 割込み発生時のスタック使用量について
386
387 H8Sでは割込み受付時にハードウェアによって割込みマスクの設定が行われ
388るが割込み禁止になっていない。そのため、割込みのå…
389¥å£å‡¦ç†ï¼ˆã‚«ãƒ¼ãƒãƒ«ï¼‰ã§
390割込み禁止操作を行うが、その前に多重割込みがå…
391¥ã‚‹å¯èƒ½æ€§ãŒã‚る。
392
393  割込みのå…
394¥å£å‡¦ç†ã§å‰²è¾¼ã¿ç¦æ­¢å‰ã«ã‚¿ã‚¹ã‚¯ã‚¹ã‚¿ãƒƒã‚¯ã«ç©ã¾ã‚Œã‚‹å†…
395容
396   ・戻り番地
397   ・CCRレジスタ
398   ・EXRレジスタ(+リザーブ領域1バイト)
399   ・er0〜er3
400     計 22バイト
401     
402また、割込みの出口処理でタスクスイッチする場合はer4からer6の12バイトも
403タスクスタックに積まれる。
404(その後、å…
405ƒã®ã‚¿ã‚¹ã‚¯ã«æˆ»ã£ã¦ãã‚‹éš›ã«ã€ã‚¿ã‚¹ã‚¯ä¾‹å¤–処理ルーチンが起動され
406る場合はさらにタスクスタックの領域が必
407要になる。)
408
409MAX_IPMを7に設定した場合、最高7つの割込みがネストする。そのすべてが上
410記の割込み禁止前に受け付けられた場合、2つ目以降の割込みもスタック切り
411替え前のタスクスタックにレジスタが退避される。このときのタスクスタック
412の消費量は
413 
414 22バイト×7レベル + 12バイト = 116バイト
415
416となる。
417   
418
4193. システム依存部の機能
420
4213. 1 システムクロックドライバ
422
423 システムクロックドライバが isig_tim を呼出す周期は、 user_config.h内
424
425のTIC_NUME と TIC_DENO で定義されており、ディフォルトは 1[ms] 周期であ
426る。
427この定義を変更することで、isig_tim を呼出す周期を変更できる。 ただし、
428タイマ精度の単位で端数になる値を設定すると、 isig_tim の呼出し周期に誤
429差が発生する。
430
431【MiNET-H8S/2339F】
432タイマに供給されているクロック周波数は6144[kHz]であり
433(クロック24.576[MHz]の4分周)、タイマ精度は
434 (1,000,000/6144)[nsec]=約0.163[μsec]
435である。
436ディフォルトのクロックデバイスとして、H8S/2339FではTPU(16bitタイマ)を
437使用している。
438
439
4403. 2 性能評価用システム時刻参ç…
441§æ©Ÿèƒ½
442
443 H8Sでは、性能評価用システム時刻参ç…
444§æ©Ÿèƒ½ (vxget_tim) をサポートしてい
445る。
446
447【C言語API】
448  ER vxget_tim(SYSUTIM *p_sysutim);
449
450【パラメータ】
451 なし
452
453【リターンパラメータ】
454 SYSUTIM sysutim:リセットからの経過時間(μsec単位)
455
456【エラーコード】
457 E_CTX:非タスクコンテキストから呼び出した
458
459【機能】
460リセットからの経過時間をμsec単位で計測し、実行性能の計測機能を提供す
461る。SYSUTIM型は UW型(32 ビット符号なし整数型)であるため、μsec単位で換
462算するとリセットから約71分間毎にオーバーフローして、ゼロに戻る。2点間
463の実行時間を計測するときにこのオーバーフローが発生していないか注意が必
464
465要である。
466
467【MiNET-H8S/2339F】
468タイマ自体の精度は約0.163[μsec]であり、1μsec単位まで有効である。
469
4703. 3 シリアルインタフェースドライバ
471
472 H8S/2339Fには SCI0〜SCI2 の 3 本のシリアルポートがあり、
473user_config.h に定義している TNUM_PORT により何本使用するか指定できる。
474現在の実装
475では 3本まで使用できる。 JSP カーネルのログ出力用には SCI1
476を使用している。
477シリアルのポート番号とデバイス番号の対応は以下の通りである。
478 ・ポート1:SCI0
479 ・ポート2:SCI1
480 ・ポート3:SCI2
481
482
483注意:
484 MiNET-H8S/2339Fでは、SCI0がH-UDIデバッグポートと競合している、SCI0の
485コネクタが実装
486されていない等の理由により、SCI0の動作確認はしていない。
487
4883. 4 メモリマップ
489
4903. 4. 1 MiNET-H8S/2339Fのメモリマップ
491
492 (1) デバッグモード(JTAGデバッグ使用時)
493  モード4
494  内
495蔵ROM無効モード
496  外部RAMをCS0空間にé…
497ç½®
498  外部バス幅
499:16ビット
500
501 0x00,0000 - 0x00,ffff 外部RAM 1MB
502              ベクタテーブル、P,C,Dセクション
503              R(D),Bセクション
504 0xff,7c00 - 0xff,fbff 内
505蔵RAM 32KB
506              非タスクコンテキスト用スタックエリア
507
508  デバッグモードでは、プログラムをRAM上にダウンロードして実行するこ
509  とを想定している。そのため、ダウンロード前にデバッグツールを用いて
510  バスステートコントローラの初期化を行う必
511要がある。
512  バスステートコントローラの設定例についてはボード付属のマニュアル
513  p10 「4.4 レジスタ設定例」やsys_support.srcを参ç…
514§
515
516
517 (2) リリースモード(ROM化)
518  モード6
519  内
520蔵ROM有効モード
521  外部RAMをCS1空間にé…
522ç½®
523  外部バス幅
524:16ビット
525
526 0x00,0000 - 0x03,ffff 内
527蔵ROM 384kB
528 設定によっては0x06,ffffまで使用できる。
529              ベクタテーブル、P,C,Dセクション
530 0x20,0000 - 0x2f,ffff 外部RAM 1MB
531              R(D),Bセクション
532 0xff,7c00 - 0xff,fbff 内
533蔵RAM 32KB
534              非タスクコンテキスト用スタックエリア
535
536
5374. サンプルプログラムの実行手順
538
5394. 1 開発環境
540
541 開発環境は、Windows 2000上で、(株)ルネサス ソリューションズ製の開発
542環境を用いた。
543 本開発に用いたツールのバージョンを以下に示す。
544
545 ・コンパイラ、アセンブラ、最適化リンケージエディタ
546   型番:R0C40008XSW06R
547   バージョン:V.6.1.2
548 ・統合開発環境 HEW4.02.00.022
549
550また、他にも下記のツールが必
551要になる。
552 ・MinGW
553 コンフィギュレータをビルドするために必
554要となる。
555 通常は既にコンパイル済みのものが用意されているため,そちらを
556 利用すればよい.
557 MinGW (Minimalist GNU for Windows)
558 http://www.mingw.org/
559 http://sourceforge.net/projects/mingw/ (インストーラのå…
560¥æ‰‹å…
561ˆ)
562
563 ・Windowsのコマンド・プロンプトで動作するPerl
564   下記の4.3 (1)の作業で使用する。
565   Active Perl v5.8.8
566  é…
567å¸ƒå…
568ƒã€€http://www.ActiveState.com
569
5704. 2 コンフィギュレータのビルド
571
572user.txt を参ç…
573§ã®ã“と。
574
5754. 3 サンプルプログラムのビルド
576(1) 環境設定
577 Perlのインタプリタへのパス設定を行う。
578
579(2) HEW上でのビルド
580
581ワークスペース・ファイルを開く
582 jsp/tools/H8S-RENESAS/H8S-RENESAS.hws
583 ワークスペース作成時とディレクトリが異なる旨の警告が出るが無視する。
584 
585 ※ ツールチェーンのバージョンが異なる旨の警告が出る場合
586   上記のバージョンより古いツールチェーンでの動作は未確認である。
587
588このワークスペースには4つのプロジェクトが登録されている。
589 ・offset:TCB構造体内
590のオフセットを求める。
591      カーネルソースコードをAPI毎にコピーする。
592 ・libkernel:カーネル・ライブラリのビルドを行う。
593 ・configuration:カーネル・コンフィギュレーション、ベクタテーブルの
594          自動生成を行う。
595 ・sample:サンプル・アプリケーションのビルドを行う。
596
597プロジェクトの依存関係のため、以下の順番でビルドする。
598 1.libkernelプロジェクトをアクティブプロジェクトに設定する
599 2.libkernelプロジェクトをビルドする
600 3.sampleプロジェクトをアクティブプロジェクトに設定する
601 4.sampleプロジェクトをビルドする
602
603手順1と2は最初の1回のみでよく、アプリケーション部分のみソー
604スコードを変更した場合はリビルドする必
605要はない。
606configurationプロジェクトとoffsetプロジェクトは依存プロジェ
607クトとして自動的にビルドされる。
608
609sampleプロジェクトのビルドが成功すると、
610 ・実行ファイル sample1.abs
611 ・Sレコードファイル sample1.mot
612が生成されるよう設定してある。
613
614注意:
615 libkernelのビルドよりå…
616ˆã«offsetプロジェクトをビルドする必
617要があるが、
618プロジェクト間の依存関係を設定してもsampleプロジェクトを起点とした場合
619(依存関係がネストしている場合)は正しい順序で実行されないので、手動で
620libkernelプロジェクトを予めビルドしておく。
621
622
623(3) ターゲット・ボードのダウンロード
624
625ボードやデバッグツールのマニュアルを参ç…
626§ã€‚
627
628
6295. ファイル構成
630
6315. 1 ディレクトリ・ファイル構成
632
633 (1) config/h8s-renesas/
634
635 cpu_config.c H8Sプロセッサ依存部のC関数
636 cpu_config.h H8Sプロセッサ依存部の構成定義
637 cpu_config.inc  上記のアセンブラ用定義
638 cpu_context.h H8Sプロセッサ依存部のコンテキスト操作
639 cpu_defs.h H8Sプロセッサ依存部のアプリケーション用定義
640 cpu_insn.h H8Sプロセッサの特殊命令の関数定義
641 cpu_support.src H8Sプロセッサのアセンブリ関数
642 cpu_rename.def カーネルの内
643部識別名のリネームとその解除の
644          定義リスト
645 cpu_unrename.h カーネルの内
646部識別名のリネーム解除の定義
647 cpu_rename.h カーネルの内
648部識別名のリネームの定義
649 cpu_unrename.h カーネルの内
650部識別名のリネーム解除の定義
651 cpu_rename.inc  上記のアセンブラ用定義
652 h8s.h H8Sプロセッサのå…
653±é€šå®šç¾©
654 h8s2339f.h H8S/2339Fプロセッサの定義
655 h8s2339f.inc 上記のアセンブラ用定義
656 h8s_sil.h   H8S内
657部レジスタアクセスルーチン
658 h8s_sil.h   DDRレジスタアクセスルーチン
659 start.src スタートアップモジュール
660 tool_config.h H8Sプロセッサの開発環境依存モジュール定義
661 tool_defs.h H8Sプロセッサの開発環境依存定義
662
663 makeoffset.c offset.inc生成サポート用ソースファイル
664 vector_header.src 割込みベクタテーブルのヘッダー部分
665
666 util.h   ビット番号などの定義
667 util.inc    上記のアセンブラ用定義
668
669 hw_serial.cfg SCIのコンフィギュレーションファイル
670 hw_serial.h SCIの構成定義
671 hw_serial.c SCIの関数定義
672 h8s_sci.h    シリアルドライバ(PDIC)
673 h8s_sci.c    シリアルドライバの関数定義
674
675 hw_timer.h TPUの構成定義
676 h8s_tpu.h    タイマドライバ(PDIC)
677
678 (2) config/h8s-renesas/minet_h8s_2339f/
679 (株)ミスポ MiNET-H8S/2339Fボードの依存部分
680
681 minet_h8s_2339f.h MiNET-H8S/2339Fボード依存の定義
682 sys_config.c MiNET-H8S/2339Fボード依存部のC関数
683 sys_config.h MiNET-H8S/2339Fボード依存部の構成定義
684 sys_config.inc  上記のアセンブラ用定義
685 sys_defs.h MiNET-H8S/2339Fボード依存部のアプリケー
686          ション用定義
687 sys_support.src MiNET-H8S/2339Fボード依存部のアセンブリ関数
688 sys_rename.def カーネルの内
689部識別名のリネームとその解除の
690          定義リスト
691 sys_rename.h カーネルの内
692部識別名のリネームの定義
693 sys_unrename.h カーネルの内
694部識別名のリネーム解除の定義
695 sys_tool_defs.h デバッグ環境依存の定義
696
697 以下は、ユーザーが編集する必
698要があるファイル
699 user_config.h  ユーザー・コンフィギュレーション情
700報の定義
701 user_config.inc 上記のアセンブラ用定義
702
703 (3) utils/
704     ビルドに必
705要なユーティリティ群
706
707  h8/      gcc版とå…
708±é€šã®ã‚¹ã‚¯ãƒªãƒ—ト
709  grep_def_inh.pl  Perlスクリプト生成用フィルタ
710
711  h8-renesas/ H8C依存のスクリプト(H8プロセッサとå…
712±é€šï¼‰
713  copy_kernel_source.bat
714           カーネルのソースコードをAPI毎にコピー
715           するバッチファイル
716
717  genoffset    TCB構造体内
718のオフセットを算出する
719           perlスクリプト
720
721  genvector.pl   ベクタテーブル生成用スクリプト
722
723  h8s-renesas/ H8C依存のスクリプト
724  gen_intentry.pl 割込みå…
725¥å£å‡¦ç†ç”Ÿæˆç”¨ã‚¹ã‚¯ãƒªãƒ—ト
726
727 (4) tools/H8S-RENESAS/
728 HEW4.0用のワークスペース・ディレクトリ
729  (株)ミスポ MiNET-H8S/2339F
730
731 readme.txt
732  ビルド手順を示したreadmeファイル
733 H8S-RENESAS.hws
734  ワークスペース・ファイル
735 sample1.cfg
736  サンプル・アプリケーションのコンフィギュレーション
737  ファイル
738 sample1.c
739  サンプル・アプリケーションのC言語ソース・ファイル
740 sample1.h
741  サンプル・アプリケーションのインクルード・ファイル
742
743 (5) tools/H8S-RENESAS/offset/
744     以下の処理を行うプロジェクト・ディレクトリ
745      ・TCB構造体内
746のオフセット算出
747      ・カーネル・ソースコードをAPI毎にコピー
748     
749 call_copy_kernel_source.bat
750   copy_kernel_source.batを呼び出すためのバッチファイル
751
752 call_genoffset.bat
753   genoffsetスクリプトを呼び出すためのバッチファイル
754
755      Debug/ デバッグ用ビルドディレクトリ
756       offset.inc  TCB構造体内
757のオフセット定義ファイル
758
759      Release/ デバッグ用ビルドディレクトリ
760       offset.inc  TCB構造体内
761のオフセット定義ファイル
762
763 (6) tools/H8S-RENESAS/libkernel/
764     カーネル・ライブラリのビルドを行うプロジェクト・ディレクトリ
765
766     kernel_source/   中間ファイルを格納するディレクトリ
767
768 (7) tools/H8S-RENESAS/configuration
769     カーネル・コンフィギュレーションを行うプロジェクト
770     ディレクトリ
771     
772 call_configuration.bat
773  コンフィギュレータを呼び出すためのバッチファイル
774
775      Debug/ デバッグ用ビルドディレクトリ
776       kernel_id.h    ID自動割付けの定義ファイル
777       debug_kernel_cfg.c コンフィギュレータの出力結果
778       debug_vector.src 自動生成された割込みベクタテーブル
779
780      Release/ デバッグ用ビルドディレクトリ
781       kernel_id.h    ID自動割付けの定義ファイル
782       relase_kernel_cfg.c コンフィギュレータの出力結果
783       release_vector.src 自動生成された割込みベクタテーブル
784
785 (8) tools/H8S-RENESAS/sample
786     サンプル・アプリケーションのビルドを行うプロジェクト・ディレクトリ
787     
788
7896. アプリケーション開発者
790向けの情
791å ±
792
793アプリケーション開発者
794に有益と思われる情
795報について述べる。
796
7976.1 カーネルの設定変更方法
798
799H8S依存部では、様々
800な設定変更が容易にできるよう、設定箇所をを以下の2つ
801のファイルにまとめている。
802 ・user_config.h  C言語向け設定ファイル
803 ・user_config.inc アセンブラ言語用設定ファイル
804
805ユーザーはこの2つのファイル内
806のマクロ定義を変更するだけで、カーネルの
807ソースファイルを読まなくてもある程度までカーネルの設定を変更できる。
808設定項
809目によってはC言語用とアセンブラ言語用の両方の定義が必
810要になるの
811で注意。
812
813以下、設定ファイル内
814の各マクロの意味を述べる。
815
816・å…
817¨èˆ¬çš„な設定項
818目
819
820(1) SUPPORT_CHG_IPM
821chg_ipmをサポートするかどうかの定義
822設定ファイル:user_config.h、user_config.inc
823
824(2) SUPPORT_VXGET_TIM
825vxget_timをサポートするかどうかの定義
826この設定を変更した場合は、ファイル分割を再度行う必
827要がある。
828設定ファイル:user_config.h
829
830(3) STACKTOP
831非タスクコンテキスト用スタックポインタの初期値
832設定ファイル:user_config.inc
833
834(4) MAX_IPM
835カーネルが管理する割込みの最高優å…
836ˆãƒ¬ãƒ™ãƒ«
837  カーネル管理下の割込み = 割込みレベルがMAX_IPM 以下の割込み
838  カーネル管理外の割込み = プライオリティレベル(MAX_IPM+1)
839               以上の割込みとNMI
840
841設定ファイル:user_config.h, user_config.inc
842
843
844・シリアルポート関連の設定項
845目
846
847(1) TNUM_PORT、TNUM_SIOP
848サポートするシリアルデバイスの数(最大 3)
849 TNUM_PORT : シリアルドライバ(serial.c)、つまり GDICレベルでサポート
850       するシリアルポートの数
851 TNUM_SIOP : PDICレベル(プロセッサ内
852蔵SIO)でサポートするシリアルI/O
853        ポートの数(現在の実装
854では最大3)
855
856設定ファイル:user_config.h
857
858以下、ポート2の設定はTNUM_PORTを2に設定した場合のみ有効である。
859(同様にポート3の設定はTNUM_PORTを3に設定した場合のみ有効である。)
860(2) BAUD_RATE0、BAUD_RATE1、BAUD_RATE2
861SCI0, SCI1, SCI2のボーレート [bps]
862設定ファイル:user_config.h
863
864(3) SCI0_INT_LVL、SCI1_INT_LVL、SCI2_INT_LVL
865SCI0, SCI1, SCI2の割込みプライオリティ・レベル
866設定ファイル:user_config.h
867
868(4) LOGTASK_PORTID
869システムログを出力するシリアルポート番号
870設定ファイル:user_config.h
871
872(5) POL_PORTID
873低レベル出力(ポーリング出力)に用いるシリアルポート番号
874設定ファイル:user_config.h
875
876(6) OMIT_SCI0
877このマクロが定義されるとシリアルドライバからSCI0が省略される。
878MiNET-H8S/2339F依存部ではデフォルトでこのマクロを定義している。
879設定ファイル:sys_tool_defs.h
880
881
882・タイマ関連の設定項
883目
884
885(1) TIC_NUME、TIC_DENO
886タイムティックの周期の分子、分母
887設定ファイル:user_config.h
888
889(2) TPU0_INT_LVL
890タイマ割込みTPU0のプライオリティ・レベル
891設定ファイル:user_config.h
892
893・実行環境に関する定義
894
895 以下のマクロは開発環境のアセンブラ・オプションとして定義するのを
896 標準とする。
897 (デバッグビルドとリリースビルドで切り替える。)
898
899(1) RAM
900デバッグ環境でプログラムがRAM上にダウンロードされるか否かの定義
901このマクロが定義されている場合はスタートアップルーチンでバスステートコ
902ントローラの初期化をスキップする。
903
904(2) USE_DEBUGGER
905このマクロが定義されている場合はデバッガ上で実行することを意味し、exr
906のTビットを考æ…
907®ã™ã‚‹ã€‚
908
909
9106.2 アプリケーション向けに提供される機能
911
912H8S依存部ではアプリケーションを開発しやすくするため、以下の機能を提供し
913ている。
914
9156.2.1 微少時間待
916ち
917
918機種非依存部のsil.hでプロトタイプ宣言しているsil_dly_nse関数は引数が
919UINT型であり、int型が2バイトであるこの処理系では約65μsecまでしか表現
920できない。これより長い時間待
921ちを行うため、引数をUW型に変更した別関数
922sil_dly_nse_longを用意している。どちらもnsec単位で待
923ち時間を指定する。
924t_services.hやs_services.hをインクルードすることにより(cpu_defs.hを介
925して)利用できる。
926
927【C言語API】
928  void sil_dly_nse_long(UW dlytim);
929
930【パラメータ】
931 UW dlytim    待
932ち時間[nsec]
933
934【リターンパラメータ】
935 なし
936
937【エラーコード】
938 なし
939
940【機能】
941
942ソフトウェア・ループにより時間待
943ちを行う。
944同様の機能を提供するsil_dly_nse関数は最大約65μsecまで待
945ち時間を指定で
946きるのに対して、sil_dly_nse_long関数は約4.3secまで指定できる。
947
9486.2.2 I/OポートのDDRレジスタへのアクセス補助機能
949
950H8SのI/Oポートのデータ・ディレクション・レジスタDDRは書き込み専用であり、
951そのままでは所望のビットだけを変更することができない。
952(bset,bclr命令でも回避不可)
953また、カーネルのスタートアップルーチンでもいくつかのDDRレジスタに対し
954て設定を行っているため、そのままではカーネルとアプリケーションの間で整
955合性を保つことができない。
956そのため、本実装
957では、メモリ上にテンポラリを用意して、DDRの現在値を保
958持する方法を採っている。ポート番号はIO_PORT_ID型にtypedefされており、
959IO_PORT1〜IO_PORTGののいずれかを指定する。(ポート4はå…
960¥åŠ›å°‚用のため、
961DDRレジスタがないので欠番としている。)ポート番号として、これら以外の
962値を指定した場合はassert文でエラーとなる。
963
964(1) sil_reb_ddr  DDRレジスタの読み出し
965
966【C言語API】
967  UB sil_reb_ddr(IO_PORT_ID port);
968
969【パラメータ】
970 IO_PORT_ID port    ポート番号
971
972【リターンパラメータ】
973 DDRレジスタの値
974
975【エラーコード】
976 なし
977
978【機能】
979
980portで指定されるポート番号のDDRレジスタの値を読み出す。
981
982(2) sil_wrb_ddr  DDRレジスタへの書き込み
983
984【C言語API】
985  void sil_wrb_ddr(IO_PORT_ID port, UB data);
986
987【パラメータ】
988 IO_PORT_ID port   ポート番号
989 UB data     書き込む値
990
991【リターンパラメータ】
992 なし
993
994【エラーコード】
995 なし
996
997【機能】
998
999portで指定されるポート番号のDDRレジスタに値dataを書き込む。
1000
1001(3) sil_anb_ddr  DDRレジスタのAND演算
1002
1003【C言語API】
1004  void sil_anb_ddr(IO_PORT_ID port, UB data);
1005
1006【パラメータ】
1007 IO_PORT_ID port   ポート番号
1008 UB data     AND演算を行う値
1009
1010【リターンパラメータ】
1011 なし
1012
1013【エラーコード】
1014 なし
1015
1016【機能】
1017
1018portで指定されるポート番号のDDRレジスタに対して、値dataとのAND演算を
1019行う。
1020
1021(4) sil_orb_ddr  DDRレジスタのOR演算
1022
1023【C言語API】
1024  void sil_orb_ddr(IO_PORT_ID port, UB data);
1025
1026【パラメータ】
1027 IO_PORT_ID port   ポート番号
1028 UB data     AND演算を行う値
1029
1030【リターンパラメータ】
1031 なし
1032
1033【エラーコード】
1034 なし
1035
1036【機能】
1037
1038portで指定されるポート番号のDDRレジスタに対して、値dataとのOR演算を
1039行う。
1040
1041
10427. カーネル移植者
1043向けの情
1044å ±
1045
1046 H8S依存部を他のターゲット・ボードへを移植する際に必
1047要な情
1048報を以下に
1049述べる。
1050
10517.1 マクロ定義
1052
1053(1) HARDWARE_INIT_HOOK
1054スタートアップルーチンからハードウェア依存の初期化処理を呼び出すときは、
1055そのå…
1056ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’マクロ定義する。
1057(GNU ldのPROVIDE命令と同等の機能がないため)
1058定義ファイル:sys_config.inc
1059
1060(2) SOFTWARE_INIT_HOOK
1061スタートアップルーチンからソフトウェア環境(特にライブラリ)依存の処理を
1062呼び出すときは、そのå…
1063ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’マクロ定義する。
1064定義ファイル:sys_config.inc
1065
1066(3) SOFTWARE_TERM_HOOK
1067atexit( )から呼び出す処理が外部定義されている場合は、その関数名をマクロ
1068定義する。atexit( )では
1069 ・外部定義があれば、それを呼び出す
1070 ・外部定義がなければ、何もしない(空の定義)
1071定義ファイル:sys_config.h
1072
1073(4) H8S_BASE_ADDR
1074内
1075蔵レジスタのアドレスの上位2バイト
1076将来、CPU動作モードをノーマルモードにもできるよう拡張性を持たせている。
1077定義ファイル:sys_config.inc
1078
1079(5) SIL_DLY_TIM1, SIL_DLY_TIM2
1080sil_dly_nse_longsで用いる定数
1081定義ファイル:sys_config.inc
1082
1083(6) SYS_SYSCR
1084SYSCRの初期値
1085定義ファイル:minet_h8s_2339f.h
1086
1087(7) CPU_CLOCK
1088プロセッサに供給されるクロック周波数 [Hz]
1089設定ファイル:minet_h8s_2339f.h
1090
1091(8) TIMER_CLOCK
1092タイマに供給されるクロック周波数[kHz]
1093設定ファイル:minet_h8s_2339f.h
1094
1095以下のシリアル関連のマクロ定義は、クロック周波数とボーレートから決まる
1096値であり、アプリケーションプログラマから隠蔽するため、minet_h8s_2339f.h
1097で定義している。
1098(user_config.hにå…
1099¥ã‚Œã‚‹ã¨ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¨ã£ã¦ç…
1100©é›‘になる。)
1101
1102(9) BRR0_RATE, BRR1_RATE
1103シリアルポートのBRRレジスタ値
1104
1105(10) SCR0_CKS, SCR1_CKS
1106SCRレジスタのCKS0,CKS1ビット
1107
1108(12) DDRアクセスルーチンのための定数定義
1109
1110(a) DDRレジスタのアドレス
1111DDRレジスタのアドレスを以下のマクロ名P1DDR〜PGDDRで定義する。
1112定義ファイル:sys_config.hからインクルードされるファイル
1113       h8s2xxxf.hで定義するのを標準とする。
1114
1115(b) DDRレジスタの初期値
1116スタートアップルーチン実行直後のDDRレジスタの値をマクロ名
1117P1DDR0〜PGDDR0で定義する。
1118定義ファイル:minet_h8s_2339f.h
1119
11207.2 ビルド用のスクリプトについて
1121
1122(a) jsp/tools/H8S-RENESAS/configuration/call_configurator.bat
1123
1124HEWでは、(ワークスペース・ディレクトリの外にある)外部ツールを相対パ
1125ス指定で呼び出せないため、このようなバッチファイルを介して、
1126 ・コンフィギュレータ
1127 ・Perlスクリプト
1128を呼び出している。
1129以下のxxxの部分を移植の際に変更する必
1130要がある。
1131
1132 ・システム依存部のディレクトリ名
1133   cfg.exe -s %1 -c -obj -cpu h8s -system xxx
1134   xxxにはシステム依存部のディレクトリ名がå…
1135¥ã‚‹ã€‚
1136
1137 ・ベクタテーブルのサイズ
1138   genvector.pl -s xxx
1139   xxxにはベクタテーブルのサイズがå…
1140¥ã‚‹ã€‚
1141
1142また、環境によってはPerlのインタプリタへのパス設定も必
1143要になる可能性が
1144ある。
1145
1146(b) jsp/utils/h8s-renesas/genvector.pl
1147
1148ベクタテーブル生成のためのPerlスクリプトgenvector.plの仕様
1149 -s n ベクターテーブルのサイズ
1150 nは整数定数を仮定しており、それ以外の引数が与えられた
1151 場合の動作は未定義である。
1152
1153(c) vector.src内
1154で用いられているマクロの仕様
1155
1156C言語ルーチンの関数名からå…
1157¥å£å‡¦ç†ã‚’生成するためのマクロINTHDR_ENTRYが
1158用意されている。スクリプトgenvector.plは、引数intmaskの値がintmask.inc
1159内
1160に****_intmaskの名でマクロ定義されていると仮定している。
1161  
1162   【アセンブラ言語でのAPI】
1163     INTHDR_ENTRY c_routine
1164
1165   【パラメータ】
1166     c_routine:C言語ルーチンの関数名
1167
1168   【展開結果】
1169     割込みのå…
1170¥å£å‡¦ç†
1171
1172   【機能】
1173     C言語ルーチンの関数名からå…
1174¥å£å‡¦ç†ã‚’生成する。
1175
1176・備考
1177 ベクタテーブルとå…
1178¥å£å‡¦ç†ã‚’vector.srcにまとめた結果、ラベル
1179_kernel_****_entryはグローバルにå…
1180¬é–‹ã™ã‚‹å¿…
1181要がなくなったため、ローカ
1182ルラベルとしている。それに伴ないcpu_config.hのINT_ENTRYマクロではå…
1183±é€š
1184部とのインターフェースを合わせるため、ダミーのラベル名を使用している。
1185
1186
11878. 制限事項
1188
1189
1190・ホストマシンのOS
1191 Windows9x系はサポートしない。
1192
1193・コンフィギュレータのチェッカ(chk)は実装
1194していない。
1195
1196・HEWが提供する内
1197部レジスタ定義ファイルには対応していない。
1198 (gcc版とデバイスドライバをå…
1199±æœ‰ã™ã‚‹ãŸã‚ï¼‰
1200
1201・64ビット整数はサポートしない。
1202 (処理系の制限事項
1203)
1204
1205・相対時間について
1206 RELTIM型が2バイトのため、(1msec単位で換算すると)相対時間が約65秒に
1207制限される。RELTIM型を4バイトにしたい場合はjsp/include/itron.hにある
1208RELTIM型の定義を変更する。
1209
1210変更前:typedef UINT RELTIM; /* 相対時間 */
1211変更後:typedef UW RELTIM; /* 相対時間 */
1212
1213・atexit の処理とデストラクタの実行
1214 (tool_config.hのcall_atexit())
1215 他機種ではカーネルライブラリのリビルドを行わなくても、
1216software_term_hook()の定義があれば、自動的に呼び出されるようになってい
1217るなっているが、h8s-renesasではsoftware_term_hook()に相当する関数名を
1218マクロSOFTWARE_TERM_HOOKとして定義し、カーネルライブラリをリビルドする
1219必
1220要がある。
1221 詳しくは「7.1 マクロ定義」の「(3) SOFTWARE_TERM_HOOK」を参ç…
1222§ã€‚
1223
1224
12259. 注意事項
1226
1227
1228・システムログ機能について
1229int型が2バイトのため、システムログ機能(syslog, syslog_n)の%d, %u, %x,
1230 %Xによる整数表示では2バイトデータしか表示できない。2バイトより大きい
1231データを表示する場合は、%ld, %lxを使用する。
1232
1233
1234
1235変更履歴
1236
1237'05/12/09 サポート開始
1238
1239'05/12/28 Release1.4.2
1240
1241'07/03/xx Release1.4.3
1242 修正
1243 ・ベクタテーブル自動生成
1244  ・perlスクリプトをgcc版と完å…
1245¨ã«å…
1246±é€šåŒ–
1247    ・0ベクタ問題に対応
1248    ・ベクタサイズの引数チェックを追加
1249  ・処理系毎の改行コードの違いに対応
1250  ・DEF_INH文の途中で改行があるとパースに失敗する問題を修正
1251  ・filter1.plとfilter2.plを1つにまとめ、grep_def_inh.plに改名
1252   (gcc版とHEW版で個別にfilter2.plを用意する必
1253要がなくなった)
1254  ・移植性を考æ…
1255®ã—て、genvector.plの処理を2つに分割
1256     ・genvector.pl:ベクタテーブルの生成(H8版とå…
1257±é€šåŒ–)
1258     ・gen_intentry.pl:割込みのå…
1259¥å£å‡¦ç†ï¼ˆINTENTRY)の生成
1260    ・これに伴ない、grep_def_inh.plとのインターフェースを変更
1261 ・ビルド手順
1262   ・カーネル・ライブラリを関数単位にリンクできるようビルド手順を変更
1263    これにより、バッチファイルからコンパイラの呼び出しが不要になった。
1264   ・API毎のファイルコピー処理にバッチファイルを使用すると
1265    無用なメッセージが大量に表示されるため、perlで処理する
1266    よう変更
1267   ・Releaseビルドで最適化オプションが設定されていなかったミスを修正
1268    (HEWでプロジェクトの追加、削除を行うとビルドオプションが
1269     ご破算になり、再設定し忘れていた。)
1270 ・特殊レジスタの操作を処理系純正のライブラリに変更
1271 ・シリアルドライバ
1272   ・SCI2をサポート(最大TNUM_PORT=3)
1273   ・POL_PORTIDを新設
1274 ・SILのメモリ空間アクセス関数を機種依存部で定義
1275   コンパイラの警告を回避するため
1276 ・DDRレジスタ・アクセス・ルーチン
1277   ・I/Oポートの本数TNUM_IO_PORTの定義場所をh8s23xxf.hに移動
1278   ・TNUM_IO_PORTの値を修正
1279 ・サンプルプログラム
1280   ・'Z'コマンド
1281     直接kernel_exit()を呼んで、プログラム終了
1282
Note: See TracBrowser for help on using the repository browser.