組み込みシステム開発

組み込みシステム開発

自動車の組み込みソフトウェア開発

今までの組み込みシステム(エンベデッド・システム)に関するコラムでは、組み込みとソフトウェア、組み込みOS、Linux、Windows Embedded、ARMなど、「組み込み技術」寄りのテーマを取り上げてきました。今回は、日本の市場、あるいは主要各社で注目する組み込み機器として自動車を取り上げ、「自動車の組み込みソフトウェア開発(SW開発)とは」について解説していきます。

  • Date: 2015年5月14日
  • Author: EIPC

自動車と組み込みソフトウェアの関係

身の回りにあふれている組み込み機器。1台で様々なことができるパソコンと違い、スマホやルーターなどのネットワーク機器、デジタルカメラやプリンターといったデジタル機器、炊飯器や冷蔵庫、洗濯機といった家電など、「ある特定の用途に特化している」という特徴を持っています。今やパソコンのような汎用システム以外の機器は、ほとんどが組み込みシステムであるといっても過言ではありません。今回のテーマである自動車も、何を隠そう組み込み機器なのです。
自動車には、他の組み込みシステムに比べて数多くのマイコンが搭載されています。自動車という組み込み機器の中には、組み込みソフトウェアによる制御が必要なシステムがたくさん存在するからです。例えば、横滑りを防止する機能、急ブレーキでもふらつかない機能、ヘッドライトが曲がる方向を照らす機能、車間距離を一定に保つ機能、カーナビのような情報システムを制御する機能、障害物にぶつかりそうになると自動で停止する機能などです。このように、自動車の組み込みシステムでは、ハードウエアだけでは実現が難しい機能を叶えるため、組み込みソフトウェアが個々にそれ専用の動作をしているのです。

自動車の制御システムを司るECU

自動車と組み込みソフトウェアの関係について理解したところで、次に自動車のあらゆるシステムの制御を行っている組み込みマイコンについて説明していきましょう。
自動車は、「走るコンピューター」といっても過言ではないほど多くのマイコンを搭載しています。マイコン上では様々な制御がなされていますが、これらを総称してエレクトロニックコントロールユニット(ECU)といいます。自動車の制御設計も最近では高度化が進み、自動車1台につき約30個以上ものECU(エレクトロニックコントロールユニット)が搭載されています。
電子機器に関わる部品数が一際多い自動車。自動車に搭載される電子部品の進化は、カーエレクトロニクスの信頼性を高めるのに一役買っているなど、市場の動向には目を見張るものがあります。

自動車の組み込みシステムは医療機器のように緻密

このように自動車には数多くのマイコンが搭載され、マイコン同士が連携することで様々な機能を実現しています。マイコンを搭載し、ハードウェア開発、ファームウェア開発を行うという点では、どの業界の組み込みシステム開発も同様なのですが、今回のように、あえて自動車だけを取り上げるのには理由があります。それは、緻密性や品質管理の徹底性に関係します。自動車の組み込みシステムと比較するために、より身近な組み込み機器である携帯電話を考えてみましょう。マイコンを搭載し、ハードウエアもファームウェアも開発を行うという点では自動車と大差ない開発のように思います。しかし、例えば携帯電話のソフトウェアにバグがあったからといっても、人の命に関わるような事態は滅多に起こりません。一方、医療用機器は、輸血装置にバグが生じ、あってはならない流量で投薬された場合、人の命に係わります。よって医療用機器を製造する際には非常に多くのテストや検証が行われるのです。自動車も同様に、人命を守る安全性が保障されなければならない組み込み機器です。自動車のファームウェアにバグがあり、ブレーキが利かなくなると人の命に関わります。自動車は医療用機器と同様、独自に定められた厳しい基準をクリアするために、緻密な品質管理のプロセスが存在しています。

自動車の組み込みソフトウェア開発

自動車の組み込みソフトウェアといっても、基本、開発の流れや開発環境自体は他の組み込み機器のそれと大差ありません。ここでは、自動車業界で組み込みソフトウェア開発を目指す技術者や入門者に向けて、ソフトウェア開発の流れを簡単におさらいしておきます。
まず、組み込みソフトウエアの開発とパソコン上で動作するソフトウェア開発で明確に違うのは、組み込みの場合、開発環境と動作環境が異なるという点です。普通、ソフトウェアのプログラム開発やプログラム作成を行う場合、同時進行でエラーの修正に対応する必要があります。組み込み機器の場合は、プログラム作成のためのハードウェアと動作するハードウェアが別なので、その都度ソフトウェアのプログラムを組み込み機器で実行させる工程が入ります。そして、その実行結果を開発用のハードウェアに表示させる通信作業が発生します。以下、組み込みソフトウェア開発の大まかな流れです。

  1. 開発環境の整備
  2. プログラムの記述
  3. コンパイルを実行後、エラーの修正
  4. 動作するハードウェア上でのデバッグ作業の実施
  5. プログラムの修正

ここでいう開発環境は統合開発環境のことを指しています。統合開発環境を利用するメリットは、開発の作業をシームレスに行えるという点。また、デバッグの段階においてはJTAGやICEを使ったクロス開発となります。

自動車には、組み込みソフトウェアとしてマイコンによる制御機能が搭載されていますが、それら制御は単独で動作すればいいかというと、「NO」です。自動車のセキュリティに関するシステムを例に解説してみましょう。自動車本体を盗難から守る自動車盗難防止システムはセキュリティのひとつですが、他にも情報通信が行われるカーナビ(カーナビゲーションシステム)では、個人情報を傍受されないようにプライバシー保護というセキュリティも求められます。このように、それぞれの制御機能は複数の制御機構と連携を行いつつ、同時に専門の仕事もこなしていかなければならないのです。 自動車の組み込みソフトウェア開発では、機器の目的に応じた機能を管理し、それぞれを制御する必要があるため、エンジニアの高い専門的知識やプログラミングスキルも問われます。そもそもハードウェアが異なる組み込みソフトウェア開発では、今でこそアセンブラ以外のC言語やJavaなど高級言語でも記述が可能になりましたが、以前は高級言語での記述ができないケースがほとんどでした。

自動車における組み込みソフトウェアの重要性

組み込みソフトウェアの重要度は、自動車の性能が向上するにつれて高まっています。高い品質や安全性を確保すべく、開発体制や開発期間、開発にかかるコストなど、開発効率の向上も重要です。自動車の組み込みソフトウェアは、各組み込みシステムの専門性が高いと同時に、全体の安全や信頼性、リアルタイム性も求められます。ですから、組み込みシステム全体を統合して開発できる環境を整備することが必要になるわけです。
自動車業界は、最新技術を取り入れた発達に目覚ましいものがあります。例えば、パソコンでいえばOSの役割を持たせ、高度さを追求した車載ソフトウェア。自動車のIT化に伴って、こうした車載ソフトの脆弱性が問題点とされていましたが、発展が進む今、情報セキュリティの強化といった課題にも取り組んでいます。

自動車メーカーの方によると、自動車開発の経験がある人材とない人材とでは、仕事内容への理解が違うといいます。今後、自動車の設計や開発を目指す組み込み技術者、あるいはトヨタやホンダなどの企業やデンソーに代表されるサプライヤーへの就職・転職に興味がある方は、組み込みソフトウェアの開発の分野にも目を向けてみてはいかがでしょうか。