H8/3052F外部RAM対応モード6用モニタデバッガ生成メモ |
H8/3052F用のモニタデバッガをモード7で動作させるデバッグ環境では、デバッグ対象のプログラムサイズ
が内蔵RAMの大きさで制限を受けます。H8/3052Fの内蔵RAMは8Kバイトなのでデバッグ対象のプログラムはこれ以内でなければな
りません。 H8/3052Fモード7用モニタデバッガ生成、および必要なファイルの入手とインストールについては以下のページを参照ください。
注意:ここで示す方法では、試用期間が終わっているコンパイラではビルドできません。 |
記 2009/6/17 |
AKI-H8/3052FマイコンボードにSRAMを拡張H8/3052Fの動作モードはモード6(内蔵ROM有効16Mバイトモード)とし、内蔵ROM、内蔵RAM、拡張RAMを以下のように 使用することとします。
接続図およびユニバーサル基板に実装した様子を以下に示します。 ![]() ![]() |
H8/3052F外部RAM対応モード6用モニタデバッガ生成以下の手順で修正を行いファームウェアを生成します。
1.C言語によるユーザイニシャライズモジュール(monitor.c)の修正
monitor.cで記述されているヘッダーファイルを"3003.h"から"3052s"に変更します。 2.リンケージサブコマンドファイル(monitor.sub)の修正
以下の条件で動作するための修正を下図の赤枠で示します。 ここまでの修正後、ビルドを行ってロードモジュールを生成します。出来上がった MONITOR.MOT をH8に書き込むと
モニタデバッガを使用することができます。 3.printf関数、scanf関数のサポート 対応
組み込み型モニタがサポートするprintf関数とscanf関数をユーザプログラムから使用する場合、使用する
ソースコードに以下のマクロを記述する必要があります。 FILE=_printf 00002b4e 00002b9f 52 __printf_lite 00002b4e 52 func ,g * FILE=_scanf 00002ba0 00002bf1 52 __scanf_lite 00002ba0 52 func ,g * 上記のようになっていたので、マクロは以下のようになります。 #define printf ((int (*)(const char *,...))0x00002b4e) #define scanf ((int (*)(const char *,...))0x00002ba0) 筆者は、このコードをヘッダファイルにして必要に応じてインクルードして使うようにしています。 *.動作確認用のサンプルプログラム
モニタデバッガは仮想ベクタ方式を採用しているため、モニタデバッガ上で動作させるプログラムも仮想ベクタに対応している
必要があります。HEWが自動生成するワークスペースでは仮想ベクタに対応していないため、何らかの対応が必要になります。
仮想ベクタ用ファイル 仮想ベクタに対応したサンプルプロジェクトをここで公開します。 このサンプルプロジェクトは、秋月電子のAKI-H8/3052Fマイコンボードをマザーボードに搭載したものを対象としています。 このサンプルプログラムは以下のように動作します。
|