組み込みコンピュータのシステム構成とクロス開発

組み込みコンピュータのシステム構成とクロス開発

組み込みコンピュータは、ハードウエア構成も、パソコンやサーバー機とは大きく違っています。洗濯機に組み込まれたコンピュータであれば、洗濯槽のモーターや注水/排水のバルブを制御するための、出力回路が必要です。水位センサーからの入力回路、スタート・ボタンや各種の設定ボタンからの入力回路も必要です。逆に、通常のパソコンのようなLCDモニター、キーボード、マウス、ハード・ディスク、CD-ROMドライブなどは、洗濯機には付いていません。

組み込みコンピュータ向けのプログラミング言語は、C言語が主流です。C言語は、入出力デバイスやハードウエアを直接操作できるという点において、組み込み向けにもなじみやすい言語です。オブジェクト指向言語のような高度な機能はなく、抽象度も低いですが、そのぶんオーバーヘッドが少ない点が、組み込み向けとしてはメリットになります。

C言語を使うケースのほかに、OSの内部処理の一部や、割り込みハンドラの入り口や出口の処理など、高級言語では書けない部分で、アセンブリ言語を用いる場合があります。また、携帯電話でダウンロードして実行するプログラムなどのように、組み込み系でも互換性の要求が強い場合には、Java言語を利用する場合があります。

組み込み機器の制御用コンピュータは、その機器に合わせた独自のハードウエア構成になっており、プログラム開発のための機能は持っていません。例えば、洗濯機を制御するコンピュータの場合、LCDモニターやキーボードがありませんし、ソース・プログラムを格納するファイルやハード・ディスクなどの2次記憶装置もありません。CPUは8ビットや16ビットですし、WindowsやLinuxといった開発環境として適したOSも動いていません。

したがって、組み込みコンピュータの中では、ソース・プログラムの編集やコンパイルなどの作業はできません。組み込み機器のプログラム開発の作業は、組み込み機器内の制御用コンピュータとは別のコンピュータ(開発者のパソコンなど)の上で行います。これを「クロス開発」と呼びます。クロス開発とは「プログラムの開発環境と実行環境が別のコンピュータである」という意味です。

これに対して、パソコン用のプログラムは、パソコン上で開発して、同じパソコン上で実行やデバッグを行います。すなわち、開発環境と実行環境が同じコンピュータです。このような開発方法を「セルフ開発」と呼びます。

図1: 組み込み機器(洗濯機)とパソコンのハードウエア構成(クリックで拡大)

クロス開発の実際

組み込み機器のクロス開発では、開発用のパソコン(ホストと呼びます)と、開発対象である組み込み機器内の制御用コンピュータ(ターゲットと呼びます)が別です。したがって、開発したプログラムのオブジェクト・コードを実行する前には、何らかの方法で、開発用のパソコンから実行環境であるターゲットに転送する必要があります。

オブジェクト・コードの転送には、ICE*2などのハードウエア開発ツールを用いる場合と、ターゲット上で動くモニターやOS、転送用プログラムなどのソフトウエアを用いる場合があります。後者の場合は、ターゲットのハードウエア構成に応じて、シリアル、USB、LANなどの回線を経由して転送を行います。このほか、CFカード、SDカードなどのリムーバブル・メディアを用いる方法もあります。

*2: ICEとは、In-Circuit Emulatorの略で、プログラムのダウンロードやデバッグなどのために、開発対象機器のCPUと開発用ホストとの間に接続して利用する、ハードウエア機器です。

ソフトウエアを使って転送するには、ターゲット上でも、オブジェクト・コードを受信するためのプログラムが動いている必要があります。また、リムーバブル・メディアを用いるには、ターゲットにおいて、そのメディア上に置かれたオブジェクト・コードをブート(起動)する機能、すなわちロードして実行する機能が動いている必要があります。

いずれにしても、ターゲット上で、ある程度のプログラムが動いた後でないと、これらの方法は使えません。したがって、ターゲットのハードウエアが完成した直後に最初に動かすプログラムは、ICEなどのハードウエアを使って転送する必要があります。また、ターゲット上でシリアル、USB、LAN、リムーバブル・メディアなどを使えない場合は、最終的なプログラムが完成するまで、ICEなどによる転送を続ける必要があります。

組み込みコンピュータのソフトウエア開発は、クロス開発であり、オブジェクト・コードの転送や異なる2つのコンピュータ環境の使い分けが必要となります。このため、パソコンのプログラムをセルフ開発する場合よりも、開発が難しくなります。ただし、後述する統合開発環境(IDE)のEclipseを利用すれば、オブジェクト・コードの転送が自動化され、クロス開発であることをあまり意識せずに開発できます。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30