組込みシステムの特徴
組込みソフトウェアの特徴
一般の事務処理での情報システムと比較して、組込みソフトウェアは次の特徴があります。
- 専用化されている
組込みソフトウェアとは、センサからの信号を受けて機器の制御信号を渡す機能だといえます。組込みソフトウェアの開発は、センサや機器などのハードウェアの開発と並行して行われ、双方の仕様が互いに密接に関連しています。
そのため、設計段階でもハードウェアの知識や回路図の知識が必要です。開発段階では、信号の受渡しを確認するためにデジタルアナライザやオシロスコープなどの機器の操作が必要です。テスト段階では、不具合がハードウェアとソフトウェアのどちらにあるのか、あるいはインタフェースに問題があるのかを切り分ける能力が必要です。すなわち、組込みソフトウェア技術者には、ソフトウェアだけでなく電子工学や機械工学の知識能力が求められるのです。
- リアルタイム性が必要
組込みソフトウェアは稼働している機器の制御に用いられることが多く、処理が遅れるとその間に機器が暴走する危険があります。そのため高速処理が求められ、例えばエンジン制御では200μ秒程度の処理が必要だとされています。さらに、エンジン制御をしている間にブレーキ制御やステアリング制御など、多様な処理を並行して行い、それらを統合する必要があります。
- 高い信頼性への要求
自動車や電車、医療機器などの組込みソフトウェアに不具合があると、直接に人命や災害につながります。ATMや電力・水道機器での故障は社会問題にまで発展します。組込み製品のリコールがあれば、その経済的損失が膨大になるだけでなく、社会的信用を失います。そのため、品質管理が重要になります。
しかも、組込みソフトウェアが無線により外部との情報交換を行う機能が増加してきました。家電機器がインターネットから不正操作が懸念されます。自動車の走行中に外部から無線で不正信号を受け取る危険も考えられます。最近は、セキュリティ対策が重視されるようになりました。
- リソースの制約が厳しい
量産品に組み込まれれるので安価である必要があります。メモリ制約により、ソフトウェアのサイズをコンパクトにする必要があるし、性能の低いCPUで高速処理するため効率の良いソフトウェアにする必要があります。
容量を小さくしたりオーバヘッドを減らすために、特殊化する必要があり、以前は、個別のプログラミング言語やOSを開発していました。これが組込みソフトウェア技術で重視されていました。
しかし近年では、開発費用の低減や開発期間の短縮が重視され、プログラミング言語ではC言語やJava、OSではWindowsやLinux(の組込み用にカスタマイズしたもの)が使われるようになってきました。特殊化と汎用化のバランスを考えたシステム設計が、通常の情報システム以上に重要なのです。
- テストの複雑性
組込みソフトウェアが作動する状況は多様です。例えば自動車のブレーキ制御では、運転の状況や路面の状況などを想定して正常に作動することを確認するテストが求められます。その状況が多様であるだけでなく、あらゆる状況をすべて想定することは現実的に不可能なこともあります。
ときには、機器の利用者が取扱説明書に従わず、あるいは故意に、無謀な操作をすることも考えられます。このような場合にも安全側に作動するようにすることが要求されるのです。
マイクロコンピュータ(マイクロプロセッサ)
スマートフォンなどの情報機器、炊飯器などの情報家電に内蔵している小型のコンピュータです。コンピュータですからCPU・メモリ・周辺機器から構成されていますが小さなチップの形状です(1チップマイコンといいます)。組込み機器の制御に必要な複数の電子部品を用途に応じて1つのチップに詰め込んだものです。
ファームウェアとは、ROMに組み込まれて、内部のハードウェアと密接に結びついており、通常の使用や操作では原則として内容の変更を行わないソフトウェアです。マイクロコンピュータはファームウェアで設計されることが多いのです。
以前は、組込みシステムの特徴を実現するために、それぞれの用途に特化したファームウェアを主にしてマイクロコンピュータが作られていました。しかし近年では、チップの高速化が進んだこと、組込みシステム用OSが発展したことから、コストダウンや短期開発のために、標準化が進んでいます。
ASIC(application specific integrated circuit、特定用途向け集積回路)
IoCの分野では、機器の制御や信号処理等、多様な用途があり、それぞれ求める機能・性能が異なります。マイクロプロセッサは汎用を前提に設計されていますが、ASICは特定の用途に特化して設計、製造される集積回路の総称です。用途に合わせてカスタマイズされることから、カスタムチップ、カスタムICとも呼ばれます。
FPGA(Field Programmable Gate Array)
現場で書換え可能な集積回路です。論理ブロック(プログラム可能な論理コンポーネント。フリップフロップやメモリブロックなど)間を相互接続する再構成可能な配線階層で構成されています。それを、出荷後や稼働段階で、ハードウェア記述言語(Hardware Description Language、HDL)を用いて、用途に合致した論理回路を設計できます。それを再構成可能コンピューティングといいます。
最近では、FPGAにCPUや周辺回路を組み込んだ製品も登場してます。
組込みシステム用OS
単純な湯沸しポットならば、センサーで湯温を感知するして電源のON/OFFをするだけでよいので、あえてソフトウェアを重視する必要はありません。それに対して、近年の炊飯器や電子レンジでは多様な機能をもっているので、ソフトウェアが複雑になり、それを管理するOSが必要になってきます。
このように、組込みシステムにおけるOS(ミドルウェアも)が重視されるようになりました。この分野では常時監視、即応性が求められるので、RTOS(リアルタイムOS)ともいいます。
当初は、CPUやメモリなどハードウェアのコストを下げるために、独自のOSを開発していましたが、新製品開発競争の激化、機能の高度化、他機器との情報交換(例えば、情報家電のパソコンやスマートフォンでの操作、自動車のナビゲータや自動ブレーキなど)の必要性増大などにより、むしろ標準化や汎用化のほうが重要になってきました。
WindowsやLinuxなどの市販OS(これらを組込みソフトウェア用にカスタマイズしたもの)を採用するほうが、
・経験技術者数が多い。
・豊富なソフトウェアがあり、再利用できる。
・他機器との通信・情報交換が容易にできる。
・開発環境が整備されている。
などで有利です。
現在では、組込み用OSとして、WindowsやLinuxが広く利用されています(日本では日本製のITRONが大きなシェアをもっていたのですが、最近は低下しています)。
ICE(In-Circuit Emulator)
組込みシステムでは、独自のCPUや電子基板などを用いることが多くあります。
ICEとは、CPUなどを中心とする電子基板や組み込みシステムなどを開発する際に、それをエミュレートする試験装置です。通常のソフトウェア開発でのデバッガ(debugger)に類似しています。
- 評価ボード
ICEでの試験装置の総称です。対象となるCPUなどを取り込み、その動作を取り出す回路を付けた構造になります。
- CPUボード
ICEの最も基本的な対象はCPUです。
CPUボードとは、評価ボードの一つで、CPUを実装した基板に全端子を周辺ボードコネクタに配置し、CPUの動作の情報を収集・分析して、CPUが正しく動くかを確認するのに用います。
多くの場合、半導体メーカーが提供しています。
- ターゲットボード
CPUボードが半導体メーカー提供なのに対して、マイコンメーカー提供のものをターゲットボードということがあります。
対象がやや広い違いがありますが、同一のものとしていることもあります。
- 現在のICE
ICEは対象拡大し、マザーボードのように大規模な周辺デバイスを実装して、開発環境やファームウェア込みのシステムを対象に、専用のハードウェアインタフェースでCPUや付属回路の情報を取得するようになりました。通常のシステムでの統合開発環境のような位置づけになっています。
エネルギーハーベスティング
harvestとは「収穫」の意味です。エネルギーハーベスティングとは環境発電技術であり、身の回りにある熱や振動などさまざまな形態の密度の低いエネルギーを「収穫」して電気エネルギーに変換する技術です。太陽熱発電や風力発電のような大掛かりなものではなく、太陽光で充電する腕時計や電卓など小規模、微弱電力を得ることを指します。
センサネットワークでは、微弱な電力での通信が注目されていますが、電力を自給自足できれば運用コストを節約することができます。特に遠隔地や作業のしにくい場所に設置されたセンサでの電力管理に役立ちます。
しかし、エネルギーハーベスティングは電力供給が不安定です。それで二次電池と組み合わせた仕組みが必要になります。