組込み開発におけるLinuxシステムについて

組込み開発におけるLinuxシステムについて

組み込みLinuxによるアプリケーション開発の開発環境 その2-クロス開発

コラム「組み込みLinuxの開発環境」では、開発環境として利用するツールチェインの説明を行いました。本コラムでは、組み込みLinuxの開発環境続編として、組み込み機器開発でもっとも特徴的なクロス開発に関して説明します。クロス開発の基礎知識を頭に入れておくことで、組み込みLinuxを利用したアプリケーション開発に取り組む際などにも役立てていただけるでしょう。

  • Date: 2014年9月8日
  • Author: EIPC

組み込みシステム開発における開発環境

以前のコラムでも説明しましたが、開発環境の整備は組み込みシステム開発においても重要です。デスクトップパソコンやサーバーのLinuxと違い、組み込み機器に搭載されているのはIntel(インテル)x86でないCPUの場合も多くあります。組み込み機器に搭載されているCPUは、例えばARM、PowerPC、MIPS、SuperHなどです。当然、プロセッサに依存するデバイスドライバもデスクトップパソコンやサーバーのLinuxのものとは異なってきます。
同様に開発環境も、利用するプロセッサに依存して変わってきますので、組み込みシステム開発では開発対象の組み込みシステムに応じて開発環境を構築することとなり、その整備も重要となるのです。
いよいよ次の章では、組み込みLinuxを利用したアプリケーション開発を含む、多くの組み込みシステム開発で利用されるクロス開発について説明します。

アプリケーション開発におけるセルフ開発とクロス開発

クロス開発を利用してどのようにアプリケーション開発を行うか。
システムやアプリケーションなどの開発には、セルフ開発(セルフ・コンパイル)とクロス開発(クロス・コンパイル)があります。クロス開発について述べる前に、まず両者の違いを説明しますと、セルフ開発は開発環境と実行環境が同じ、クロス開発は開発環境と実行環境が別、という違いがあります。そして、組み込みLinuxを利用した場合もそうですが、組み込み機器のアプリケーション開発は後者のクロス開発で行うことがほとんどです。
セルフ開発は、一般的なVisual C++などを使ってアプリケーション開発を行います。一方クロス開発は、それ自体に開発環境を持たない組み込み機器(マッサージ機、冷蔵庫、温度計、ゲーム機など)で動かすアプリケーション(実行ファイル)を、別途パソコン上の開発環境で開発します。家電を例にとってみても、開発環境は開発時にのみ必要なものであり、製品として完成した後は必要なくなります。つまり、利用目的に特化した必要最低限のハードウェア構成しか持たない組み込み機器には、開発環境を動かすほどのパワーがないため、クロス開発を利用するわけです。
クロス開発を行うためには、プログラマーが記述したソースコードを、ターゲットの組み込みシステムで動作するような実行形式に変換しなければなりません。Windowsの場合には、VisualC++を使って実行形式のファイルを作ればWindows上で動く実行ファイルが作れます。しかし組み込み機器の場合には、CPUやOSが異なったりするために開発対象の組み込みシステムに特化した開発環境(ツールチェイン)を利用するのです。

統合開発環境を利用してアプリケーションを開発しよう

組み込みLinuxを利用したアプリケーション開発を行う際には、ツールチェインと呼ばれる複数のツール(開発環境)を組み合わせて使うことになります。一度実施してみると理解も早いのですが、それぞれのツールにもバージョンが存在したり、使い方が異なっていたりと、バージョンの不整合、使い始めなどで苦労するケースもあります。このような問題を防ぎ、アプリケーション開発入門者でも利用しやすいのが統合開発環境です。統合開発環境には、プログラム履歴のバージョン管理やプログラマーによる開発の支援など、組み込みソフトウェア開発の上で必要な機能が備わっています。一般的にはプラットフォーム管理、エミュレーション管理、インターフェース管理、ドキュメント管理に分類することができます。開発対象となるシステムによって異なる部分はありますが、どのツールも比較的似たようなオペレーションで操作できるのが利点で、クロス環境であることを意識することなく、まるでセルフ環境で開発しているかのようにアプリケーション開発が行えます。ぜひアプリケーション開発を行う際には、統合開発環境を利用することをお勧めします。

CPUやOSによって統合開発環境はさまざま

今回のコラムでは組み込みLinuxを利用したアプリケーション開発の開発環境として、組み込み機器開発に多く使われているクロス環境について説明しました。簡単に言ってしまえば、組み込みシステムで動かすための実行ファイルを、別途パソコン上の開発環境で作成し、組み込みシステムに載せて動かすという事になります。ここでのポイントは、開発対象となるCPUやOSなどによって開発環境が異なってくること、その差を吸収するという点でも統合開発環境は有力な手段であることです。統合開発環境は、例えば「ARM+統合開発環境」「SH+統合開発環境」のように、CPUと一緒に検索してみると色々見つかると思います。一度調べてみるとその使い勝手や特長が理解できると思うので、調査してみてはいかがでしょうか。