愛知県工業技術センター研究報告第３７号 （２００１）

Ｌｉｎｕｘを用いたマイクロコンピュータの開発システムの構築
堀場隆広*1

安田篤司*2

盛田耕作*1

Establishment of a Microcomputer Development System Using Linux
Takahiro HORIBA, Atsushi YASUDA and Kosaku MORITA

本研究では Linux を OS(Operating System)として動作するパソコンを組み立て、インターネット上に公開されているオープンソースを用いて、安価なマイクロコンピュータの開発システムを構築した。構築した開発システムのソフトウェアは、クロス C コンパイラとマイクロコンピュータの転送プログラムから成っている。この開発システムを用いて簡単なプログラムを作成し、市販のマイクロコンピュータボードにプログラムを転送してその動作を確認した。

１．はじめにクロス開発環境
転送プログラム

オープンソースは、プログラムのソースコードを無償で公開し、多くの人にプログラムを利用してもらい、バグの少ない完成度の高いプログラムを短期間で作成するという開発手法である。また、プログラムのソー組込用マイコンシステム

スコードが公開されているため、だれにでもプログラ
ムの入手、変更、再配布ができる。インターネットの急速な普及により、オープンソースの考え方は、世界ＲＳ−２３２Ｃ中に広まり、インターネットを通じて、プログラムの公開が容易にできるようになった。代表的なオープン

図１

開発システム（Ｌｉｎｕｘ）

開発システム

ソースとして、フィンランドの Linus Torvalds 氏によって開発された UNIX 互換の OS である Linux とアメリめにプログラム（以後、転送プログラムと呼ぶ。）を入

カの Richard Stallman 氏が中心となって設立されたれて、開発システムとした。

FSF(Free Software Foundation, Inc.)において公開されているオープンソース群がある。

このシステムを用いたマイクロコンピュータのプログラムの開発手順は、以下のとおりである。まず、開本研究では、Linux と FSF において公開しているオ発システムに入っているテキストエディタを用いて、ープンソースを用いてマイクロコンピュータの開発シマイクロコンピュータのソースプログラムを作成する。

ステムを構築したので報告する。

次にできたソースプログラムをクロスコンパイラで組２．開発システム

込用マイコンの実行形式のプログラムを作成する。こ開発システムの構成を図１に示す。開発システムは、のプログラムをシリアルインタフェースでマイコンボ

市販のマザーボード等のパソコン用部品から開発シスードに転送・実行してプログラムの動作を確かめる。

テム(Linux)の構築に適したしたものを選択・組み合わ2.1

パソコンの組立せたものである。このパソコンにマイクロコンピューLinux を市販のパソコンに導入した場合、Linux がタ（以後、マイコンと呼ぶ。）のプログラムを開発する

正常に動作しない大きな要因に Linux の入出力デバイためのプログラム（クロスコンパイラ）と組込用のマスドライバのプログラム（以後、ドライバと呼ぶ。）のイコンにシリアルインタフェースを用いて転送するた有無が挙げられる。市販のパソコンに合わせて、Linuxのドライバを作成したり、ドライバ組み込んだりする*1 機械電子部*2 材料部とシステムの設定に時間を要する。
そこで、今回は、配布されている Linux のシステム

愛知県工業技術センター研究報告に入っているドライバの適合性を調べ、ドライバに合(1) パソコンから組込用マイコンへプログラムを転った入出力のデバイス（カード）等を選択して、パソコンに組み込んだ。製作したパソコンの仕様を表１に第３７号 （２００１）

送して実行できるようにする。
(2) 転送プログラムの操作が容易に行えるように示す。

GUI(Graphical User Interface)を利用して作成
表1

する。

Linux 用パソコンの仕様
能(3) (2)を考慮して Linux のウインドウシステムのCPU

733MHz一つである GNOME のアプリケーションとして動メモリ

128M バイト

ハードディスク

20G バイト

部品名

性作するようにする。
(4) メニューの拡張ができるようにする。
(5) プログラムの転送は、RS‑232C を用いる。
以上のことを満足するように、GTK+1) のライブラリ

2.2

Linux の選定を使って転送プログラムを構築した。GTK+は、図 2 にLinux は、オープンソースとして多くのボランティ示す階層構造をとる。GTK+は、MIT で UNIX 用に開発さア団体によって開発されているので、幾つかの種類れた X ウインドウ用のライブラリである Xlib 上に新た(distribution)がある。本研究では、Linux をマイクにライブラリを構築して、X ウインドウのプログラム

ロコンピュータのソフトウェアの開発システムとしてをより開発しやすくしたオープンソースのライブラリ利用するので、Linux のシステムの細部まで知る必要である。

がある。そこで、比較的プログラミングに関する資料転送プログラムの多い Redhat 社の Redhat Linux を用いた。この Linuxを基にマイクロコンピュータの開発システムを構築しXツールキット(GTK+）

た。
Ｘlib

2.3 クロスＣコンパイラの生成研究では、組込用マイコンとして、比較的多く使わ図2GTK＋の構造れている日立製作所の 16bit マイコン H8 を使用した。
H8 のクロス C コンパイラは、オープンソースである

転送プログラムは、図 3 に示すフローで構築した。

gcc(GNU Compiler Collection)を用いて以下の手順で作成した転送プログラムは、大きく分けて三つの処理生成した。

グループから構成される。

(1) gcc の C 言語のソースコードをハードディスクに展開する。

(1) ウインドウとデバイスの初期化(2) メニューの選択(2) H8 用のオブジェクトコードが生成されるよう(3) 各メニューの処理（コールバックルーチンと呼に設定する。

ぶ。）(3) Linux の載ったパソコンに標準で入っているイ
スタート

ンテル社製の 86 系プロセッサ用の gcc を用いてコンパイルし、H8 用のクロス C コンパイラを生ウインドウとデバイスの初期設定成する。
(4) 生成した H8 用のクロス C コンパイラを実行でき

Yes

No
メニューが選択されたか？

るように設定する。
開発システムの構築のため用いたオープンソースは、

メニュー

表 2 のものを用いた。
メニュー
実行

表 2 用いたオープンソース
オープンソース名
プログラムの種類
gcc

C コンパイラ

binutil

アセンブラ、ローダ

図3

ファイル

ヘルプ

終了

ファイル
選択

ヘルプ
表示

終了

ファイル
転送

転送プログラムのフローウインドウシステムとデバイスの初期化は、プログ

2.4

転送プログラムの開発

転送プログラムの開発においては、次の五つの点に考慮した。

ラムが実行されると同時に RS‑232C とウインドウシス
テムを初期化し、ウインドウを画面に表示する（写真1）。初期化は、メニューをマウスで選択したときと

愛知県工業技術センター研究報告RS‑232C からデータが入力されたときに、指定した処第３７号 （２００１）実行を行った。

理ルーチンに飛ぶイベントの登録を行っている。
ウインドウにある各メニューの動作は、メニューをマウス等で選択することによって、割り込みが発生し、初期化で登録されたメニューの処理ルーチンであるコールバックルーチンが実行される仕組みになっている。
転送プログラムのコールバックルーチンの中にメニューの「開く」と「終了」のルーチンが用意されている。
「開く」のメニューをマウスで選択するとファイル選択のダイアログ（ファイルセレクションダイアログ）

写真 2

マイコンボードが表示される。ダイアログ上でマウス等を用いてファイル名を選択してから、OK ボタンを押すとダイアログ

3.2 クロス C コンパイルからプログラムに選択されたファイル名が渡され、そgcc から生成したクロス C コンパイラを用いて、Cのファイルが RS‑232C を経由してマイクロコンピュー言語のソースコードをコンパイルした結果を図 4 に示

タボード（以後、マイコンボードと呼ぶ。）に転送されす。用意した C 言語ソースプログラム図 4(a)は、数行る。「終了」メニューを選択するとウインドウの終了ルの小さなプログラムである。これを H8 用のクロス Cーチンを呼び、ウインドウが閉じて転送プログラムのコンパイルラを使ってアセンブリ言語のコードを生成実行を終える。「ヘルプ」メニューの中にある「バージした。その結果を図 4(b)に示す。結果から C 言語のソ

ョン」のメニューは、プログラムのバージョン、作成ースコードが H8 のアセンブリ言語になったことが分者名、作成年月日、コメント等を書いたダイアログをかる。

表示するようになっている。まだ、現在の転送プログ
ラムのメニューは少ないが、今後、拡張できるような#include <stdio.h>構造になっている。

int main( ){printf(“Hello world¥n”);}(a) C のソースプログラム.section.rodata.LC0:.string"hello world¥n".text.align 4.globl main.type main,@function
main:pushl %ebpmovl %esp, %ebp
subl $8, %esp

写真 1

転送プログラムの実行

subl $12, %esp
pushl $.LC0

３．開発結果および考察

call printf

3.１ マイクロコンピュータボード

addl $16, %esp

プログラムを実行するために用いたマイコンボー

leave

ドを写真 2 に示す。このマイコンボードは、市販の組ret

立キットを用いた。これは 128K バイトのフラシュメモ
リと RAM4K バイトの 16bit の 1 チップマイコンである(b) オブジェクトコード（H8）H8 により構成されており、外部インタフェースとして、

図 4 ソースプログラムと生成されたコード

RS‑232C がある。このマイコンボードと生成したクロスＣコンパイラを用いて簡単な C 言語のプログラムの愛知県工業技術センター研究報告3.3

第３７号 （２００１）

実行プログラムの生成

組込用のマイコンは、OS を持たないので、C 言語のプログラムを実行する場合、図 5 に示すように、アセンブリ言語プログラムによって C 言語の実行環境を整えてから C のプログラムを実行する。この C 言語の実行環境を整えるプログラムを C のスタートアップルーチンと呼ばれている。今回これを作成して、アセンブルし、図 4 のＣ言語のプログラムをリンクした。そして、オブジェクトコードをマイコンボードに転送できるように 16 進数の文字コード（ヘキサコード）に変換した。
実行

写真 4

ファイル選択画面

写真 5

プログラムの実行

スタートアップルーチンの実行

Ｃ言語ｍａｉｎ関数の実行

プログラムの終了
図5

C 言語の実行手順

４．結 び
本研究では、Linux を用いた安価なマイコンの開発

3.4 プログラムの転送および実行プログラムの転送は、写真 3 に示すように、パソコンとマイコンボードを RS‑232C で接続して行った。

システムを構築した。開発システムは、パソコンと開発用のプログラムからなっている。パソコンは、Linuxを導入するためにパソコン部品を選定して製作した。
今後、この開発システムと LAN の付いたマイコンボードを用いて、工場にある機器等の計測データを収集・分析して、ホームページに自動的に公開するシステムを構築していく予定である。

参考文献
1) Kurt Wall, et al.:Linux Programming SecondEdition,P637(2001),Sams Publishing

写真 3

パソコンとマイコンボードパソコンで、転送プログラムを実行して、ファイルメニューの「開く」を選択すると写真 4 に示すファイ
ルセレクションダイアログが表示されて、送りたい実行ファイルを選択するとプログラムの転送が始まる。
転送が終了した時点で、マイコン側からプログラムを実行する番地を入力すると写真 5 のように表示され、プログラムが正常に実行したことが確認できた。