今年(2008年)の4月ごろ、秋月電子からSH/Tinyシリーズ SH7125F を使用したマイコンボードが発売になりました。CPU自体はかなり以前からあるもののようなのですが、秋月電子から安いマイコンボードとしてSHシリーズが出るのは初めてだと思います。
早速、ルネサスからハードウェアマニュアルをダウンロードして仕様を見てみると、かなりいい感じです。SH2の性能に、128KBのFlash-ROM、8KBのRAM、さらに2点までのブレークポイントがユーザーに開放されています。これで1800円は安い!
ということで、早速、H8/3664から浮気して、デバッガを作ってみました。ただ、SH7125はRAMが8KBもあるので、Flash-ROMでデバッグ可能であることはそれほど必須ではありませんが・・・。
今回は、秋月電子の SH7125Fベースボードキット(4800円也)を購入して、付属の開発ツール、ルネサスのHEWとFDTを使って環境構築することにしました。また、PC用のツールはいつもの通り、Borland C++ 無償配布版を使用します。
環境の設定からユーザープログラムの焼きこみまで、以下のステップが必要になります。
SH7125用ROMデバッガは、マイコンボード用プログラム『ADBGSH7125.MOT』と、PC側プログラム『ADBGSH.EXE』の2つのプログラムで構成された、アセンブラレベルのシンボルデバッガです。ICE等の装置は一切使用せず、SH7125F マイコンボードとシリアルケーブルで接続されたPCのソフトウェアだけで実現しています。AKI-H8/3664用ROMデバッガと同様、マイコンボード用プログラムを極力小さくする為に、多くの機能をPC側プログラムに実装しています。
このデバッガが提供する機能は、ほぼ、AKI-H8/3664用ROMデバッガと同等で、以下の機能を提供しています。
マイコンボードとPCの接続はCOMポートを使います。デフォルトではCOM1:、19200baudでの接続になりますが、起動時オプションでCOMポートと通信速度を変更できます。通信速度を変更する場合は、ADBGSH7125.MOTの修正が必要です。
ビルド環境はHEWを前提にしていますが、HEWに依存する部分はシンボルの読み込み程度ですので、シンボルを適当に処理できれば、ビルド環境は何でもOKです。
ADBGSH7125は、SH7125のFlash-ROMの0x0000~0x1800に常駐します。ユーザープログラムは0x2000~0x1FFFFの120KBを使用可能です。また、RAMは0xFFFFA000~0xFFFFA400の約1KBを使用します。ユーザープログラムでは0xFFFFA400~0xFFFFBFFFの約7KBを使用可能です。但し、ユーザープログラムをFlash-ROMにダウンロードする祭に、Flash-ROMの消去・書き換えプログラムの実行をするために0xFFFFA400~0xFFFFB400の約4KBを一時的に使用しますので、プログラムのダウンロード後はこのエリアが破壊されます。
このデバッガでは、VBRは0固定(ベクタアドレスは0~0x3ff)にし、デバッガ内に仮想ベクタを持っています(仮想ベクタ:0xFFFFA000~0xFFFFA142)。割り込みが発生すると、0~0x3ffのベクタに書かれているデバッガ内のハンドラにジャンプし、そこで仮想ベクタに値が設定されていれば、そのアドレスにジャンプし、設定されていなければデバッガに制御が移ります。このようにしている理由は、VBRでベクタ領域をRAMに移すと、ベクタ領域をRAM上に1KB用意しなければならず、RAMの使用効率が悪いこと、ユーザーが割り込みハンドラを書く際に、#pragma interruptを使用しなければならず、開発環境に依存してしまうことなどです。
ADBGSH7125では、一旦デバッガ内部でスタックの退避処理などを行うため、ユーザーが割り込みハンドラを書く場合でも、通常の void func( void )型の関数として書けばよいので、環境依存がありません。
なお、Renesas の HEW環境では、普通にウィザードを使ってプロジェクトを作ると、VBRや割り込みハンドラの雛型が作られたり、リンカオプションでメモリ割付がデバッガを無視した内容になるため、プロジェクト作成時にちょっとした設定が必要になります。私は、HEWは使わず、コマンドプロンプトから make する環境を作っていますが、これはお好みで選択すれば良いでしょう。
ADBGSH7125の仕様概要
秋月電子 SH7125 ROMデバッガとサンプルアプリケーションのバイナリおよびソースを公開しますので、ご利用下さい。
ライセンスはBSDとします。
一応、お約束の免責事項です。このソフトウェアは無保証です。このソフトウェアを利用したことによって生じたいかなる損害に対しても、私は責任を負いません。
特に、このソフトウェアはFlash-ROMの書き換えを頻繁に行うことになります。RAM上でデバッグする通常のデバッガに比べ、確実にFlash-ROMの寿命は短くなります。各自の責任においてご利用下さい。
秋月電子 SH7125F マイコンボード側デバッガ ADBGSH7125 MOTファイル ソースファイル
PC側デバッガ ADEBUGSH.EXE 実行ファイル ソースファイル
サンプルアプリケーション hewtest01
ユーザープログラム作成用スタートアップルーチン romv7125.src/romv7125.h
参考(1): 環境設定用BATファイル ライブラリ作成用BATファイル
私の環境では、実はHEWを使っておらず、コマンドプロンプトから直接コンパイラをたたいています。HEW(Ver 4.02)のSH用ツールチェインはVer9.1ですが、このツールチェインがインストールされているフォルダには、環境設定用のBATファイルが用意されていて、これを呼び出すと、コマンドラインからビルドが出来ます。
HEWは便利なのですが、プロジェクトを新規作成する毎にリンカの設定やソースの登録などを行う必要があり、頻繁にテストプログラムを作るには、コマンドラインから make 出来たほうが便利です。
そこで、私の環境では、ADEBUGSH.EXEなどのツールを入れておくフォルダにパスを通し、そこからSHの環境設定用BATを呼び出すようにしてあります。ライブラリファイルも、最初に一度生成すれば、それを特定のフォルダに入れておいて、リンカへの指示を書く sub ファイルにライブラリのパス指定をして、使いまわしが出来るようにしています。
そのような環境設定をするBATファイルと、ライブラリを生成するBATファイルもおまけに公開します。
参考(2): サンプルアプリ(Flash-ROMダウンロード用) サンプルアプリ(RAMダウンロード用)
参考(1)で用意した、コマンドプロンプト環境で作るサンプルアプリです。HEWを使わずに make だけでビルドできます。ADEBUGSH.EXEもコマンドプロンプトから呼び出しますので、全ての作業をコマンドプロンプトで実行できます。
サンプルアプリは2種類あり、ユーザープログラムをFlash-ROM(0x2000から開始)に配置するタイプと、RAM上(0xFFFFA400から開始)に配置するタイプがあります。
Flash-ROMの書き換え回数保証は100回ですので、実力値でも1000回程度が上限になると思われます。小さなプログラムはまずRAMにダウンロードしてテストしたほうが良いでしょう。その設定を行ったタイプがRAMダウンロード用です。
この2つのサンプルは内容がまったく同じで、違いはユーザープログラムの配置がFlash-ROMかRAMかだけです。
ライブラリは、参考(1)で用意したライブラリを使います。ソースがあるフォルダに生成したライブラリを置いてください。