連載
» 2011年03月31日 11時30分 公開

H8マイコンボードで動作する組み込みOSを自作してみよう!(1):フルスクラッチの“Hello World”を動かしてみよう (2/3)

[坂井弘亮,@IT MONOist]

2.4.必要なもの

 組み込み機器のソフトウェア開発は、Webアプリケーションなどの開発とは異なり、何かしらの機材が必ず必要となるものです。このような機材の選択や調達も組み込みシステムいじりの醍醐味(だいごみ)の1つです。

 本連載では、以下のものを利用します。


>>マイコンボード本体
 マイコンボード本体は、秋月電子通商の秋葉原の店舗で図7の状態で販売されています。価格は3750円(税込)で、通販でも購入可能です。

H8/3069Fマイコンボードのパッケージ 図7 H8/3069Fマイコンボードのパッケージ

 図8は、H8/3069Fマイコンボードの付属品です。マイコンボード本体の他に、ドキュメント類、CD-ROM、拡張用コネクタ、おまけの水晶発振子が付属しています。

H8/3069Fマイコンボードの付属品 図8 H8/3069Fマイコンボードの付属品

>>電源アダプター
 マイコンボードには電源アダプターは付属していませんので、別途購入する必要があります(図9)。

電源アダプター(5V) 図9 電源アダプター(5V)

 電源端子は2.1mm径の標準プラグ(中央プラス)です。電源の定格は電圧5V、電流80mA以上です。図9は秋月電子通商で購入したものです。価格は600円程度です。

>>シリアルケーブル
 開発用PCとマイコンボードとの接続は、シリアルケーブルによって行います(図10)。H8/3069Fマイコンボードにはキーボード端子やディスプレー出力などはないため、入出力はシリアルケーブル経由で行うことになります。ファームウェアの転送もシリアル経由で行います。

シリアルケーブル 図10 シリアルケーブル

 シリアルケーブル(いわゆるRS-232Cケーブル)にはD-SUB 9ピンのオス−メス、ストレートタイプのものを利用します。「シリアルストレートケーブル」「シリアル延長ケーブル」「RS-232C延長ケーブル」などと呼ばれているケーブルを用意してください。これも秋月電子通商で購入できます。価格は300円程度です。

>>開発用PC
 いうまでもありませんが、開発にはPCが必要です。

 マイコンボードとの接続にはシリアルインタフェースを用いますので、シリアル入出力ポートを持つPCが必要です。シリアル端子がない場合には「USBシリアルアダプター」が利用できますが、ファームウェアの書き込みがうまくいかない場合があるためあまりおすすめできません。

 筆者がおすすめするのは、中古PCショップなどで投げ売りされている安価な中古PCを購入して、開発専用機にしてしまうことです。KOZOSの開発専用にしてしまうならばさほどのスペックは必要としませんし、Ubuntuなどをインストールして使うならばWindowsは不要なので、OSなしの状態で売っているロースペックな旧式のもので構いません。これならば数千円程度で入手することも可能です。

>>USBシリアルアダプター
 上記のようにあまりおすすめはできませんが、シリアルポートのあるPCを用意できなかった場合には、USBシリアルアダプターを利用するという方法もあります。

USBシリアルアダプター 図11 USBシリアルアダプター

 写真のもの(図11)とは異なりますが、秋月電子通商で900円程度で購入できます。筆者がいろいろと使ってみた範囲では、この秋月電子通商のものが最も癖なく利用できるように思います。価格も安いのでおすすめです。


3.まずは、動作させてみよう

 今回は第1回として、まずはマイコンボード用の「Hello World!」をビルドし、動作させてみます。

 PC上でプログラミング言語を学ぶ際には「Hello World!」から入る場合が多いですが、ここでもそれにならってみます。ただし、マイコンボードの場合には外部ディスプレイなどはありません。H8/3069Fマイコンボードにはシリアル端子がありますので、今回はこのシリアル端子から「Hello World!」という文字列を出力するプログラムを動作させてみます。

 つまり、PCとマイコンボードを接続し、通信用アプリケーションを起動してからマイコンボードを電源ONすると、アプリケーション側に「Hello World!」と表示されるというだけのプログラムです。

 しかし、これだけのプログラムだとしても、やらなければならないことはいろいろとあります。リセットベクターの設定、スタックの設定と初期化、シリアルの初期化、文字列処理ライブラリの作成などが必要です。これらを全てフルスクラッチで作成してみます。

 なお、ここではWeb連載ということで簡便に説明しますが、詳細な情報が知りたければ参考文献[1]も併せて参照してください。

参考文献[1]:

  • 「12ステップで作る組込みOS自作入門」(カットシステム/著:坂井 弘亮)



3.1.PCの準備

 まずは、PCの準備が必要です。筆者が確認している開発環境は以下です。

  • FreeBSD
  • 各種GNU/Linuxディストリビューション(Ubuntu、Fedoraなど)
  • WindowsXP + cygwin 環境
  • WindowsXP + andLinux 環境

 他にもMacなどで開発している方もいるようです。

 Windowsを利用したい方は、「cygwin」を利用するのが簡単です。また、「andLinux」を利用すればWindows上にUbuntu環境が簡単に構築できます。他にも各種エミュレータなどを使って、仮想PC上にUbuntu環境を構築するというのもいいでしょう。

 本稿では、FreeBSDか各種GNU/Linuxディストリビューションでの利用を前提として説明します。筆者のページでも細かい注意点などを説明してありますので、参考文献[2]も併せて参照してください。


3.2.ビルド環境の作成

 まずはファームウェアの作成のために、クロスコンパイラをビルドしてインストールします。

 本連載では、クロス開発のコンパイラ環境として、GNUプロジェクトのbinutilsとgccを利用します。binutilsは、アセンブラやリンカなど、各種プログラミング言語に共通のツール類です。gccはおなじみのCコンパイラです。

 まずは適当なGNUのサイトから、binutilsとgccをダウンロードしてください。binutilsは本稿執筆時点での最新版である「binutils-2.21」がいいでしょう。gccはバージョン4系だといろいろと問題が発生する場合があるので、本稿では「gcc-3.4.6」を利用します。

 binutilsは、以下の手順でビルドできます。

% tar xvzf binutils-2.21.tar.gz
% cd binutils-2.21
% ./configure --target=h8300-elf --disable-nls
% make
% su
# make install
 

 「make install」を行うと、「/usr/local/h8300-elf/bin」に以下のファイルがインストールされます。確認してみてください。

% ls /usr/local/h8300-elf/bin
ar      as      ld      nm      objcopy objdump ranlib  strip
 

 gccは、binutilsのインストール後に以下のようにしてビルドしインストールします。「--enable-languages」はC言語のみとし、C++は指定しません。このため、newlibなどのライブラリ類はインストール不要です。

% tar xvzf gcc-3.4.6.tar.gz
% cd gcc-3.4.6
% ./configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c
% make
% su
# make install
 

 「make install」を行うと「/usr/local/h8300-elf/bin/gcc」が作成されます。

% ls /usr/local/h8300-elf/bin
ar      as      gcc     ld      nm      objcopy objdump ranlib  strip
 

 注意として、以下のものがあります。2番目と3番目については筆者のサポートページ(参考文献[3])で対処を紹介してありますので、参考にしてください。

  1. ビルドに失敗した場合は、「./configure」の実行の際に「--disable-werror」というオプションを付けてみる
  2. ビルド中に「inlined from ‘collect_execute’ at ./collect2.c:1537:」のようなエラーで停止する場合がある
  3. 64ビットマシンだと「./libgcc2.c:537: internal compiler error: in extract_insn, at recog.c:2083」というエラーでgccのビルドが終了してしまう

 binutilsやgccのビルドがうまくいかない場合には、ビルド済みのパッケージをインストールするという方法もあります。マイコンボードの付属CD-ROMに添付のパッケージを使ったり、GNU/LinuxのH8開発用パッケージをパッケージマネジャーでインストールするといったことが可能です。

 また、インターネット上のコンパイルサーバを利用するといった選択肢もあります。これは筆者が運用しているサーバで、ソースコードをサーバにメール送信すれば自動コンパイルして返信してくれるというものです。これを利用すれば開発環境を構築することなく開発が可能になります。

 これらについては幾つか注意点もありますので、詳しくは参考文献[3]の「開発環境がうまく構築できない場合の注意」を参照してください。

Copyright © ITmedia, Inc. All Rights Reserved.