この「readme.htm」はHEW3、HEW4(C/C++ Compiler Version 6.0)版の組み込み型モニタをカスタマイズするのに必要な情報が記載されています。
組み込み型モニタをビルドする前に必ずお読みください。
なお、組み込み型モニタ自体の機能については「monitor.htm」を参照ください。
- ユーザイニシャライズモジュールの必要性
- C言語によるユーザイニシャライズモジュールの修正
- アセンブリ言語によるユーザイニシャライズモジュールの修正
- リンケージサブコマンドファイルの修正
- 組み込み型モニタの機能選択
- 組み込み型モニタのビルド
- printf関数、scanf関数のサポート
問い合わせ先
ユーザイニシャライズモジュールの必要性
組み込み型モニタを外部拡張モードで動作させる場合、必ずユーザイニシャライズモジュールの修正が必要です。
ただし、H8/300H Tinyシリーズは外部拡張モードがないため、ユーザイニシャライズモジュールを変更することが殆どありません。
もし、組み込み型モニタ起動前に実行したい処理があるときだけ、ユーザイニシャライズモジュールを修正してください。
それ以外の場合はリンケージサブコマンドファイルの修正の項にお進みください。
ユーザイニシャライズモジュールをC言語で記述する場合、C言語によるユーザイニシャライズモジュールの修正の項にお進みください。
ユーザイニシャライズモジュールをアセンブリ言語で記述する場合、アセンブリ言語によるユーザイニシャライズモジュールの修正の項にお進みください。
先頭にもどる
C言語によるユーザイニシャライズモジュールの修正
C言語のユーザイニシャライズモジュールはファイル名「monitor.c」の中にあるINITIALIZE関数です。
組み込み型モニタのWorkspaceを起動したら、ファイル名「monitor.c」をダブルクリックし、INITIALIZE関数の中を変更してください。
/************************************************************************/
/* H8/300H Monitor Program (Normal Mode) Ver. 2.0B */
/* Copyright (C) 2003 Renesas Technology Corp. */
/************************************************************************/
#include "3664s.h" /* */
#pragma global_register(monitor=R5) /* Return Address */
void (*monitor)(void); /* */
/************************************************************************/
/* User Initialize Module */
/* Input R5 <-- Return Address */
/* Output Nothing */
/* Used Stack Area --> 0(0) Byte */
/************************************************************************/
#pragma noregsave(INITIALIZE) /* Non Register Save */
void INITIALIZE(void) /* */
{ /* */
この部分を修正してください
monitor(); /* Goto Monitor Program */
} /* */
ディフォルトのヘッダファイルは「3664s.h」となっています。
お使いのチップに合わせて自由に変更してください。
なお、ヘッダファイルはProjectフォルダ「monitor」にあるものが使用可能です。
それ以外のヘッダファイルを使用する場合、Projectフォルダ「monitor」に使用するヘッダファイルをコピーするか、ないしは「オプション(O)」メニューの「H8S,H8/300 Standard Toolchain...」、「コンパイラ」タグの「カテゴリ(Y):」ドロップダウンの「ソースファイル」で「インクルードファイルディレクトリ」を追加してください。
ユーザイニシャライズモジュールが修正できたら、リンケージサブコマンドファイルの修正の項にお進みください。
先頭にもどる
アセンブリ言語によるユーザイニシャライズモジュールの修正
ディフォルトのProjectではユーザイニシャライズモジュールはファイル名「monitor.c」のC言語で記述することになっています。
アセンブリ言語でユーザイニシャライズモジュールを記述するためにはProjectから「monitor.c」を削除し、代わりに「monitor.src」を追加しなければなりません。
組み込み型モニタのWorkspaceを起動し、「プロジェクト(P)」メニューの「ファイルの削除(R)...」でC言語用のユーザイニシャライズモジュール「monitor.c」を削除してください。
次に「プロジェクト(P)」メニューの「ファイルの追加(A)...」でProjectフォルダ「monitor」の中にあるアセンブリ言語用のユーザイニシャライズモジュール「monitor.src」を追加してください。
ファイル名「monitor.src」をダブルクリックし、_INITIALIZEサブルーチンの中を修正してください。
;************************************************************************
;* H8/300H Monitor Program (Normal Mode) Ver. 2.0B *
;* Copyright (C) 2003 Renesas Technology Corp. *
;************************************************************************
.PROGRAM INITIALIZE ; Program Name
.CPU 300HN ; CPU is H8/300H Normal
.SECTION ROM,CODE,ALIGN=2 ; ROM Area Section
;************************************************************************
;* Export Define *
;************************************************************************
.EXPORT _INITIALIZE ; User Initialize Module
;************************************************************************
;* User Initialize Module *
;* Input R5 <-- Return Address *
;* Output Nothing *
;* Used Stack Area --> 0(0) Byte *
;************************************************************************
_INITIALIZE: この部分を修正してください
JMP @R5 ; Goto Monitor Program
.END ;
ユーザイニシャライズモジュールが修正できたら、リンケージサブコマンドファイルの修正の項にお進みください。
先頭にもどる
リンケージサブコマンドファイルの修正
組み込み型モニタをビルドする前に行う作業がリンケージサブコマンドファイルの修正です。
サブコマンドファイルを修正することにより、ユーザシステムのチップ種別、SCIのビットレート、各種メモリ・エリアの番地が決定します。
必ずユーザシステムに適した設定にサブコマンドファイルを修正してください。
リンケージサブコマンドファイルのファイル名は「monitor.sub」です。
このファイルの赤文字の部分が変更の必要な個所です。
INPUT NORMAL,MONITOR
LIST MONITOR.MAP
SHOW SYMBOL
OUTPUT MONITOR.MOT
FORM STYPE
CHANGE INFORMATION=1320
NOOPTIMIZE
LIBRARY NORMAL,3664
LIBRARY MONITOR
DEFINE $BRR=19
DEFINE $STACK=FF00
START VECTOR/0,ROM/100,RAM/F780,USER/F840,SCI/FFA8
LIBRARY NORMAL,3664
ライブラリファイルの指定です。
チップ種別固有の情報はライブラリファイルとして提供されています。
以下の中から適切なライブラリファイルを指定してください。
H8/36014シリーズ --> 36014 |
|
H8/3664シリーズ --> 3664 |
|
H8/36902シリーズ --> 36902 |
H8/36024シリーズ --> 36024 |
|
H8/3672シリーズ --> 3672 |
|
H8/36912シリーズ --> 36912 |
H8/36037シリーズ --> 36037 |
|
H8/3687シリーズ --> 3687 |
|
|
H8/36057シリーズ --> 36057 |
|
H8/3694シリーズ --> 3694 |
|
|
H8/36064シリーズ --> 36064 |
|
|
|
|
H8/36077シリーズ --> 36077 |
|
|
|
|
H8/36087シリーズ --> 36087 |
|
|
|
|
H8/36094シリーズ --> 36094 |
|
|
|
|
DEFINE $BRR=19
SCIのビットレートの指定です。
X'TALから目的のビットレートが得られる値を16進数で指定してください。
なお、下表及びマニュアルはビットレートの値が10進数で表現されてます。注意してください。
小文字nが0のときの大文字Nの値のみ指定可能です。
また、ターミナル側の通信ソフトとして Hterm を使う場合、4800bps、9600bps、14400bps、19200bps、38400bps、56000bps、57600bpsのどれかを指定してください。
ビットレートに対するBRRの設定値[調歩同期式モード]
ビットレート |
18MHz |
19.6608MHz |
20MHz |
n |
N |
誤差(%) |
n |
N |
誤差(%) |
n |
N |
誤差(%) |
1200 |
1 |
116 |
0.16 |
1 |
127 |
0.00 |
1 |
129 |
0.16 |
2400 |
0 |
233 |
0.16 |
0 |
255 |
0.00 |
1 |
64 |
0.16 |
4800 |
0 |
116 |
0.16 |
0 |
127 |
0.00 |
0 |
129 |
0.16 |
9600 |
0 |
58 |
-0.69 |
0 |
63 |
0.00 |
0 |
64 |
0.16 |
19200 |
0 |
28 |
1.02 |
0 |
31 |
0.00 |
0 |
32 |
-1.36 |
38400 |
0 |
14 |
-2.34 |
0 |
15 |
0.00 |
0 |
15 |
1.73 |
DEFINE $STACK=FF00
ユーザプログラムの初期SP値の指定です。ユーザプログラムの初期SPを16進数で指定してください。
START VECTOR/0,ROM/100,RAM/F780,USER/F840,SCI/FFA8
各種メモリ・エリアの番地の指定です。
組み込み型モニタが使用するROM/RAM領域、仮想ベクタ領域、内蔵SCI領域の番地を16進数で指定してください。
ROM −−> 組み込み型モニタが使用するROM領域
RAM −−> 組み込み型モニタが使用するRAM領域
USER −−> ユーザプログラムの仮想ベクタ領域
SCI −−> 組み込み型モニタが使用する内蔵SCIの領域
リンケージサブコマンドファイルが修正できたら、組み込み型モニタの機能選択の項にお進みください。
先頭にもどる
組み込み型モニタの機能選択
HEW版の組み込み型モニタは通信ソフト Hterm に合わせて機能選択が行われています。
具体的にはコマンドのヒストリー管理は Hterm のヒストリー機能を利用し、RAM領域を大量に使用するコマンド履歴機能は削除した構成でカスタマイズされています。
このままの構成で良い場合は、組み込み型モニタのビルドの項にお進みください。
構成を変更する場合は組み込み型モニタの機能選択を行わなければなりません。
ただし、組み込み型モニタの機能選択はHEWで行うことができません。
Windows95,98,MeのMS-DOSプロンプト上で行います。
そこで、MS-DOSプロンプトを起動し、コマンドのパスにリンケージエディタ(OPTLNK.EXE)へのパスを追加してください。
例:(フォルダ名はHEW3のインストール状況により変化します)
SET PATH=%PATH%;C:\HEW3\TOOLS\RENESAS\H8\6_0_0\BIN;
その後、Projectフォルダ「monitor」内のReleaseフォルダにあるバッチファイル「monitor.bat」を起動してください。
「monitor.bat」が組み込み型モニタの機能選択を行うバッチファイルです。
もし、起動時に「環境設定のためのメモリが足りません」と言われたら、MS-DOSプロンプトの「プロパティ」メニューの「メモリ」タグで環境変数のサイズを大きくするか、
ないしは以下のコマンド形式でバッチファイルを起動してください。
COMMAND /E:1024 /C MONITOR.BAT
あとは "Y" ないし "N" の入力で組み込み型モニタの機能選択が行えます。
H8/300H Series Normal Mode Monitor Configuration Batch
Copyright (C) 2003 Renesas Technology Corp.
Link with Assemble Command Module ? {y/n} : Y (1行アセンブル)
Link with Breakpoint Command Module ? {y/n} : Y (ブレークポイント)
Link with Dump Command Module ? {y/n} : Y (メモリ内容のダンプ)
Link with DisAssemble Command Module ? {y/n} : Y (逆アセンブル)
Link with Fill Command Module ? {y/n} : Y (データの書き込み)
Link with Go Command Module ? {y/n} : Y (ユーザプログラムの実行)
Link with H8 status Command Module ? {y/n} : Y (内蔵周辺機能の状態表示)
Link with Load Command Module ? {y/n} : Y (ダウンロード)
Link with Memory Command Module ? {y/n} : Y (メモリ内容の表示、変更)
Link with Register Command Module ? {y/n} : Y (CPUレジスタの一覧表示)
Link with Step Command Module ? {y/n} : Y (シングルステップの実行)
Link with .<register> Command Module ? {y/n} : Y (CPUレジスタの表示、変更)
Link with help Command Module ? {y/n} : Y (コマンドヘルプ)
Link with return Command Module ? {y/n} : N (繰り返し実行)
Link with <command>. Command Module ? {y/n} : N (コマンド履歴)
Link with interrupt Function ? {y/n} : Y (内蔵周辺機能割込み管理)
Link with abort Function ? {y/n} : Y (アボート管理)
Configuration Execute OK ? {y/n} : Y
組み込み型モニタの機能選択ができたら、組み込み型モニタのビルドの項にお進みください。
先頭にもどる
組み込み型モニタのビルド
組み込み型モニタのビルドは「ビルド(B)」メニューから「ビルド(B)」を実行するだけです。
そうするとビルドが行われ、以下のメッセージが表示されれば完成です。
完成した組み込み型モニタのロードモジュールはProjectフォルダ「monitor」内のReleaseフォルダにある「monitor.mot」です。
チップ内蔵のROMに書き込みご使用ください。
先頭にもどる
printf関数、scanf関数のサポート
組み込み型モニタが使用しているSCIチャネル経由でprintf関数とscanf関数による標準入出力をサポートすることができます。
組み込み型モニタが使用するRAM領域が通常のカスタマイズに比べて約70バイト程度増えますが、標準入出力を使用することにより効率良くデバッグを行うことが可能となります。
ただし、サポートするprintf関数とscanf関数は浮動小数点型を除いた <no_float.h> のものです。
<no_float.h> に関してはコンパイラのマニュアルを参照ください。
printf関数とscanf関数をサポートする場合は「プロジェクト(P)」メニューの「ファイルの追加(A)...」でProjectフォルダ「monitor」の中にある低水準インタフェースルーチン「lower.c」を追加してください。
次にリンケージサブコマンドファイルに標準入出力を使用するための設定を追加します。
赤文字の部分が追加すべき設定項目です。
なお、標準入出力をサポートすると組み込み型モニタが使用するRAM領域が増加しますから、他の領域と重ならないように注意してください。
INPUT NORMAL,MONITOR,LOWER
LIST MONITOR.MAP
SHOW SYMBOL
OUTPUT MONITOR.MOT
FORM STYPE
CHANGE INFORMATION=1320
NOOPTIMIZE
LIBRARY NORMAL,3664
LIBRARY MONITOR
DEFINE $BRR=19
DEFINE $STACK=FF00
START VECTOR/0,ROM,C/100,RAM/F780,USER/F880,SCI/FFA8
設定追加後は「ビルド(B)」メニューから「ビルド(B)」を実行するだけでprintf関数とscanf関数をサポートした組み込み型モニタが完成します。
組み込み型モニタがサポートしたprintf関数とscanf関数をユーザプログラムから使用する場合、<stdio.h> をインクルードするのではなく、printfとscanfのマクロ名を宣言することになります。ユーザプログラムの冒頭に以下の2つのマクロ名を追加してください。
#define printf ((int (*)(const char *,...))0x????????)
#define scanf ((int (*)(const char *,...))0x????????)
????????の部分には組み込み型モニタにリンケージされたprintf関数とscanf関数の番地を記述します。
番地は「Release」フォルダに生成されたリンケージリスト「monitor.map」より知ることができます。
リンケージリスト「monitor.map」にはprintf関数とscanf関数の番地情報(図中の赤文字の部分)がありますから、それをマクロ名の番地情報として記述します。
FILE=_printf
000026da 0000270d 34
__printf_lite
000026da 34 func ,g *
FILE=_scanf
0000270e 00002741 34
__scanf_lite
0000270e 34 func ,g *
#define printf ((int (*)(const char *,...))0x000026da)
#define scanf ((int (*)(const char *,...))0x0000270e)
この2つのマクロ名を宣言することにより、通常の関数呼び出し形式で組み込み型モニタがサポートしたprintf関数とscanf関数を使用することが可能となります。
先頭にもどる
問い合わせ先
E-mail : yuji.katori.ak@renesas.com
住所 : 東京都新宿区揚場町2−1 軽子坂MNビル
部署 : ルネサスエレクトロニクス株式会社 半導体トレーニングセンター
TEL : 03-3266-9344 (担当 鹿取)
FAX : 03-3235-5940
先頭にもどる