組み込みソフトウェアの開発は、PC用とは異なる要素や手順が必要となる。今回は開発を始める前に、組み込み開発の全体像を説明する
「組み込み機器」に対するLinuxの採用が近年増えています。Linuxが標準で保有している多くの機能が、組み込み製品の目的と適合していることが最大の理由です。組み込み機器へ搭載されているLinuxを一般的に「組み込みLinux」と呼び、従来のPCなどで稼働させているLinuxとは区別した表現が使われています。ただし、Linuxと組み込みLinuxに明確な違いがないのも事実で、ある程度環境が整った状態であれば、特に意識せずとも組み込みLinuxのソフトウェア開発が可能です。
ただし、環境整備が実現されていない状態からスタートして組み込みLinuxを開発するには、組み込みという言葉の意味するところを把握しなければなりません。本連載では、まずこの環境整備の実現を中心として、組み込みLinuxにおける組み込み開発の基礎を解説していきます。今回は、その下準備として組み込み開発の大まかな流れを示すことで、未経験者の人が開発の全体像を把握できるようにします。
最初に、組み込み開発の基本手法である“クロス開発”について簡単に触れておきましょう。クロス開発には、それと対を成す“セルフ開発”という言葉があります。両者の違いを示すことでクロス開発を理解できると思います。
つまり、PCの世界で一般的な、Visual C++などを使ってPC用アプリケーションを開発する形態がセルフ開発です。それに対して、クロス開発は作成した実行ファイルを別機器(他アーキテクチャ)で動かすことを意味します。
ではなぜ、組み込み開発ではクロス開発が基本手法なのでしょうか? それは、実行環境のプロセッサ(CPU)やOSが異なることが最大の理由です。ご存じのように、Windowsの実行ファイルはLinuxでは動きません(OSが異なる)。同じLinux用アプリケーションでも、PC/AT互換機用の実行ファイルはMacintoshの上では動きません(CPUが異なる)。ソフトウェアを異なる環境で動かすには、それ相応の作業が必要というわけです。組み込み機器ではさまざまなCPUやOSが使用されるため、クロス開発が必然となります。
また、組み込み機器はCPUパワーやメモリ搭載量といったリソースが限られており、PCのような開発手法は不可能な場合が多いという理由もあります。比較的多くのリソースが使えるPCやワークステーションで開発すれば、コンパイル時間の短縮も図れて効率的です。
組み込み開発に際しては、PC用ソフトウェア開発ではあまり使われない独特の用語が登場します。クロス開発について理解できたところで、そのほかのキーワードも覚えておいてください。
1.開発コンピュータ(別名:ホストコンピュータ)
実際にプログラムの作成を行うPCを指します。
2.ターゲットコンピュータ(別名:ターゲットボード、ターゲット)
組み込み機器を指します。クロス開発において、作成した実行ファイルを動作させる環境です。
3.クロスコンパイラ/アセンブラ/リンカ
クロスコンパイラ/アセンブラ/リンカは、作成したプログラム(主にC言語などで記述)をターゲット用にコンパイルするために使用します。
4.クロスライブラリ(別名:ターゲットライブラリ)
クロスライブラリは、3で示したツールを用いてプログラムをコンパイルする際に必要になります。例えば、hello.cを作った場合、その中で使用しているprintf()自体が格納されているものと考えれば分かりやすいでしょう。
クロスライブラリを正確に記すと、ターゲットOS用クロスライブラリとOS非依存クロスライブラリの2つを用意することになります。ライブラリに格納されている関数の多くは、OSの機能を併用して実現されています。OSそのものに接続させるライブラリや後述するブートローダは、OS非依存クロスライブラリを利用します。
5.クロスデバッガ
実際に作成した実行ファイルは、そのままターゲットで動作させることになりますが、問題原因究明のためにはデバッガがあると非常に便利です。
これ以外にもクロス開発に関するキーワードはたくさんありますが、よく使うものは上記の5つ程度でしょう。
Copyright © ITmedia, Inc. All Rights Reserved.