HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2003/07/08

AKI-H8/3069をアセンブラで開発&日立デバグモニタを構築する AKI-H8/3069をアセンブラで開発&日立デバグモニタを構築する

(シリアル通信経由のRAM転送デバグで楽しましょう)

Tags: [ワンチップCPU]




難しい事は分からない、だけど、楽に開発をしたい。


アセンブラの開発環境は構築が楽だなー

日立H8/3069リンク
日立HD64F3069ドキュメント
日立H8/300Hシリーズ モニタプログラム
AKI-H8/3069Fマイコンボードキット(LAN無し超小型バージョン)
(秋月の商品検索とかカテゴリ属性って関係ない物も引っかかるから不便)

この3069基板で気に入った所:
・16M-Bit DRAM(2MByte)実装で秋月C基板よりも小型。
・SCI(RS232C)を3ch搭載、うち2chはレベル変換付き。

この基板の欠点:
・モード5を使用しており、DRAMを搭載しているのでI/Oとして使える端子が少なくなる。
・SCI0/1用の端子に汎用コネクタが使えない(なくもないですが)。


日立デバグモニタを構築する


モニタを使わずに、毎回プログラムを3069に焼いてデバグしていましたが、
・フラッシュの保証回数が100回までと少ないので気になる
・モード7(焼く時)←→モード5(実行時)のディップSW切換えが面倒
・OUT端子を'H'←→'L'の生死確認が面倒(その為のプログラムを焼くのが)
・同じくINP端子の生死確認が面倒
等の不満がありました。

デバグモニタを使うとプログラムを232C経由でH8のRAM上に転送して
実行/ステップ実行/ブレークポイント/メモリ内容のダンプ等の操作ができるようになります。

それで、3069用のモニタを作る方法を調べて見ました。( ぐぐる検索

その中で、 watson8 with H8/PIC/AVRが参考になりました。
また、実際に使っていませんが、 Developer's Place にすぐに焼ける状態の物があります。

とりあえず、上記サイトを参考にして構築をしてみます。

用意する物:
・アセンブラ一式:秋月CD-ROMに付属のA38H.EXE,L38H.EXE,C38H.EXE
・モニタプログラム(ソース): 日立H8/300Hシリーズ HEW(C/C++ Compiler Ver. 4.0)対応版 H8/300H用
・焼きソフト: Linuxによるマイコンプログラミングのページ Open SH/H8 writer(Windows実行ファイル)

メモリ空間の割り当ては下記のようにしました。
H'000000
割り込みベクタ H8の内蔵ROM
H'0000FF
H'000100
モニタ本体
H'005FFF
H'006000
未使用
H'07FFFF
H'080000
* エリア0
H'1FFFFF
H'200000
* エリア1
H'3FFFFF
H'400000
デバグ用割り込みベクタ 外付けDRAM

エリア2
H'4000FF
H'400100
デバグ用プログラム転送エリア
H'5FFFFF
H'600000
* エリア3
H'7FFFFF
H'800000
* エリア4
H'9FFFFF
H'A00000
* エリア5
H'BFFFFF
H'C00000
* エリア6
H'DFFFFF
H'E00000
* エリア7
H'FEDFFF
H'FEE000
H8のI/O(1) H8のI/O(1)
H'FEE0FF
H'FEE100
* エリア7
H'FFBF1F
H'FFBF20
モニタ用ワークエリア H8の内蔵RAM
H'FFFF1F
H'FFFF20
H8のI/O(2) H8のI/O(2)
H'FFFFE9
H'FFFFEA
* エリア7
H'FFFFFF

・デバグモニタの作成方法
 通称秋月パッチ(秋月アセンブラで生成されるMOTファイルを転送するとチェックサムエラーで蹴られてしまうのでモニタ側にパッチを当てる。)
 \ADVCMD\CMD24.SRC の102行目
BNE ERR11
; BNE ERR11
コメントにする。
(これに関する ぐぐる検索

DEFINE $BRR(0D)
BRRを0Dにするとボーレート57600bps

 編集中

アセンブル用バッチファイル
echo    off
set    TARGET=MON3069

md    %TARGET%
    if exist %TARGET%\MONITOR.SRC    goto MSKIP

    copy    ..\MONITOR\MONITOR.C %TARGET%
    copy    ..\MONITOR\MONITOR.SRC %TARGET%

:MSKIP

cd    ADVCMD
    for %%F in (*.SRC) do a38h %%F -CPU=300HA
cd    ..

cd    ADVDMY
    for %%F in (*.SRC) do a38h %%F -CPU=300HA
cd    ..

cd    ADVMOD
    for %%F in (*.SRC) do a38h %%F -CPU=300HA
cd    ..

cd    ADVSRC
    for %%F in (*.SRC) do a38h %%F -CPU=300HA
cd    ..

cd    ADVTIP\3069
    for %%F in (*.SRC) do a38h %%F -CPU=300HA
cd    ..\..

cd    MON3069
    for %%F in (*.SRC) do a38h %%F -CPU=300HA
cd    ..

リンク用バッチファイル
L38H /SUB=MON3069.SUB
C38H MONITOR

リンク指示ファイル"MON3069.SUB"
in MONITOR.OBJ

in ..\advcmd\CMD02.OBJ

in ..\advcmd\CMD04.OBJ
in ..\advcmd\CMD05.OBJ
in ..\advcmd\CMD06.OBJ
in ..\advcmd\CMD07.OBJ
in ..\advcmd\CMD08.OBJ
in ..\advcmd\CMD09.OBJ
in ..\advcmd\CMD10.OBJ
in ..\advcmd\CMD11.OBJ

in ..\advcmd\CMD13.OBJ
in ..\advcmd\CMD14.OBJ

in ..\advcmd\CMD16.OBJ
in ..\advcmd\CMD17.OBJ

in ..\advcmd\CMD19.OBJ
in ..\advcmd\CMD20.OBJ
in ..\advcmd\CMD21.OBJ


in ..\advcmd\CMD24.OBJ
in ..\advcmd\CMD25.OBJ

in ..\advcmd\CMD27.OBJ
in ..\advcmd\CMD28.OBJ

in ..\advcmd\CMD30.OBJ
in ..\advcmd\CMD31.OBJ
in ..\advcmd\CMD32.OBJ
in ..\advcmd\CMD33.OBJ
in ..\advcmd\CMD34.OBJ
in ..\advcmd\CMD35.OBJ
in ..\advcmd\CMD36.OBJ
in ..\advcmd\CMD37.OBJ
in ..\advcmd\CMD38.OBJ


in ..\advdmy\dmy01.OBJ

in ..\advdmy\dmy03.OBJ
in ..\advdmy\dmy12.OBJ
in ..\advdmy\dmy15.OBJ
in ..\advdmy\dmy18.OBJ
in ..\advdmy\dmy23.OBJ
in ..\advdmy\dmy26.OBJ
in ..\advdmy\dmy29.OBJ
in ..\advdmy\dmy39.OBJ

in ..\advdmy\dmy41.OBJ


in ..\advmod\MOD01.OBJ
in ..\advmod\MOD02.OBJ
in ..\advmod\MOD03.OBJ
in ..\advmod\MOD04.OBJ
in ..\advmod\MOD05.OBJ
in ..\advmod\MOD06.OBJ
in ..\advmod\MOD07.OBJ
in ..\advmod\MOD08.OBJ
in ..\advmod\MOD09.OBJ
in ..\advmod\MOD10.OBJ
in ..\advmod\MOD11.OBJ
in ..\advmod\MOD12.OBJ
in ..\advmod\MOD13.OBJ
in ..\advmod\MOD14.OBJ
in ..\advmod\MOD15.OBJ
in ..\advmod\MOD16.OBJ
in ..\advmod\MOD17.OBJ
in ..\advmod\MOD18.OBJ
in ..\advmod\MOD19.OBJ
in ..\advmod\MOD20.OBJ
in ..\advmod\MOD21.OBJ
in ..\advmod\MOD22.OBJ
in ..\advmod\MOD23.OBJ
in ..\advmod\MOD24.OBJ
in ..\advmod\MOD25.OBJ
in ..\advmod\MOD26.OBJ
in ..\advmod\MOD27.OBJ
in ..\advmod\MOD28.OBJ
in ..\advmod\MOD29.OBJ
in ..\advmod\MOD30.OBJ
in ..\advmod\MOD31.OBJ
in ..\advmod\MOD32.OBJ
in ..\advmod\MOD33.OBJ
in ..\advmod\MOD34.OBJ
in ..\advmod\MOD35.OBJ
in ..\advmod\MOD36.OBJ
in ..\advmod\MOD37.OBJ
in ..\advmod\MOD38.OBJ
in ..\advmod\MOD39.OBJ

in ..\advsrc\ADVANCED.OBJ
in ..\advtip\3069\CPU01.OBJ
in ..\advtip\3069\CPU02.OBJ
in ..\advtip\3069\CPU03.OBJ
in ..\advtip\3069\CPU04.OBJ

DEFINE  $BRR(0D)
DEFINE  $STACK(0FFFF20)
PRINT   MONITOR.MAP
OUTPUT  MONITOR.ABS

START   VECTOR(0),ROM(100),RAM(0FFBF20),USER(0400000),SCI(0FFFFB8)
exit

H8書込み用バッチファイル
H8WRITE -3069 -f25 MONITOR.MOT


・デバグモニタ上で動くプログラムの作成方法
 編集中
 こんな感じ
START   VECTOR(400000),ROM(400100),RAM(040E000)
exit



デバグの時にあると便利:
日立H8/300Hシリーズ モニタプログラム モニタプログラム専用通信ソフトHterm




Tags: [ワンチップCPU]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

H8S/2134をIrGEARを使って開発する
H8S/2134をIrGEARを使って開発する

  加賀電子iTAX-IrDAを分解して流用

AKI-H8 Tiny/3664をアセンブラで開発&日立デバグモニタを構築する
AKI-H8 Tiny/3664をアセンブラで開発&日立デバグモニタを構築する

  上記と同様にフラッシュ書き込みの手間がありません

オークス電子 OAKS8をアセンブラで開発
オークス電子 OAKS8をアセンブラで開発

  アセンブリ言語を用いて開発します、シリアルモニタの製作記事がトラ技に掲載されました




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2005 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/cpu/h8_3069/