|
|
|
購入ページへ |
2-1 クロスコンパイラ編
実習にさきだち、セットアップが正しく行われているのを確認し、クロスコンパイラ等の使用に慣れるため、ここでは簡単なプログラムを作って実際にキットを動かしてみましょう。コマンドやツールについては後ほど詳しく解説しますので、やや「天下り」的な操作が続きますが、まずは気楽に、課題プログラム作成から実行までの流れをつかんでください。すでにプログラム開発の経験をお持ちの方は、本章は適当に読み飛ばして構いません。
実習でプログラムを作成し、動作させるまでの流れを大雑把に図示すると下のようになります。作業にとりかかる前に、このような一連の流れを頭の中でイメージできるようにしてください。
それでは早速試してみましょう。まず、テキストエディタ(メモ帳(notepad)等)を使って、ソースファイル「tutorial.c」を開きます。場所は、ディレクトリ「tutorial」の下にあります。サンプルプログラム集を展開(インストールガイド参照)した際に、すでに一緒に作成されているはずです。このプログラムは、意図的に未完成の状態になっていますから、題意に従い(下のリストを参照)適当に編集・修正して、同じ場所に上書き保存してください。このとき、いくつか注意すべき点があります。
- コメント(「/*」から「*/」までの間)や定数を除き、全角文字を使用してはいけません。特にスペース(空白)は、エディタによっては表示されませんから注意しましょう。ソース内の空白には必ず半角スペース(またはTAB)を使用してください。(2バイト系文字(漢字など)の使用は可能な限り避けることを推奨します。また、ファイル名に漢字等は使用できません。)
- C言語では大文字と小文字を区別します。つまり、「A」と「a」は全く別のものとして扱われますから、気をつけてください。
- ファイル名は「tutorial.c」として保存してください。コンパイラは、拡張子(.c)によってC言語のソースであることを認識し、自動的に適切なプロセスを処理します。したがって、拡張子は必ず小文字のcでなければなりません。
このプログラムは、文字列として定義された定数配列をシリアルコミュニケーションインタフェース(SCI)から出力する処理の例です。main関数の中に何やらゴチャゴチャ記述されていますが、とりあえず気にせずに、操作の手順に慣れてください。(SCIについては、実習で詳しく取り上げます。もし、設定や処理の詳細について情報が必要な場合は、H8/3048Fのハードウェアマニュアル(ADJ-602-093G)を参照してください。)
マイコンの周辺I/Oを制御するレジスタは、ヘッダファイル「3048f.h」の中で共用体として定義されています。このファイルは、「../include」(作業ディレクトリの一段上の「include」の下)にありますから、必要に応じて参照してください。ただし、くれぐれも不用意に改変しないように注意してください。
さあ!コンパイルです。シェル上で、ディレクトリ「tutrial」へ移動した後、
$ make↓
と入力してください。ソースファイルに問題がなければ、コンパイル→ファイル変換を経て、「tutorial.o」「tutorial.map」「tutorial.mot」等というファイルが作成されているはずです。確かめてみましょう。
$ ls↓
もし、何か不具合があるとコンパイルは中断し、エラーメッセージが表示されます。この場合、エラーメッセージに従って必要な修正を行ってください。(たいていの場合、文末のセミコロン「;」を忘れていたり、カッコ(「{」と「}」または「(」と「)」)の数が正しく対応していない等、ソースファイルの記述ミスです。)ソースファイルを修正し、再度コンパイルするときには、一旦、必ず出力結果(中間出力結果を含む)を全て消去しておきましょう。次のようにします。
$ make clean↓
簡単ですね。その後で、再度 make を行えば良いわけです。さて、実行可能なメモリイメージ「tutrial.mot」が作成されていますか? 不幸にして見つからない(何らかの理由により作成されない)場合、先に進むことができません。ここまでの手順をもう一度じっくりと見直してください。
|
|