SSブログ

H8マイコンにデバックモニタを入れる。HTERMでデバックをする。 [HEW & HTERM]

hew_image_32.pngH8をHTERMでデバックする手順に付いて質問を受けたので、あらためてここで紹介します。

まず手順の説明を開始する前に、HTERMでのデバックの概要について簡単に書いておきます。

H8/300Hマイコンの内、後発のH8/Tinyシリーズについては設計段階からオンチップデバック機能を搭載しており、E8エミュレーターを使ってデバックが出来る事は前に紹介しました。
しかしその前からあるH8/300Hマイコン、一般的なのはH8/3048F、H8/3052F、H8/3069Fにはチップ内部にオンチップデバック機構を持ちません。

つまりこれらマイコンにはハードウエア的なデバック機能が無いので、ルネサスのセミナー講師であるKさんがソフトウエアによるデバック機能を実現しました。
インタフェースにはSCIを使用します。(複数SCIがある時はブートモードで使用するSCIがデフォルトで選ばれている。)

確か1995年位ではなかったでしょうか、当時の日立、現在のルネサスの半導体セミナー(無償セミナーの方)でデバックモニタの実現方法に付いて講習を行っていました。当時インターネットはまだ十分に普及しておらず、サポート用にniftyのメールアドレスをもらっています。

当初はデバックモニタのみのリリースでしたが、後にこのデバックモニタの機能を使いこなすべく、GUIで操作できるHTERMを当を本人が開発され、現在ではデバックモニタ、HTERM共に上記写真のページ(ルネサスの半導体セミナーのページからサンプルプログラムに進む)で提供されています。

なお、デバックモニタにしろ、HTERMにしろ、GCCで作成したモジュールを扱う事もできますが、特にHTERMの機能を十分に使いこなせないので、開発はルネサス純正のツールチェインを使った方が良いでしょう。

以上、概要は終了

では上記写真のページに辿り着いたら
「HEW3,HEW4(C/C++ Compiler Ver. 6.0)対応版 H8/300H用 モニタプログラム」または「HEW3,HEW4(C/C++ Compiler Ver. 6.0)対応版 H8/300H Tiny用 モニタプログラム」と、
「モニタプログラム専用通信ソフト Hterm」をダウンロードしてください。
※300hhew3.exe、300thew3.exeは実行形式のファイルなので、場合によってはセキュリティソフトに文句を言われるかもしれませんね。


hew_image_33.pngダウンロード後、適当なフォルダで自動解凍を行います。
すると、Opera上に自動的に「組み込みモニタのカスタマイズ方法」と言うページが開きました。なーんだ、解説要らないジャン。
※下手な解説読むより、作った本人の解説があれば、そっちを読んだ方が良いのは言うまでもないですよね。それでも判らない事が有ればコメント欄へどうぞ。



と言う訳でまずは展開されたreadme.htmを読んでください。同じ事を解説しても無駄ですから。
あとmonitor.htmの方も読んでおくと良いでしょう。
※できれば「printf関数、scanf関数のサポート」を読んで、これら機能を一緒に組み込んで置くとお得です。

ダブった事は書いてもしょうがないので、マイコンに依存する所のみ紹介して置きます。
※特にROM容量をケチる必要も無いので、「組み込み型モニタの機能選択」は行わず、フル機能で構築しています。
※ボーレートの設定値ですが、使用するマイコンのデータシートのSCIのBRRの項目に、親切にも計算済みの値が書いてありますので、それを使ってください。但し記述は16進です。

例1.H8/3069Fマイコンの場合。秋月の3069FLANボードを想定。CPUクロック20MHz、DRAM16Mbit、ボーレート38400bps、printf、scanfの実現有り。
monitor.src
;************************************************************************
;*      H8/300H Monitor Program (Advanced Mode)         Ver. 3.0A       *
;*              Copyright (C) 2003 Renesas Technology Corp.             *
;************************************************************************
                .PROGRAM  INITIALIZE            ; Program Name
                .CPU      300HA                 ; CPU is H8/300H Advanced
                .SECTION  ROM,CODE,ALIGN=2      ; ROM Area Section
;************************************************************************
;*      Export Define                                                   *
;************************************************************************
                .EXPORT _INITIALIZE             ; User Initialize Module
;************************************************************************
;*      User Initialize Module                                          *
;*              Input   ER5 <-- Return Address                          *
;*              Output  Nothing                                         *
;*              Used Stack Area --> 0(0) Byte                           *
;************************************************************************
_INITIALIZE:
;DRAM空間はCS2に取られている。16Mbit、8bitバス、60nsのDRAMが実装済み
;PORT1、2、5を初期化しアドレスを出力モードにする
P1DDR	.equ h'fee000
P2DDR	.equ h'fee001
P5DDR	.equ h'fee004
P8DDR	.equ h'fee007
ASTCR	.equ h'fee021        	;アクセスステートコントロールレジスタ
WCRH	.equ h'fee022        	;WAITコントロールレジスタ
WCRL	.equ h'fee023        	;WAITコントロールレジスタ
DRCRA	.equ h'fee026        	;DRAMコントロールレジスタA
DRCRB	.equ h'fee027        	;DRAMコントロールレジスタB
RTMCSR	.equ h'fee028        	;リフレッシュコントロール/ステータスレジスタ
RTCNT	.equ h'fee029        	;リフレッシュタイマカウンター
RTCOR	.equ h'fee02A        	;リフレッシュタイムコンスタンとレジスタ
;コメントを付けると内蔵メモリだけの利用となる
		mov.b	#h'ff,r0l
		mov.b	r0l,@P1DDR        ;PORT1 アドレス出力
		mov.b	#h'07,r0l        ;A10まで有効とする
		mov.b	r0l,@P2DDR        ;PORT2 アドレス出力
		mov.b	#h'e8,r0l        ;松川様の連絡により判明
		mov.b	r0l,@P8DDR        ;PORT2 アドレス出力

		mov.b	#155,r0l        ;155で約64KHzのリフレッシュ
;		mov.b	#99,r0l        	;99で約100KHzのリフレッシュ
		mov.b	r0l,@RTCOR        ;

		mov.b	#h'0F,r0l        ;b'0000 1111
		mov.b	r0l,@RTMCSR        ;Φ2

		mov.b	#h'98,r0l        ;b'1001 1000
		mov.b	r0l,@DRCRB        ;カラムアドレス10bit

;		mov.b	#h'3c,r0l        ;b'0011 1100 fast page のバーストモード用
;		mov.b	#h'34,r0l        ;b'0011 0100 フルアクセス用
		mov.b	#h'38,r0l        ;b'0011 1000 峰松さんお勧め、FAST PAGE、EDOドンと来い設定。バースト有りのRASアップモード用
		mov.b	r0l,@DRCRA        ;エリア2をDRAM空間に設定、FPモード、RASダウンモード

;8リフレッシュサイクル分のwaitを入れる(リフレッシュサイクル100KHz時)
wait80u	.equ 80*100/64
		mov.l	#wait80u,er0		;ループ数の設定
refresh_loop:                		;1ループ1μs(20MHz時)
		nop                	;nopは2ステート消費
		nop                	;nopは2ステート消費
		nop                	;nopは2ステート消費
		nop                	;nopは2ステート消費
		nop                	;nopは2ステート消費
		nop                	;nopは2ステート消費
		dec.l	#1,er0        	;dec.lは2ステート消費
		bne		refresh_loop		;bneは6ステート消費
;
	    JMP     @ER5                    ; Goto Monitor Program
       .END                            ;

monitor.sub
INPUT      ADVANCED,MONITOR,LOWER
LIST       MON3068R20.MAP
SHOW       SYMBOL
OUTPUT     MON3068R20.MOT
FORM       STYPE
NOOPTIMIZE
LIBRARY    ADVANCED,3068
LIBRARY    MONITOR
DEFINE     $BRR=0F
DEFINE     $STACK=0FFFF20
START      VECTOR/0,ROM,C/100,RAM/0FFBF20,USER/0FFBFF4,SCI/0FFFFB8


例2.H8/3048Fマイコンの場合。CPUクロック16MHz、外部メモリ無し、ボーレート38400bps、printf、scanfの実現有り。
※INITIALIZEには特に書く事が無いので、subファイルのみ紹介。
※3048Fに付いては、いま動かせる基板が無いので動作未確認。
INPUT      ADVANCED,MONITOR,LOWER
LIST       MON3048N16.MAP
SHOW       SYMBOL
OUTPUT     MON3048N16.MOT
FORM       STYPE
NOOPTIMIZE
LIBRARY    ADVANCED,3048
LIBRARY    MONITOR
DEFINE     $BRR=0C
DEFINE     $STACK=FFFF10
START      VECTOR/0,ROM,C/100,RAM/0FFEF10,USER/0FFF030,SCI/0FFFFB8


例3.H8/3694F Tinyマイコンの場合。CPUクロック20MHz、ボーレート38400bps、printf、scanfの実現有り。
※INITIALIZEには特に書く事が無いので、subファイルのみ紹介。
INPUT      NORMAL,MONITOR,LOWER
LIST       MON3694N20.MAP
SHOW       SYMBOL
OUTPUT     MON3694N20.MOT
FORM       STYPE
NOOPTIMIZE
LIBRARY    NORMAL,3694
LIBRARY    MONITOR
DEFINE     $BRR=0F
DEFINE     $STACK=FF00
START      VECTOR/0,ROM,C/100,RAM/F780,USER/F880,SCI/FFA8

※以下のSUBファイルの記述は修正が入っています。
START VECTOR/0,ROM,C/100,RAM/F780,USER/F880,SCI/FFA8
USER/F840→USER/F880

MOTファイルが出来上がったらFDTでターゲットに書き込みます。
※HTERM自体にも書き込み機能が有るのですが、H8/3069F以外は自前で書き込みモジュールを用意する必要があります。書き込みモジュールの作り方も何処かにドキュメントが有った筈なんだけれど。

書き込みが完了したらFDTとターゲットとの接続を解除し、HTERMを立ち上げて(COMポート番号とボーレートには注意して)コンソールを開きます。
ターゲットの動作モードをブートモードから通常の動作モードに切り替えて、電源の再投入かリセットを実行します。
以下の画面が表示されればデバックモニタの構築は完了です。


hew_image_34.png
hew_image_35.png




H8マイコン完全マニュアル

H8マイコン完全マニュアル

  • 作者: 藤沢 幸穂
  • 出版社/メーカー: オーム社
  • 発売日: 2000/12
  • メディア: 単行本



C言語でH8マイコンを使いこなす

C言語でH8マイコンを使いこなす

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2003/10
  • メディア: 単行本



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。