前回「組み込みソフトウェア」で”組み込みソフトウェアとは”について解説いたしました。今回は、組み込みソフトウェア開発をパソコン用のソフトウェアと比較して、開発環境、言語、プログラミングの観点から解説したいと思います。
組み込みソフトウェアの環境
パソコン上でのソフトウェア開発として、もっとも思い浮べる人が多いであろう開発環境は、Microsoft株式会社の提供するVisual C++やVisual Studio .NETではないでしょうか。これらの開発環境を使ったことがある方であれば想像がつくと思いますが、ソフトウェアの作成・プログラム開発・設計手順は、
(1)プロジェクトを作成してmain関数からプログラムを書きます。
(2)プログラムを記述し終えたら、コンパイルを実行し、プログラム開発言語の文法のエラーの修正をします。
(3)コンパイルに成功すると1行単位でデバッグ実行を実施し、プログラムが期待通りに実行されているかを確認します。
(4)期待通りに実行されていると確認できれば、デバッグ情報を抜いた形でプログラムを作成する。
という一連の流れとなります。このような一連のソフトウェア開発プロセスをVisual C++やVisual Studio .NETなどの開発環境では、シームレスに実施することができます。
それでは組み込み機器の場合はどうか?組み込みシステムの開発手順では違いがあるのかというと、ここ最近の組み込み機器開発においても、やはりVisual C++やVisual Studio .NETのような統合開発環境が存在していますので、Windowsと似たように一連の流れを1つの開発環境でシームレスに行う事ができる場合が多くなっています。ただ大きな違いとして、Windows上でのソフト開発・プログラム開発の場合には、Windows上で動作させたいプログラムを、Windows上で開発・デバッグしますので、ソフトウェアの動作環境使っての開発・デバッグが行えるというメリットがあり、非常にシンプルです。
しかし組み込み機器の場合には、組み込み機器で動作させるソフトウェアをWindows上で開発する事になりますので、プログラムを組み込み機器に組み込んだ後、プログラムを1行ずつ実行するように組み込み機器の制御を行い、演算結果をWindowsパソコンで読み込み表示する、という事を行います。組み込み機器開発では、組み込み機器の制御と、組み込み機器とパソコンとの通信を行う為の機器として、ICEやJTAGを利用して行うクロス環境が特徴として挙げられます。
組み込みソフトウェアの言語
ソフトウェア開発に利用される言語といえば、有名どころはC言語を拡張したC++、C#、Java、PHPなどがあるかと思います。組み込み機器開発(エンベデッド開発)でも一昔前はアセンブラでしょ!なんて時代もありましたが、個人意見も入りますが、今はもっぱらC、C++、Javaを採用することが多くなってきていると思います。
ただし、アセンブラでしか記載できない部分というのも当然ながらありますので、すべてをC、C++、Javaで開発できるわけではありません。昨今の組み込みソフトウェア開発では、パソコンのソフトウェア開発と同様に用途に合わせてソフト開発言語も選ぶようになってきています。
組み込みソフトウェアのプログラミング
これまでのところで、組み込みSW開発とWindowsプログラミングの大きな違いとしては、
(1)ICE、JTAGを使って開発をする。
(2)アセンブラでプログラムしなくてはならない部分がある。
という点を理解いただけたかと思います。アセンブラは言語の問題だけですので基本的にはマニュアルなどを参照すればコードを書くことができます。組み込みソフトウェア開発技術者の腕の見せどころとなるのは、ICE、JTAGを使って開発をする部分になるかと思います。Windows上でのソフトウェア開発では本来ソフトウェアが動作する環境にほぼ近い形でデバッグを行う事ができますが、組み込みソフトウェア開発ではソフトウェアは組み込み機器上で動かし、プログラムの制御と結果の表示をWindowsパソコンで行うことになります。
このように、実行する環境とデバッグする環境が異なるため、その間に通信を行う必要が発生します。そして、この通信によってタイムラグが生じるため、例えば1行プログラムを実行させて計算結果を見ようとしても見ることができない、実はすでに違う値になっている、なんて事が頻繁に起こるというわけです。
それ以外にもデバッグ途中でプロセッサを止めすぎたため、一定間隔で処理をしないとリセットがかかるようなハードウェアが動作してしまう、なんて事も起こりえます。組み込みソフトウェア技術者(組込み技術者)はこれらの起こりうる要因を想定、予想しながらデバッグを行う必要があるのです。
組み込みソフトウェア技術者はかっこいい
そんなわけで、初心者ではなかなか簡単にはいかず、経験・技術がモノを言う世界ではありますが、日本の組込ソフトウエア産業は先が明るく、業界的にはまだまだ需要がある組み込みソフトウェア技術者、組み込みシステム開発者に貴方もなってみませんか。機器に組み込みソフトウェアなのでなかなか目で見ることはできませんが、LEDがちかちかするだけでも案外うれしいものですよ。
個別相談も承っております。下記よりお申し込みください。