ソフトウェア開発に利用される言語といえば、C++、C#、Java、PHPなどがあります。一昔前の組み込み機器開発では、「組み込みはアセンブラでしょ!」なんて時代もありましたが、最近はC、C++、Javaを採用することが多くなってきているようです。
ただし、当然ながら組み込みソフトウェアにはアセンブラでしか記載できない部分があります。全てをC、C++、Javaで開発できるわけではありません。組み込みソフトウェア開発でも、PCのソフトウェア開発と同様に用途に合わせてソフト開発言語も選ぶようになってきています。
これまでに、組み込みソフトウェア開発とPC向けソフトウェア開発の大きな違いとして以下の2点を説明しました。、
アセンブラ言語は基本的にはマニュアルなどを参照すればコードを書くことができます。組み込みソフトウェア開発技術者の腕の見せどころとなるのは、ICE、JTAGを使って開発をする部分です。PC上でのソフトウェア開発では、本来ソフトウェアが動作する環境にほぼ近い形でデバッグを行う事ができますが、組み込みソフトウェア開発ではソフトウェアは組み込み機器上で動かし、プログラムの制御と結果の表示をPCで行います。
このように、組み込みソフトウェア開発では実行する環境とデバッグする環境が異なるため、実行環境とデバッグ環境との間に通信が発生します。この通信によって生じるタイムラグによって“1行プログラムを実行させて計算結果を見ようとしても見ることができない”“実は既に違う値になっている”なんて状況が頻繁に起こるのです。
また、デバッグ途中でプロセッサを止めすぎてしまい、一定間隔で処理をしないとリセットがかかるようなハードウェアになってしまう、なんて事も起こりえます。組み込みソフトウェア技術者は、これらの起こりうる結果と要因を想定、予想しながらデバッグを行う必要があるのです。
このように組み込みソフトウェア開発は、PC上のソフトウェア開発と比べると複雑で、多くの経験や高い技術を要するものですが、今後の組み込み機器開発の中でも、ますます重要性が高くなっていくことが予想されます。
次回は、組み込みシステム開発のもう1つの柱となる、組み込みハードウェア開発を見ていきましょう。 (次回へ続く)
Copyright © ITmedia, Inc. All Rights Reserved.