ソフトウェアの開発環境を知る ―― さまざまなマイコンをサポートするフリー・ツールを使う

山際 伸一

3.GNUツールを用いた開発環境

 統合開発環境といってもGUIがあるだけで,裏ではGNUツール群を実行しているだけの場合があります.GNUツールは,たいていのプロセッサをサポートしています.つまり,どのようなツールがあり,どこで手に入れるかなどの基本的な知識があれば,GNUツール群を使って,すぐにでも無償で開発を始められることになります.

 ただし,ROMに実行形式のデータを書き込むためのツールは必要になる場合があります.

●GNUツールでクロス開発環境を構築する

 GNUツールはさまざまなOS上で利用することができます.最近よく用いられる環境はCygwinです.

 Cygwinは,図10に示すWebページからsetup.
exeをダウンロードし,インストールすることができます.



図10 CygwinをダウンロードできるWebページ(http://www.cygwin.com/

 

 GNUツールは,さまざまな環境下で動作可能です.逆に言えば,特定の環境を想定したバイナリを用意することが難しくなります.Linuxのような完全にパッケージ化された環境下の場合であれば,あらかじめバイナリを用意することができます.しかし,Cygwinはインストールする時期によってバージョンが変わってしまうため,多数の環境が存在してしまいます.特定のバイナリでは,必ずしも動作するとは限らない問題があります.

 GNUツールはソース・コードで提供されています.ソース・コードをコンパイルして利用することをお勧めします.バイナリを配布をしているWebページもありますが,ウィルスがしかけられていることがあるので注意が必要です.

●GNUのライセンスの理解が必要

 GNUツールのソース・コードを入手し,コンパイルすることで,GNUツールを利用する環境が整ったとします.ここで「GNUツールは有償の開発環境に比べて優れているのか,使い物になるのか」という疑問が生じることでしょう.

 「GNUはフリー・ソフトウェアである.」

 これは広く知られた事実です.しかし,ソフトウェアの著作権がまったくもってフリーであるということではありません.GNUソフトウェアにはGPLというライセンスがソフトウェアの使用時につきまとってきます.

 GPLのポイントを簡単にまとめます.

  1. ソフトウェアを利用する人は複製,再配布は自由であるが,再配布の際に生じる不具合などの責任はオリジナルの作者にはない.
  2. 作成者または配布者はソース.コードを有償・無償にかかわらず公開しなければならない.
  3. 作成者およびコード変更者はソフトウェアの不具合に関して一切の責任はない.
  4. GNUソフトウェアを新たなソフトウェアにリンクした時点で(つまり,一部に取り込んだ時点で),GPLが適用される.
  5. GNUソフトウェアの著作権はその作成者にある.

 

 例えば開発したソフトウェアにGNUソフトウェアをリンクすると,4.が適用されるため,GPLとなってしまいます.販売することを目的として開発したソフトウェアでは,大きな問題になりかねません.

 ここで「有償・無償にかかわらず」,ソース・コードの公開義務がある点が重要になります.ソース・コードの公開は有償でも構わないということです.GNUツールを採用するプロセッサ・ベンダの多くは,登録したユーザにのみソース・コードをダウンロードできるようにしています.

 ソース・コードが公開されていることから,例えばウイルスを埋め込んだバイナリ・パッケージを生成・公開される危険もあります.GNUソフトウェアのダウンロードは,初期から開発を行っている公式サイトからダウンロードするべきでしょう.

●コンパイラの最適化能力はほどほど

 GNUツールは,多くのプロセッサ・アーキテクチャに対応できる機構を備えています.このため,コードの最適化能力,つまりコンパイラの能力については,個別のアーキテクチャに特化したツールにはかなわない面もあります.

 例えば,プロセッサに固有の裏技的な命令列の生成が難しいことは,想像できると思います.レジスタやメモリ使用量の削減は可能ですが,超高速実行可能な命令列への置き換えなどは不可能です.

 このように,ターゲット・プロセッサに極度に特化した最適化が必要なアプリケーションに関しては,アセンブリ言語で直接書く必要があります.

●GNUツールを入手する

 GNUツールでは,一つ以上のツールを含むパッケージと呼ばれる単位で配布されています.このため,組み込みソフトウェア開発環境を構築するためには,どのパッケージが使われるかを知っておく必要があります.さらに,それぞれのパッケージがどのツールを含むかを把握しておく必要があります.

 そこで,組み込みソフトウェア開発に必要なパッケージを説明します.

(1)バイナリ・ツール(binutils)
 ビンユーティルズbinutilsパッケージは以下のWebページからダウンロードできます.
 http://ftp.gnu.org/gnu/binutils/

 本稿執筆時点における最新のバージョンは2.19です.「binutils-2.19.1.tar.bz2」がソース・コードです.

 ドキュメントや多くの情報を得るにはbinutilsのWebページ図11)にアクセスするとよいでしょう.
 




図11 binutilsをダウンロードできるWebページ(
http://www.gnu.org/software/binutils/

 

 このパッケージには,アセンブラ(as),バイナリ・ツール(objcopy,ranlib,arなど),逆アセンブラ(objdump)が含まれます.つまり,バイナリ・フォーマットのファイルを扱うためのツールが含まれています.

(2)コンパイラ・コレクション(GCC)
 GCCパッケージは以下のWebページからダウンロードできます.
 ftp://ftp.gnu.org/gnu/gcc

 本稿執筆時点における最新はバージョンは4.40です.「gcc-4.4.0.tar.bz2」がソース・コードです.

 ドキュメントや多くの情報を得るにはGCCのWebページ図12)にアクセスするとよいでしょう.
  




図12 GCCをダウンロードできるWebページ(http://gcc.gnu.org/

 

 このパッケージには,コンパイラが含まれます.C,C++,Java,Fortranの高級言語がサポートされています.サポートされるプロセッサ・アーキテクチャは現存するすべてのプロセッサといえるほど,網羅されています.

(3)ライブラリ(newlib,glibc)
 ライブラリは,コンパイラで使用する高級言語によって異なります.組み込みソフトウェア開発ではC言語が主流です.C言語で使うライブラリとしてnewlib(フリーではあるがGNUではない)とglibcが有名です.

 newlibは以下のWebページ(図13)からダウンロード可能です.
  http://sourceware.org/newlib/



図13 newlibをダウンロードできるWebページ(http://sourceware.org/newlib/

 

 一方,glibcは以下のWebページ(図14)からダウンロードできます.
  http://www.gnu.org/software/libc/



図14 glibcをダウンロードできるWebページ(http://www.gnu.org/software/libc/

 

 どちらもよく階層化されており優劣つけがたいですが,glibcは組み込みLinuxで使われることが多いようです.

(4)デバッガ(GDB)
 GDBパッケージは以下のWebからダウンロードできます.
  ftp://ftp.gnu.org/gnu/gdb/

 本稿執筆時点における最新はバージョンは6.8です.「gdb-6.8.tar.bz2」がソース・コードです.

 ドキュメントや多くの情報を得るにはGDBのサイトにアクセスするとよいでしょう.
  

 GDBはコマンド・ラインで動作するツールです.GUIを用意して使いやすくしたInsightと呼ばれるパッケージも以下のWebページから入手可能です.こちらのパッケージはGDBを丸々収録しているので,筆者はInsightを愛用しています.
 http://sourceware.org/insight/

●GNUツールによる開発フローを確認する

 図8で説明した開発フローにGNUツールを当てはめると,図15のようになります.



図15 GNUツールを使った組み込みソフトウェアの開発の流れ
図8にGNUツールを割り当てたものを示す.

 

 ソース・コードから実行形式までの一連の作業は,GCCが関連するツールを順次呼び出してくれます.個別に実行しなくても,実行形式を作成することができます.この際,リンカなどの細かな制御は固定になります.プロセッサ・ベンダの用意する統合開発環境を使った場合や,ネイティブ開発環境ではこの方が便利です.

 逆に,個別のツールを順次実行していく方式では細かな制御が可能になります.クロス開発環境下で,統合開発環境のない場合は,この方式が便利です.

やまぎわ・しんいち
高知工科大学 情報学部 准教授
 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日