H8/3048Fモード7用モニタデバッガ生成メモ |
いまさらとは思ったのですが、H8/3048Fモード7用モニタデバッガを作ったのでメモとして残しておこうと思います。 |
記 2010/9/18 |
必要なファイルの入手については以下のページを参照ください。
注意:ここで示す方法では、試用期間が終わっているコンパイラではビルドできません。 |
H8/3048Fモード7用モニタデバッガ生成以下の手順で修正を行いファームウェアを生成します。
1.C言語によるユーザイニシャライズモジュール(monitor.c)の修正monitor.cで記述されているヘッダーファイルを"3003.h"から"3048s"に変更します。プロジェクトウインドウのDependenciesフォルダに表示されるファイル名は自動的に変更されます。 2.リンケージサブコマンドファイル(monitor.sub)の修正以下の条件で動作するための修正を下図の赤枠で示します。使用CPU:H8/3048F 動作モードモード7 動作周波数:16MHz モニタ使用SCIチャネル:1 38400bps また、printf関数、scanf関数を使用するための修正を緑枠で示します。 ここまでの修正後、ビルドを行ってロードモジュールを生成します。出来上がった MONITOR.MOT をH8に書き込むと
モニタデバッガを使用することができます。 3.printf関数、scanf関数のサポート 対応組み込み型モニタがサポートするprintf関数とscanf関数をユーザプログラムから使用する場合、使用する ソースコードに以下のマクロを記述する必要があります。#define printf ((int (*)(const char *,...))0x????????) #define scanf ((int (*)(const char *,...))0x????????) ????????の部分には組み込み型モニタと共にリンケージされたprintf関数とscanf関数のアドレスを記述します。 このアドレスは手順2までの修正後、ビルドを行ったときに作成される"MONITOR.MAP"ファイルの中に記述されています。 FILE=_printf 00002b3c 00002b8d 52 __printf_lite 00002b3c 52 func ,g * FILE=_scanf 00002b8e 00002bdf 52 __scanf_lite 00002b8e 52 func ,g * 上記のようになっていたので、マクロは以下のようになります。 #define printf ((int (*)(const char *,...))0x00002b3c) #define scanf ((int (*)(const char *,...))0x00002b8e) 筆者は、このコードをヘッダファイルにして必要に応じてインクルードして使うようにしています。 *.動作確認用のサンプルプログラムモニタデバッガは仮想ベクタ方式を採用しているため、モニタデバッガ上で動作させるプログラムも仮想ベクタに対応している 必要があります。HEWが自動生成するワークスペースでは仮想ベクタに対応していないため、何らかの対応が必要になります。筆者の場合以下のように対応しています。
仮想ベクタ用ファイル 仮想ベクタに対応したサンプルプロジェクトをここで公開します。 このサンプルプロジェクトは、秋月電子のAKI-H8/3052Fマイコンボードをマザーボードに搭載したものを対象としています。 このサンプルプログラムは以下のように動作します。
|