連載
» 2009年10月23日 00時00分 公開

H8マイコンのソフトウェア開発環境を整備しようイチから作って丸ごと学ぶ! H8マイコン道(7)(3/3 ページ)

[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]
前のページへ 1|2|3       

――いよいよH8マイコンのプログラムをGCCでコンパイルして実行します。健一君はすでにヘトヘトのようですが、晴子さんはノリノリです。さて、2人は無事に「H8Tiny-USB」を動かすことができるのでしょうか?

 GCCによるクロス開発環境が構築できたので、実際にC言語プログラムをH8Tiny-USBで実行してみましょう。

 連載第2回でも述べましたが、本連載では関連ファイルを“D:\develop\H8Tiny-USB”ディレクトリに置く約束でした。同じように、クロスGCCのプログラムは「h8300-gnu」ディレクトリに置くことにしましょう。図7のように「h8300-gnu」ディレクトリを作成して、ファイル「sw1.lzh」をその中に解凍してください。


プログラムの保存場所 図7 プログラムの保存場所

 準備ができたらコンパイルをはじめます。Cygwinで「sw1」ディレクトリに移動してください。

$ cd d:
$ cd develop/H8Tiny-USB/h8300-gnu/sw1 

 C言語プログラムをコンパイルします。次のコマンドで「sw1.c」をコンパイルしてください。

$ h8300-elf-gcc -c -mh -mn sw1.c 

 H8マイコン用のGCCは、h8300-elf-gccになります。「-c」「-mh」「-mn」はコマンド・オプションです。「-c」はコンパイルのみ実行する。「-mh」は300H CPUのコードを生成する。「-mn」はノーマルモードの指定です。

 コンパイルが無事に終了すると、図8のように「sw1.o」ファイルが新たに作られます。名前が.oで終わるファイルは、オブジェクト・ファイルで機械語プログラムが収まっています。

sw1.cのコンパイル 図8 sw1.cのコンパイル

 次にスタートアップ・ルーチンをアセンブルします。実はC言語プログラムは、それ単体では動きません。C言語プログラムが動作できるように実行環境を整え、main関数を呼び出すスタートアップ・ルーチンが必要なのです。

 スタートアップ・ルーチンはアセンブリ言語で記述されています。次のコマンドで「crt0.s」をアセンブルしてください。

$ h8300-elf-gcc -c crt0.s 

 今度は、図9のように「crt0.o」ファイルが新たに作られます。

crt0.sのアセンブル 図9 crt0.sのアセンブル

 続いてリンクです。スタートアップ・ルーチンとC言語プログラムを結合して、1つの実行ファイルを作ります。それでは、次のコマンドで「crt0.o」と「sw1.o」をリンクしてください。

$ h8300-elf-gcc -o sw1 -T 3664.x -nostdlib crt0.o sw1.o 

 「-o」オプションで出力ファイルの名前を指定しています。これがないと出力ファイルは「a.out」になってしまいます。「-T」はリンカスクリプトの指定。「-nostdlib」は標準のスタートアップ・ルーチンや標準関数をリンクしない指定です。リンクが終了すると、図10のように「sw1」ファイルが作られます。

crt0.oとsw1.oのリンク 図10 crt0.oとsw1.oのリンク

 最後に、ライタ・ソフトを使ってプログラムをH8マイコン内蔵のフラッシュメモリに書き込むために、実行ファイルをヘキサファイルに変換します。次のコマンドを入力してください。

$ h8300-elf-copy -O srec sw1 sw1.mot 

 すると、「sw1.mot」ファイルが新たに作られるはずです。「-O」でファイル形式を指定し、「srec」はモトローラSフォーマットを意味します。

H8Tiny-USBでプログラムを実行しよう

 C言語プログラムのコンパイルも終わり、ヘキサファイルも作ることができました。後は、ライタ・ソフトでH8マイコンにダウンロードするだけで、プログラムを実行できます。

 まずは、ライタ・ソフトをインストールしましょう。

 現在では、H8マイコン用のライタ・ソフトもいくつか選ぶことができます。秋月電子通商の開発CD-ROMにもありますし、ルネサス テクノロジからは「FDT(Flash Development Toolkit)」がダウンロードできます。今回はCygwinからコマンドで実行できる、「Open SH/H8 writer」を使います。

 「Linuxによるマイコンプログラムのページ」にアクセスしてください。Open SH/H8 writerは、みついわゆきお氏が開発したライタ・ソフトです。ここでWindows実行ファイル「h8write.exe」をダウンロードしましょう。h8write.exeは、“c:\cygwin\usr\local\bin”に入れてください。

 H8Tiny-USBに「AKI-H8/3664タイニーマイコン」をセットして、USBケーブルで接続します。このときH8Tiny-USBのスイッチはOFFにしておきます。

 連載第5回で述べましたが、PCのデスクトップの「スタート」ボタンを押し、「マイ コンピュータ」を右クリックし、ショートカットメニューから「管理」を選びます。デバイスの一覧に「ポート(COMとLPT)」−「USB Serial Port(COMx)」があれば成功です。

 それではH8/3664のフラッシュメモリに、プログラムを書き込みます。

 AKI-H8/3664タイニーマイコンの2つのショート・ピンを差し込み、H8Tiny-USBのスイッチをONにします。

 H8Tiny-USBのシリアル接続を「COM1」に設定して、Cygwinから次のコマンドを入力してください。すると画像1のようにプログラムが転送されます。

$ cd develop/H8Tiny-USB/h8300-gcc/sw1
$ h8write -3664 sw1.mot 

H8Tiny-USBのプログラムの書き込み 画像1 H8Tiny-USBのプログラムの書き込み

 続いてプログラムを実行します。

 H8Tiny-USBのスイッチをOFFにし、AKI-H8/3664タイニーマイコンの2つのショート・ピンを抜きます。

 ショート・ピンなしでH8Tiny-USBのスイッチをONにすると、プログラムが実行されます。7セグメントLEDに「0」が表示され、SW1を押すと表示が「1」に変わります。確認してみてください。

photo

何とかうまくいったようね。健一君。


photo

はい!!


これもすべて岡野さんのおかげです(すっかり満足)。


photo

まったく調子がいいわね。


photo

へへっ!


photo

さて、健一君の相手も飽きてきたから、今日はそろそろ帰ろうかなー。


photo

えー。そんなこといわずに、これから飲みにでも行きましょうよ!!


photo

ダメよ! 健一君にはステキなプレゼント(宿題)を用意しておいたんだから。


次回までに終わらせておいてね。そうしたら一緒に飲みに行ってあげてもいいわ。


じゃ、バイバーイ!!


photo

エッ……。



晴子さんからの宿題(1)

SW1を押したら「1」を、SW2を押したら「2」を、SW3を押したら「3」を7セグメントLEDに表示するプログラムを作ってね。ただし、スイッチが1つも押されていないときは「0」を表示すること!





 さて次回は、「C言語による制御プログラミング」について解説します。マイコンは裸のコンピュータなので、C言語プログラミングといっても特別なテクニックを必要とします。また、今回のC言語プログラムの内容と晴子さんの宿題についても解説します。お楽しみに!(次回に続く)


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.