DEMO9S08QG8評価ボードを開発ツールとして使う

DEMO9S08QG8評価ボードは、HCS08マイコンシリーズ初の 「大ピン(DIP)マイコン」であるMC9S08QG8を搭載したボードです。 ここには、USB-BDMインターフェースが搭載されていて、 評価ボード上でICEとして使用できます。 せっかくだから、汎用的な開発ツールとして使ってしまいましょう。

アジェンダ

開発ツールってなんだろう

まず、HC08での開発環境について考えて見ます。 HC08マイコンにプログラムを書き込もうとすると、 以下のような開発環境が必要になります。

HCS08開発環境の概要

一つ目が、PCで動作する開発ソフトです。 テキストエディタでプログラムを記述し、 コンパイル、アセンブルをしてバイナリのコードを生成します。 さらに、USBインターフェースを介して プログラムの書き込みを指示します。 HCS08では、CodeWarriorというツールが提供されています。 無償版は、機能が限定されていますがアマチュアが使うには十分です。

二つ目は、開発ツールです。 開発ツールは、開発ソフトから発せられた指示を基に 実際にマイコンの端子電圧を制御してマイコンのプログラムを書き換えます。 この時にマイコンとのインターフェースとして使用されているのが、 16端子のピンヘッダで構成されるMON08インターフェースです。 Multilinkと呼ばれる開発ツールが代表的です。 また、マイコンのデータシートの記述を見て自作をすることもできます。

三つ目は、アプリケーションです。 このターゲットボードとも呼ばれるハードウェアは、 プログラムの開発者が準備します。

プログラムアダプタは、これらのうちの アプリケーションに相当するボードで、 マイコンのプログラムをするためだけにその機能を特化しています。 プログラムを書き込んだマイコンは、 取り外して別のアプリケーションに搭載します。

もう一つのインターフェース:シリアルモニタ

CodeWarriorがサポートしているインターフェースには、 Multilinkの他に「シリアルモニタ」という選択肢もあります。

シリアルモニタは、マイコンのROMに常駐している1Kバイト程度のプログラムです。 このモニタプログラムに対してCodeWarriorがROMの残りの部分へのプログラムの 書き込みを指示するという仕組みになっています。 その場合、割り込みベクタは、通常とは異なる場所にしか書き込むことが できないのですが、 HCS08は、割り込みベクタの位置を変更することが出来る機能を持っているため、 通常の場合と割り込みに要する時間などの条件を合わせることができます。

ただし、2006年1月29日現在、MC9S08QG8用に作成されたシリアルモニタは 公開されていない模様です。 MC9S08Gxシリーズ用のシリアルモニタは以下のアプリケーションノートに 記述があります。

AN2140 - Serial Monitor for MC9S08GB/GT

開発ツールを準備する

概要がわかったら、開発ツールを準備します。

DEMO9S08QG8評価ボード

Freeescale社は、多くの種類の評価ボードを販売しています。 その多くは、マイコンそのものの評価をするものなのですが、 最近の評価ボードは、評価ボードそのものに開発ツールが搭載されています。 DEMO9S08QG8もその一つです。

DEMO9S08QG8評価ボード

この評価ボードには、USBMULTILINKBDMという開発ツールと ほぼ同等の機能を持った USB-to-BDMインターフェースが搭載されています。 この写真の右下の部分がUSB-to-BDMインターフェースです。

DEMO9S08QG8評価ボードを改造する

実は、評価ボードそのままでは開発ツールとしては使用できません。 この評価ボードに2×3構成のピンヘッダを追加すると 開発ツールとしても使えるようになります。 追加する位置は、上の写真の左下にあるBDM_PORTと印刷された箇所です。

評価ボードの改造箇所
評価ボードの改造

これで、開発ツールの準備は完了です。

BDM接続ケーブルを作る

開発ツールとアプリケーションボードをつなぐケーブルは、 開発ツールには付属しています。 ところが、DEMO9S08QG8評価ボードには付属していません。 このため、自分で接続ケーブルを調達する必要があります。 ここでは、フラットケーブルとPRECIDIPコネクタを使った 接続ケーブル自作法を紹介します。

コネクタの端子構成

BDMコネクタは、2×3コネクタとして規格化されています。 このコネクタには、以下のような信号線が接続されています。

BDM規格コネクタの信号配置
信号名ピン番号ピン番号信号名
BKGD12VSS
N.C.34RESET*
N.C.56VDD

N.C.は、接続せず(Non-Connection)という意味を表しています。 開発ツールもこのコネクタ規格を使用しています。

2×3コネクタを接続する

ここで作成するケーブルは、6芯のフラットケーブルの両端に 2×3;コネクタを接続したものです。

材料は、フラットケーブル、コネクタ、それに2×3に加工した 基板の切れ端を使用します。 ケーブルは、奇数番を偶数番よりも多少短めにして予備半田しておきます。

BDMコネクタ部の材料

まず、基板の切れ端に被服を剥いだ奇数番のケーブルの先端を差し込みます。 写真では、奥から1番ピン、3番ピン、5番ピンになっています。

基板にケーブルをさす

次にケーブルを差し込んだままの基板にさらにコネクタの端子を差し込んで 半田付けします。

奇数番を半田付け

最後に偶数番のケーブルを基板とコネクタ端子の間に差し込んで、 半田付けすると完成です。

偶数番ケーブルを差し込む
偶数番を半田付け

同じ作業をケーブルの両端に行うと接続ケーブルの完成です。

接続ケーブルの完成

もっと簡単確実に接続ケーブルを作る方法

ここで示した接続ケーブルを自作する方法は、 もちろん、6Pコネクタが手元に無い場合の対処方法です。 最初から圧着コネクタを使用したほうが簡単確実です。 入手可能な方には圧着コネクタの使用をお勧めします。

アプリケーションとの接続

いよいよ、開発ツールとアプリケーションボードを接続します。 ここでは、例として アプリケーションK2K への接続を示しました。

評価ボードからMC9S08QG8チップを抜く

DEMO9S08QG8評価ボードを開発ツールとして使うには、 ソケットに搭載されているマイコンを取り外す必要があります。 IC取り外し冶具を使うのが最善なのですが、無い場合には、 ソケットとICの間にピンセットなどを差し込んでゆっくりとやさしく 抜いてやります。

マイコンを抜いた評価ボード

今のところMC9S08QG8チップは、この評価ボードでしか手に入りませんので、 壊さないように慎重に取り外して、導電性のスポンジで休ませます。

アプリケーションボードにマイコンを取り付ける

次に、アプリケーションボードに先ほど抜いたマイコンを挿します。

マイコンを挿入したアプリケーションボード

二つのボードをつなぐ

次に二つのボードをBDM接続ケーブルでつなぎます。

二つのボードをつなぐ

これで、プログラム開発の準備が完了しました。 この後のアプリケーション開発に関する詳細は、 アプリケーションK2K をご参照ください。

他のマイコンの開発ツールとしても使えるのか

DEMO9S08QG8が、もともとつながっていたMC9S08QG8の開発ツールとして 使えるのは、至極当然といえます。 それでは、この開発ツールは、 他のHCS08マイコンでも開発ツールとしても使えるのでしょうか?

MC9S08GT16サンプルアプリケーション

他のHCS08マイコンといっても、選択に困ってしまいます。 2006年1月29日現在、 MC9S08QG8以外にDIPパッケージのHCS08マイコンは存在しないからです。 ここでは、次善の策としてシュリンクDIP(SDIP)パッケージの MC9S08GT16CBにSUNHAYATOの変換基板を付けて試してみました。

MC9S08GT16サンプルアプリケーション

ご覧のように簡単にブレッドボードに仕上げてみました。 データシートにあった、"Basic System Connections" そのままの構成です。 変換基板のサイズが思いのほか大きかったのでパスコンの実装に 困り、0.1µFのセラミックコンデンサは、 変換基板の下に実装しています。

パスコンの実装状態

ブレッドボードに2×3のBDMピンヘッダを立てるのは難しいので、 BDMコネクタを直列に並び替えたコネクタを付けることにしました。

代替BDMピンヘッダ

もちろん、上で作成したBDM規格接続ケーブルを使うことは出来ません。 私は、BDMケーブルと同様の手法で別のケーブルを作成して使っています。 このピンヘッダを私はSBDM(Serial BDM?)と呼んでいます。 このピンヘッダの配置は、以下のようになっています。

SBDM規格コネクタの信号配置
ピン番号信号名
1RESET*
2BKGD
3VDD
4VSS

この配置は、MC9S08QG8の1番ピンから4番ピンの配列そのままです。 つまり、このコネクタをMC9S08QG8アプリケーションに使う時には、 マイコンの直近に直列にピンヘッダを立てるだけで対応できます。

プログラミングとデバッグ

プログラミングといっても何も難しいことはありません。 DEMO9S08QG8ボードとアプリケーションボードを接続して、 CodeWarriorを呼び出すだけです。

評価ボードと接続

このままでもICEの動作が可能であることは十分に確認できますが、 さすがに、マイコンだけでは寂しいので、PTBにLEDを並べてみました。

LEDを取り付けた

後は、ProcessorExpertの力を借りて、 一秒ごとにバイナリコードを表示する時計に仕上げました。

蛇足:バイナリ一分計の製作

LED6個で64カウントできますから、 一分計になります。 ProcessorExpertを使ったことがあるという前提で 簡単に説明をします。 ProcessorExpertの使い方の詳細は、 キューティーフラッシュ三値デジタル太陽計の 記事をご覧ください。

プロジェクトの作成

まず、新しいプロジェクトを作成します。 "C:\Projects\CW\gtsample1"というディレクトリに C言語を使う"gtsample1.mcp"というプロジェクトを作成します。 使用するデバイスは"MC9S08GT16"です。 ProcessorExpertをチェックするのをお忘れなく。

42PSDIPパッケージを使用するので、 "Select CPUs"では"MC9S08GT16_42"を選択し、 "Select Configurations"では、"Debug"を選択します。

ビーンの設定

このアプリケーションでは、二つのビーンを使います。

一つ目は、"TimerInt"ビーンです。 このビーンは、周期割り込み機能を提供します。 "Bean Selctor"で"TimerInt"ビーンをダブルクリックすると 新しいビーンが出来ます。 このビーンの"Interrupt Period"属性に"1sec"を指定して、 このビーンの設定は終わりです。

二つ目のビーンは、"ByteIO"ビーンです。 LEDを取り付けたPTBに割り当てます。 "Bean Selctor"で"ByteIO"ビーンをダブルクリックすると 新しいビーンが出来ます。 "Port"属性を"PTB"に変更し、 "Init. Direction"属性が"Output"になっているのを確認したら、 このビーンの設定も終了です。

コードの記述

ビーンの設定が終わったら、 "Make"ボタンをクリックしてコードを生成させ、変更に備えます。

まず、PTBに送り込む値を入れるための変数を定義します。 PTBには、8ビットの値を送り込みますので、 8ビット型"byte"の変数"value"を"gtsample1.c"ファイルで 定義します。 変数の初期値は0とします。

#include "PE_Const.h"
#include "IO_Map.h"

byte value = 0;

void main(void)
{
  /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  PE_low_level_init();

次に一秒ごとに行う処理を記述します。 この処理は"Events.c"というファイルの"TI1_OnInterrupt"という 関数に記述します。

void TI1_OnInterrupt(void)
{
  /* Write your code here ... */
  extern byte value;
  
  value = value + 1;
  Byte1_PutVal(value);
}

別モジュール"gtsample1.c"で定義した変数"value"を使うために "extern"で変数を宣言しています。 これで、"PTB"のLEDに表示される値が バイナリで一秒ごとに更新されます。

ROMへの書き込み

"P&E Multilink/Cyclone Pro"を選んでから"Debug"ボタンをクリックすると ROMへの書き込みの後、デバッグを行うことが出来ます。 以上で、バイナリ一分計の出来上がりです。

参考サイト

ブレッドボードラジオ
http://bbradio.hp.infoseek.co.jp/
2006-01-30 発行
Copyright (C) 2006 noritan.org ■