![]() |
★★★ 秋月通商 H8プログラム開発環境 ★★★ |
| 秋葉原の秋月通商が販売しているH8マイコン開発キット「AKI−H8開発キット」には、CPU基板とその CPUボードを挿入するLED、スイッチ、16文字×2行のLCDディスプレィ、RS-232Cコネクタが 付いたマザーボードが付きます。 概観は「AKI H8キット製作」を見て下さい。 オリジナルを若干改造していますが、原型のマザーボードに近いです。 ユニバーサルパターンが、ありますので回路を追加実装する事も可能です。 このキットを最初購入したのは、2001年ぐらいでした。 定かでない(^^;) その当時は、3048だけで、3052の基板がまだ出てなかったのではと思います。 組み立てたのは、購入して1年ほど経過してからです。 いまは、3052の AKI-H8開発キットも出ています。 で、ここでの本題ですが 購入した当時、キットには、アセンブラと ライターソフトが付いていると書かれていました。 それと、別売で 1. AKI-H8用 Cコンパイラ 2,000円 2. AKI-H8用 モニタデバッガ 2,000円 を 購入しておりました。 で、これらを使いH8のプログラム開発を始める訳ですが、正直なところどこから手をつければいいのか勘がまったく掴めない状態でした。 私は、遥か 20年近く前、Z80の ROM化プログラムを CP/M上にて作った事がありますが、 それ以降、パソコン上にて動くプログラム開発が主で、クロス環境でマイコンのプログラムを開発するという事から、10数年ほど、遠のいていました。 H8 CPUを理解しようと本を読んでも、最初は眠くなるので、まずは秋月のキットに付属のサンプルプログラムを動かす事から始めました。 最初は訳は分らずマニュアルに書いてある通りに操作して、さしあたり動く事を確認しました。 ハードは壊れてないという事でちょっと安心しました。 H8マイコンがどのようなマイコンであるのか理解するには、アセンブラでプログラムを作るのが一番と私は考えます。 最近は、組み込みマイコンにも C言語を使うのが当たり前になってきてますが、私はアセンブラを使うことにあまり抵抗が無いのです。 言語には適正があるので、アセンブラに不向きな物をアセンブラで無理して作ろうとは考えません。 論理的にややこしいものは、Cで作った方がいいに決まってます。 CPUのレジスタ構造とか、コンディションコードフラグレジスタ、アドレッシングモード、割り込み、I/Oポートとかを理解するのはアセンブラが、CPUのハードと 1対1に対応するので直接的に理解できるという事です。 で、秋月のサンプルプログラムも、実は ソースは、アセンブラでした。 H8の アセンブラプログラミングを理解するために最初、サンプルプログラムのソースから逆フローを書いてみました。 そのソースが何をしようとしているかを理解するためと、アセンブラの記述方法の理解と、目的の動作をさせるために オペコードをどのように組み合わせればいいのかの勘所を掴むためです。 この逆フローを書くのは結構理解の手助けになりました。 次にモニタデバッガを使ってみました。 最初、これがあるのと無いのでは、大違いです。 このモニタデバッガ上でサンプルプログラムを動かし、アセンブラレベルで、ブレークポイントを設定したり、1ステップ毎に処理を進めたり出来ますので、もろCPUが命令を実行していく状態を確認できます。 開発環境は、Windows( 私の場合 Windows98)の DOS窓です。 ソースを編集するエディタは、Windowsで動作するものであれば何でもいいです。 (ソースファイル *.MAR ) V <アセンブラ A38H.EXE> V (リロケータブルファイル *.OBJ ) V <リンカ L38H.EXE> V (アブソリュートファイル *.ABS ) V <16進ファイルコンバータ C38H.EXE> V (モトローラ16進ファイル *.MOT ) V <ライターソフト FLASH.EXE> この処理の流れは、昔のMS-DOS時代のプログラム開発の手順に似ているので、私としては,理解しやすかったです。 そして、OBJファイルの段階で、Cや アセンブラの複数オブジェクトをリンクできるのも MS-DOS時代のやり方と同じなので MS-DOSで、C言語(LatticeCや MS-C)でプログラム開発の経験がある方であれば入りやすいと思います。 秋月の開発ツールは、ある意味入門者には都合がいい部分もあるかもしれません。 それは、あまり余分な機能が入ってない分、使い方が単純なのです。 日立のHEW等は、エディタも含めたH8マイコンの統合開発ツールになっていますが、多機能すぎて初心者には難しい部分があるかもしれません。 秋月の開発ツールは単純である分、本質的な部分だけ考えればいいのです。 秋月の開発ツールは、細かい部分では、ここがこうなってくれればと思うところがいくつかあります。 アセンブラで、マクロを使いたい。 アセンブル制御 if 〜 else〜 endif が使えないか等...。 C言語で、 // のコメントを使いたい。 ライブラリメンテナンスユーティリティが欲しい等...。 これらの要求は私が、プログラムを作成する事を本業としているから考えてしまうのかもしれません。 でも、このような要求は、ある程度本格的に使い込もうとする場合、欲しいと思う機能なので 簡単なプログラムを作られる方には、どうでもいい事かもしれません。 ( 学生さんや 個人の方が勉強される用途では、単純である分使いやすいと思います。 ) それと統合開発環境と異なり、自分でアセンブル、コンパイル、リンクのコマンド行を打ち込む必要があります。 バッチファイルを作れば、打ち込む手間はある程度省けます。 今、何をやっているのかを理解する意味では、コマンドを打ち込み、やっている作業が全て見えている方が理解しやすいです。 H8プログラミングの事について細かいことを書いているとかなり長くなるので、 私が最初、H8に取りかかった時 勉強用に作成したドキュメントファイルをUpする事にしました。 人によっては秋月のキットには、ペラペラの説明書2〜3枚しか付いてないのでちょっと怖いという方もおられます。 これについては、価格が安い分仕方ない部分もあるのではと思います。 あるいはキットというよりは、秋葉原ショップ流の、必要な部品の詰め合わせセット的なところからスタートしているからかもしれません。 このページを読まれる方に役に立つかどうか分りませんが、私の情報公開で多少なりとも秋月のキットの開発環境が、どのようなものかイメージを掴んで頂けたら幸いと思います。 但し、当初 自分のH8を理解する上での勉強用に作った資料なので、ドキュメントの内容等、整然と書かれているとは言いがたい部分もあります。 その点についてはご容赦ねがいます。 また、お決まりの宣言ではありますが、記載した内容等を利用した結果等について保障、責任等、当方では一式負いませんので 利用される方の責任でもって行って下さい。 |
| H8_開発手順.PDF 秋月のH8用アセンブラを用いたベーシックな手順説明です。 |
|
| AKI_H8_USB_Check.PDF AKI-H8-USB開発ボードキットの USBの動作チェックに関わる資料です。 |
|
| シリアルコネクタ.PDF AKI-H8だけの物では有りませんが、RS-232Cコネクタの信号ピンアサイン表です。 |
|
| testフロー1.PDF サンプルプログラム( RS-232Cの簡易エコーバック処理)の逆フローです。 |
|
| MBtestフロー.PDF AKI-H8マザーボードのI/Oを動かすサンプルプログラムの逆フローです。 |
|
| AKI_H8_ピンアサイン.PDF AKI-H8 ( 3048, 3052 共通 ) CPU基板の 2.54ピッチコネクタのピンアサイン表です。 |
|
| H8アセンブラ補足.PDF アセンブラの説明と、H8マイコンの内臓周辺回路の説明の一部です。 |
|
| H8アセンブラ補足_2.PDF H8マイコンの内臓周辺回路の説明の一部です。 |
|
| C_ASMインタフェース.PDF C言語とアセンブラ間での関数呼出しにおける引数の渡し方、関数値の返し方の説明です。 |
|
| H8_IOCS.PDF 共通のI/O処理をライブラリモジュールにしようと検討した資料です。 |
|
| H8_IOCS_MANUAL.PDF ベータ版の IOCSのマニュアルドキュメントです。 |
|
| rst_int.lzh スタートアップモジュール(Reset割り込みベクトル設定)に上記、IOCSベータ版を組み込みました。 スタートアップモジュールと考えるとやや大きいです。 LZHファイル内には、rst_int.OBJはもちろん、ソースも全て入ってます。 独自ライブラリを作るときの参考のなればと思います。 本当は、OBJファイルでなく、LIBファイルにしたかったのですが、秋月の開発環境には、独自ライブラリ構築用の ライブラリアンが無かったため、このような形にしました。 使用するためには、秋月のH8開発ツール付属の(アセンブラ、リンカ、フォーマットコンバータ、ライタソフト)と 秋月 H8用のCコンパイラが必要です。 キットによっては、Cコンパイラも含まれている物が あります。 (個人で使われる分には、自由に使用されてかまいません。 但し、動作を保障する物ではありません。 個人の責任で使用して下さい。 ) この、IOCSを商用で使われる事は想定しておりませんが、もし利用される場合は、メールを下さい。 ( 企業で本格的に使われる場合は、日立の HEWを使われるでしょうから、HEWとは多分互換性がないと思います。) |
|
| Loader.MOT H8/3052用 RAM プログラムローダ 秋月の H8用のモニターデバッガは、H8/3048をターゲットにしたものです。 デバッグするプログラムは、RAMにロードされる訳ですが、H8/3048は、RAMが 4Kbyteしかないためプログラムサイズが ちょっと大きくなると、RAMに入らなくなっていました。 H8/3052は、RAMが倍の 8Kbyteありますが、H8/3048用のモニターデバッガを入れると RAM先頭アドレスが 4Kを想定した固定になっているため、モニターデバッガの仮想ベクトルや内部変数が RAMアドレスの真中にロケーションされて分断されるため連続して8K使えないのです。 で、さしあたり、デバッグしたいプログラム( MOTファイル)を RS-232C 9600bps N81で受けて RAM( h'FFE000 )から配置して、h'FFE000から実行をかける RAMロードだけの機能のローダを作りました。 ( ブレーク機能やステップ実行の機能はありません。 メモリの16進ダンプと、メモリの置き換えコマンドはあります。) RAMでデバッグの実行が出来れば、フラッシュの書き込み寿命を気にしなくてすみます。 使用する場合、パソコン側は Hyper Term等のターミナルソフトで、 9600[bps] 、データ長 8bit、パリティ無し、1Stopbitで 行って下さい。( フロー制御は一応 X on , X off が入ってます。) コマンドは、 ?[Enter] で 簡単な Help表示が出ます。 Loader.MOTは、デバッガを使いなれている方でないと、使い方が分らないと思われますので 暇が出来た時、操作説明書を作っておきます。 (^^;) 参考に私が作ったアセンブラのヘッダファイルの RAMアドレス定義のところを以下に示します。 ; ================================================================== ; ★★★ プログラム実行CPUの 選択 ★★★ ; ------------------------------------------------------------------ ; ram_head .EQU h'FFEF10 ; CPU = H8/3048F ram_head .EQU h'FFDF10 ; CPU = H8/3052F ; ram_head .EQU h'FFBF20 ; CPU = H8/3069F ; ================================================================== ; ★★★ 3048用モニタデバッガ使用時の ROM位置シフト ★★★ ; ------------------------------------------------------------------ vct_offset .EQU h'0 ; 通常の ROMベクタオフセット ; vct_offset .EQU h'FFC000 ; H8/3069 仮想RAMベクタオフセット ; vct_offset .EQU h'FFE000 ; H8/3052 仮想RAMベクタオフセット ; vct_offset .EQU h'FFF000 ; H8/3048 仮想RAMベクタオフセット |