[H8]HEWでアセンブラ開発用のプロジェクトを作成し、シミュレータで実行してみる

今回は、H8シリーズのマイコンの中でも、H8/3069Fをターゲットとしたプロジェクトを作成し、シミュレータ上でプログラムを実行してみます。
インストール方法は、前回の記事を参考にしてください。

プロジェクトの作成

まずはHEWを起動し、ワークスペースの作成を選択します。


ワークスペースの作成です。
今回はアセンブラの環境を作りたいので、左のプロジェクトタイプからAssembly Applicationを選択します。ワークスペース名は、アルファベットで適当な名前を付けてください。(今回はasm_testにしました)



ターゲットとするCPUの選択です。
H8/3069Fのチップはマスクが変わってしまったため、最近ではH8/3069Rに型番が替わっているのですが、ソフト開発上は同等なので、これを選びます。


オプション指定です、デフォルトのまま次へをクリックします。


そのまま次へをクリックします。


割り込み発生時のベクタテーブル定義です。
デフォルトのままでOKをクリックします。


シミュレータの選択では、H8/300HAを選択します。


シミュレータの選択肢にあるHAとHNの違いは、ルネサスのページより確認できますが、CPUのモードです。今回はアドバンスモードで実行したいのでHAを選択しました。
H8SX,H8S,H8ファミリ用シミュレータデバッガ シミュレーション範囲 | ルネサス エレクトロニクス



デバッガオプションはデフォルトのままで次へをクリックします。



自動生成されるソースの確認です。
完了をクリックします。


-------- PROJECT GENERATOR --------
PROJECT NAME :	asm_test
PROJECT DIRECTORY :	C:\WorkSpace\asm_test\asm_test
CPU SERIES :	300H
CPU TYPE :	3069R
TOOLCHAIN NAME :	Renesas H8S,H8/300 Standard Toolchain
TOOLCHAIN VERSION :	7.0.0.0
GENERATION FILES :
    C:\WorkSpace\asm_test\asm_test\intprg.src
        Interrupt Program
    C:\WorkSpace\asm_test\asm_test\vecttbl.src
        Initialize of Vector Table
    C:\WorkSpace\asm_test\asm_test\vect.inc
        Definition of Vector
    C:\WorkSpace\asm_test\asm_test\resetprg.src
        Reset Program
    C:\WorkSpace\asm_test\asm_test\asm_test.src
        Main Program
    C:\WorkSpace\asm_test\asm_test\stacksct.src
        Setting of Stack area
START ADDRESS OF SECTION :
 H'000000000	VECTTBL,INTTBL
 H'000000400	ResetPRG,IntPRG
 H'000000800	P
 H'000FFFD00	Stack
 
* When the user program is executed,
* the interrupt mask has been masked.
* 
* **** H8/3069R Advanced ****
 
SELECT TARGET :
    H8/300HA Simulator




プロジェクトのツリーに、6つのファイルがある事を確認してください。
asm_test.src(プロジェクト名+”.src”)が、C言語でいうmain関数相当です。


これでプロジェクトの作成は完了です。

動作確認用のプログラムの作成とビルド


プロジェクトが正しく作られたのを確認するため、一旦このままビルドしてみます(F7でビルドできます)。


画面右下のBulidタブに、ビルド結果が表示されます。
まだ何も作っていないので、0 Errors, 0 Warningsで、ビルドが完了するはずです。


Build Finished
0 Errors, 0 Warnings



またリンカのメッセージで、評価版の残り日数が表示されます。

License expires in 60 days




ここまで出来たら、次は適当に動作確認用のプログラムを作ってみます。
asm_test.srcを以下のように書き換えます(長くなるのでファイル先頭のコメントは省略です)。

		.export		_main
_main:
		MOV.B	#H'FF, R0L
		MOV.B	R0L, @H'FFFF00
		MOV.B	#H'AA, R0L
		MOV.B	R0L, @H'FFFF00
 
		rts
		.end





このプログラムは、0xFFの値をメモリの0xFFFF00番地に書いた後、0xAAに書き換えています。
0xFFFF00番地を指定したのは特に意味がありませんが、強いてあげるなら以下の理由からです。

1.H8/3069Fのアドバンスモードはメモリ空間が0xFFFFFFまでなので、大きいアドレスにしといた方がメモリダンプウィンドウ上確認しやすい(一番下までスクロールさせて、ちょっと上に戻せばよい)。

2.とは言うものの、最初と最後の辺りのアドレスには特別な意味が有るので、端っこのアドレスは使用したくない(それぞれ、割り込みベクタとI/Oマッピングがアサインされている)。


ソースを書いたら再度F7でビルドします。エラーがないことを確認してください。



シミュレータでの実行


次に、作ったプログラムをシミュレータ上で実行します。

プロジェクトのセッションをシミュレータに変更します。
セッションの変更は、ツールバー右端のDefaultSessionというのを SimSesseionH8-300HAに変更することで行えます。


ファイル保存の確認が出ますが、OKをクリックします。



ここで、シミュレータで実行する前にもうすこし環境を整えます。

表示->CPUから、レジスタとメモリを選択してください。


メモリを選択した時は、追加でウィンドウが表示されますが、そのままOKで良いです。


画面右にレジスタ、下にメモリダンプが表示されます。
H8はレジスタがER0~ER7,PC,CCRの10本のレジスタがある事が確認できます。


メモリはウィンドウ右側をスクロールさせて、FFFF00番地が見えるようにしてください。



再度F7を押してビルドします。
以下のウィンドウが表示されるので、”すべてはい”をクリックします。
ここでダウンロードというのは、マイコンへのプログラム書き込みを意味します。
実機を持っている場合はここで書き込みが行われるのですが、今回はシミュレータなのでシミュレータ上へのロードが行われます。




ダウンロードが終わると、ソースウィンドウの表示が変わります。
行番号の右に、ロードされたメモリアドレスが表示されました。


ちなみに、ソースウィンドウの上にあるボタンの真ん中をクリックすると、アセンブルした機械語命令が表示されます。




S…と記載された列は、ブレークポイントです(タイトルのところにカーソルを合わせるとタイトルが表示されます)。
最初の命令のところをダブルクリックして、1行目で止まるようにしておきます。



ここまで準備できたら、いよいよプログラムを実行します。
下の赤枠で囲んだアイコン(リセット後実行)をクリックしてください。リセット後実行はShift+F5がショートカットになっています。



ブレークポイントを設定した行が黄色くなり、ここで処理がとまっています。
デバッグ->ステップオーバー(またはF10キー)をクリックし、プログラムを1行進めてください。


レジスタウィンドウのER0が赤くなり、”00000000″->”000000FF”に変わった事が分かります。
まだ説明していませんが、MOV命令で指定したR0Lというレジスタは、ER0レジスタの下位8ビットを意味します。


もう一度F10を押すと、今度はメモリのFFFF00番地の値がFFに変わる事が確認できます。


さらにF10を押していくと、ER0がAAに変化し、メモリのFFFF00番地がAAに変わっていきます。






これで、プロジェクトの作成とシミュレータでの実行確認はおしまいです。

関連記事

コメントを残す

メールアドレスが公開されることはありません。