この「readme.htm」はHEW3、HEW4(C/C++ Compiler Version 6.0)版の組み込み型モニタをカスタマイズするのに必要な情報が記載されています。
 組み込み型モニタをビルドする前に必ずお読みください。 なお、組み込み型モニタ自体の機能については「monitor.htm」を参照ください。
  1. ユーザイニシャライズモジュールの必要性
  2. C言語によるユーザイニシャライズモジュールの修正
  3. アセンブリ言語によるユーザイニシャライズモジュールの修正
  4. リンケージサブコマンドファイルの修正
  5. 組み込み型モニタの機能選択
  6. 組み込み型モニタのビルド
  7. 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
誤差(%) 誤差(%) 誤差(%)
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

先頭にもどる