・2003/07/08
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を使って開発する
加賀電子iTAX-IrDAを分解して流用
AKI-H8 Tiny/3664をアセンブラで開発&日立デバグモニタを構築する
上記と同様にフラッシュ書き込みの手間がありません
オークス電子 OAKS8をアセンブラで開発
アセンブリ言語を用いて開発します、シリアルモニタの製作記事がトラ技に掲載されました
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2005 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/cpu/h8_3069/