開発ツールがつながったら、 今度はマイコンにプログラムを書いてみたくなります。 これは、今までの機材だけではできそうにありません。 何とか、手持ちの機材で済まないかなあ。
緊急発行のため、写真も画面ハードコピーも間に合っておりません。 ご了承ください。
FLASH ROMにプログラムを書き込むためには、 専用の機材があると便利です。 DEMO9RS08KA2は、RS08マイコンに対応した評価ボードです。
RS08につながるでも書いたように、 RS08は、FLASH ROMの消去と書き込みを行うために12VのVPPと 呼ばれる電源を必要とします。 HCS08マイコン向けの評価ボードであるDEMO9S08QG8には、 12Vの電源を供給する能力はありません。
DEMO9RS08KA2評価ボードからは、 適切なタイミングで12V電源が供給されますので簡単にRS08マイコンの プログラムを書き込むことができます。
DEMO9RS08KA2を使用する前に ソフトウェアをインストールしなくてはなりません。
必要なのは、以下の二つです。
開発ツールの要は、やはりCodeWarriorです。 これは、すでに RS08につながるで インストールしました。
DEMO9RS08KA2評価ボードには、追加のCD-ROMが付属しています。 このCD-ROMの中には、評価ボード用のデバイスドライバなどが入っており、 あらかじめインストールしておくと、USBで評価ボードを接続したときに オペレーティングシステムが自動的に組み込んでくれます。
ソフトウェアのインストールが終わったら、 説明書を見ながら、ジャンパの設定を確認して、USBケーブルを接続すると、 あらかじめマイコンに書き込まれていた温度計アプリケーションが 動き出します。
同時に、デバイスドライバのインストールを促すダイアログが現れます。 ダイアログに従って、インストールしたら準備完了です。
早速、プログラムを書き込んでみましょう。
CodeWarrior を起動したら、 "Start Dialog"から"Create New Project"をクリックし、 新規プロジェクトの作成を開始します。
以下、簡単に設定を説明します。
項目 | 設定値 |
---|---|
Device | MC9RS08KA2 |
Connection | SofTec RS08 |
Language | Absolute assembly |
Project Name | KA2Blink |
Add Additional Files | Nothing |
Rapid Application Development | None |
"main.asm"の中の "variable/data section"のコメント部分から リセットベクタの直前の部分に至るまでを 以下のプログラムに置き換えました。
; ; variable/data section ; ORG TINY_RAMStart Var_i: ds.b 1 Var_j: ds.b 1 ; ; code section ; ORG ROMStart _Startup: ; Disable COP mov #HIGH_6_13(SOPT),PAGESEL bclr SOPT_COPE,MAP_ADDR_6(SOPT) ; Configure PTA5 as output. bset PTADD_PTADD5,PTADD mainLoop: ; Wait for a while L1: inc Var_i bne L1 inc Var_j bne L1 ; Invert the state of LED sta PTAD eor #mPTAD_PTAD5 ; Infinite-loop bra mainLoop
RS08につながるで 使ったプログラムとほとんど同じですが、プログラムを配置する先が RAMStartからROMStartに 変わっています。 このプログラムをディスアセンブルするとこうなります。
Abs. Rel. Loc Obj. code Source line ---- ---- ------ --------- ----------- 503 18 ; 504 19 ; variable/data section 505 20 ; 506 21 ORG TINY_RAMStart 507 22 a000000 Var_i: ds.b 1 508 23 a000001 Var_j: ds.b 1 509 24 510 25 ; 511 26 ; code section 512 27 ; 513 28 ORG ROMStart 514 29 _Startup: 515 30 ; Disable COP 516 31 a003800 3E 08 1F mov #HIGH_6_13(SOPT),PAGESEL 517 32 a003803 1F C1 bclr SOPT_COPE,MAP_ADDR_6(SOPT) 518 33 ; Configure PTA5 as output. 519 34 a003805 1A 11 bset PTADD_PTADD5,PTADD 520 35 mainLoop: 521 36 ; Wait for a while 522 37 L1: 523 38 a003807 20 inc Var_i 524 39 a003808 36 FD bne L1 525 40 a00380A 21 inc Var_j 526 41 a00380B 36 FA bne L1 527 42 ; Invert the state of LED 528 43 a00380D F0 sta PTAD 529 44 a00380E A8 20 eor #mPTAD_PTAD5 530 45 ; Infinite-loop 531 46 a003810 30 F5 bra mainLoop
これも、アドレスが違うだけで、全く同じです。
DEMO9RS08KA2評価ボードがUSBに接続されているのを確認し、 DEBUGボタンをクリックして、デバッガを呼び出します。
すると、"MCU Configuration"というダイアログが出てきます。 ここで、"Hardware Model"に"DEMO9RS08KA2"を選択して 「OK」をクリックすると、 FLASH ROMにプログラムが書き込まれます。
今まで、MON08を含めて、 すべて P&E Microcomputer Systemsの流儀に慣れていたため、 SofTec Microsystemsの インターフェースには慣れていません。
違いは、色々ありますが、一番の不安は、 プログラムがいつのまにか書き込まれてしまってることです。 以前のように「消してもいいか」ダイアログが出てこないので、 FLASH ROMの寿命がこないかどうか心配です。
次に"Start/Continue"ボタンをクリックするとプログラムが実行され、 評価ボード上のLED2が点滅を始めます。 写真では、もちろん点滅は見えませんが。
この実験をすると、PTA3に接続されているLED0も同時に光ってしまいます。 あれ?PTA3から"1"レベルを出した覚えはないぞ。 実は、PTA3は、デバッグに使用するBKGD端子も兼ねているため、 このプログラムを実行させると点灯してしまうのです。 厳密には、デバッガとの通信が行われているため、 LED0は高速に点滅しています。
この端子をユーザで使用したいときには、 プログラムの最初の方でSOPTレジスタの BKGDPEビットをクリアしてデバッガを切り離します。
ここまでは、RS08マイコンに対応したDEMO9RS08KA2評価ボードで 書き込みを行いましたから、 まあ、うまくいって当然のお話でした。
でも、せっかく、 手元にBDMインターフェースであるDEMO9S08QG8があるのだから、 これが使えないかと考えてしまうのは、人情というものでしょう。
DEMO9S08QG8のRESET*端子の代わりに、 006P乾電池二個と12V3端子レギュレータで構成した電源を接続して、 FLASH ROMへの書き込みができないかを試してみました。
しかし、この作戦はうまくいきませんでした。
「もしかしたら、VDD電源に3.3Vを与えたのでは足りないのではないか。」 と考えて、さらに3端子レギュレータで構成した5V電源をVDDに接続して FLASH ROMへの書き込みを試みました。
しかし、この作戦もうまくいきませんでした。
結局、単純に電源電圧を変更しただけでは 対応できないという事がわかってしまいました。 今後、MultiLinkがRS08に対応したときにファームウェアが提供される事を 期待するだけですね。
評価ボード上のマイコンにプログラムを書いてもつまらないので、 今度は、アプリケーションボードを作って、 BDMケーブルをつないでアプリケーション開発に挑みます。
2006-06-09 写真を二枚追加。
2006-06-06 緊急発行。