組み込み技術とは

組み込みLinuxについて

Linuxとは

Linux(リナックス)とは、現在フリーソフトウェアとして公開されているOSです。OSは、Windows や Mac OS のように、コンピュータのシステム全体を管理し、ハードウェアと特定の機能に特化した各ソフトウェアとを結びつける役割を持っています。OSのエンジン部分のソフトウェアはカーネルと呼ばれ、カーネルをカスタマイズすることにより、あらゆる環境でLinuxを動作させることができます。Linuxはパソコンだけでなく、サーバやゲーム端末などにも搭載されます。

現在、個人用のパソコンで主流となっている Windows や Mac OS のようなOSは、Microsoft 社や Apple 社によって開発され、有償で提供されています。一方、Linuxはオープンソースなソフトウェアであるため誰でも無料で入手することができます。

しかし、無料がゆえに使い勝手が悪いというイメージがあります。以前は真っ黒な画面に英語のコマンドを打ち込むことでしか使用できず、初心者には扱いが難しいソフトウェアでした。現在は改良され、UbuntuやDebianのような見た目も使い方も Windows や Mac OS とさほど変わらない使用環境も開発・提供されています。スペックの低いCPUでも動作できるように、起動にかかる時間を高速化させるなど機能改善も行われています。

組み込みシステムとLinuxの変遷

現在では、Linuxはスマートフォン・携帯電話やモバイル・タブレット端末などの通信機器で利用されているAndroidをはじめとして、組み込みシステムを構築する際に多用されています。しかし、Linuxは元々パソコン向けの汎用的なソフトウェアであり、特定の機能に特化した組み込みシステムに搭載するには、必要以上であるように思われていました。

事実、初期の組み込みシステムにおけるマイコンは今よりずっと低性能で、パソコンと同様にMMUとよばれるメモリー管理ユニットによってシステム制御をすることは困難でした。そこでMMUを必要としないμClinuxというマイクロコントローラー向けのLinuxシステムが登場しましたが、多くの組み込みシステムではμITRONという別のリアルタイムOSが使用されていました。しかし組み込み機器の高機能化が進むと、従来のμITRONをはじめとするOSでは機能全体をカバーできないことが多くなりました。同時に組み込み機器のハードウェア自体でも低価格・高性能化が進み、MMUを搭載して高度な処理を行うことのできるマイコンも増えてきました。

このような状況下で元々パソコン向けのソフトウェアであったLinuxは、徐々に組み込みシステムの開発にも用いられはじめ、その、無償でありながらもネットワークやファイルを管理することのできるシステムを搭載した高機能さや、ミドルウェアの豊富さ、またLinux自身のソースコードを自由に書き換え、組み込みシステム向けに最適化することのできる柔軟さなどから、次第にシェアを伸ばしていくことになります。

現在では、Androidをはじめとする携帯電話製品用プラットフォームはもちろん、テレビやデジタルカメラ、カーナビやカラオケ機器などにも組み込まれているLinuxですが、これらは当然各々の機器で動作できるようポーティングされています。これはパソコンの場合も同様で、様々なCPUアーキテクチャへ移植されています。

組み込みLinuxの特長

組み込みLinuxの最大の特長は、やはり高機能でありながらも無償でインストールして利用できるという点です。Linuxは商用でも無償で利用でき、GPLのようなオープンソースとしてのライセンス規定に準じていれば誰でも利用することができます。エンジニアがトレーニングする環境を無償で自作することもできます。また、無償であるため開発に関するライセンス上の制約も少なく、容易に様々なハードウェアへ移植することができます。無償かつ広範に使われていることから入門向けの書籍や教材、企業が提供する研修やセミナー、開発講座があり、セキュリティに関しても常に改良が加えられているため、安心して利用することができます。なお、無償のLinuxを使用していて、不具合やバグなどが発生した場合は自己責任となります。不具合を保障してもらいたい場合は、ディストリビューターと呼ばれる企業が有償で提供するパッケージがおすすめです。サポート契約サービスと併せて提供しており、ディストリビューターによる技術サポートが受けられます。

Linuxは元々パソコン用のソフトウェアであったために、組み込みシステム上のみで動作するソフトウェアと比べて、パソコン上での開発に適しています。パソコン上のLinuxでのアプリケーション開発は、組み込みLinux上でのアプリケーション開発と、大きな違いはありません。コンパイラやリンカのような、開発に必要な環境が揃っていたり、デバッグやプロファイリングの仕組みが豊富であることも強みとして挙げられます。

また、UNIX系のミドルウェアが使えることから、TCP/IPやLAN、WifiにUSB、Bluetoothなどの豊富なスタックを使用することができる利便性もメリットの一つです。デバイスドライバに関しても、元々様々なCPUアーキテクチャに対応したものが付属していますし、そのドライバを改良することで、別のデバイスに関しても容易かつ効率的にドライバを開発することができます。

組み込みLinuxの開発

組み込みLinuxの開発は、パソコン上のLinuxシステムに開発環境を構築することで行うことができます。パソコンの Windows 環境を壊したくない場合は、Oracle VM Virtual Boxのような仮想デスクトップ環境上にLinux環境を構築することもできます。また、コンパイラやリンカ等の開発に用いられるツールも無償でLinuxシステムに組み込める場合が多く、クロスコンパイル環境を容易に整備することができます。

Linuxソースコードをコンパイルするには、まずハードウェアやデバイスドライバ、ミドルウェアの選択に関する設定が必要です。設定ファイルを書き直すという手もありますが、menuconfigというツールを実行することでLinux上の設定を一発で行うことができます。このコンフィギュレーションが終了すれば、普通のプログラミングと同様にソースコードのコンパイルを実行できます。

用語集

ミドルウェアコンピュータにおいて、様々な機能・処理を行うアプリケーションソフトウェアとOSとの間に入り、いくつかのアプリケーションソフトに共通する基本的な機能を受け持つソフトウェアのこと。
コンパイラ人間がプログラミング言語によって書いたソースコードを、コンピュータが実行できる機械語に翻訳するソフトウェアのこと。
リンカ上記のコンパイラによって翻訳された機械語を実行可能なファイルとして出力するプログラムのこと。
コンパイラに機能が統合されている場合も多い。
デバッグプログラム上の文法ミスなどの誤りを取り除き、目的通りの機能が実行されるように修正すること。

  1. Linux は、Linus Torvalds 氏の日本およびその他の国における商標または登録商標です。
  2. Google、Androidは、Google Inc.の商標または登録商標です。
  3. Windows embedded,Windows embedded compact7 およびWindows は、米国 Microsoft Corporation の、米国、日本およびその他の国における商標または登録商標です。
  4. Eclipseは,Eclipse Foundation, Inc.の登録商標です。
  5. Java及びその他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
  6. その他、記載されている会社名および製品名は、各社の商標または登録商標です。