24. 組み込みシステムに関する知識 II

シラバス: 

1. 科目の概要

組み込みシステムの開発について、その開発手順や開発プロジェクト管理、体制などについて解説する。また組み込みシステム自体のアーキテクチャや組み込みシステムを取り巻くネットワーク環境の特徴やソフトウェア/ハードウェア要件などについて解説する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。

3. IT知識体系との対応関係

「24.組み込みシステムに関する知識Ⅱ」とIT知識体系との対応関係は以下の通り。

[シラバス:http://www.ipa.go.jp/software/open/ossc/download/Model_Curriculum_05_02.pdf]

<IT知識体系上の関連部分>

4. OSSモデルカリキュラム固有の知識

OSS モデルカリキュラム固有の知識は、OSS を用いた組み込みシステムに関する知識である。OSS を活用した携帯電話などの事例を扱う。

(網掛け部分はIT知識体系で学習できる知識を示し、それ以外はOSSモデルカリキュラム固有の知識を示している)

II-24-1. 組み込みシステムの開発技術

組み込みシステムの開発について、システム全体の開発工程やハードウェア、ソフトウェア開発の考え方、開発ライフサイクルや開発プロセスの概要、管理方法など、システム開発の基本的な考え方や主要な開発技法、特徴や留意点を解説する。

【学習の要点】

* 組み込みシステムの開発は多様で複雑である。

* 必要な機能と要素技術を決定する工程がシステムエンジニアリングプロセスである。

* システムエンジニアリングプロセスは大きく分けて、システム要求分析とシステムアーキテクチャ設計に分けられる。

* システム要求分析では、システム全体の機能仕様と制約を分析し、定義する。

* システムアーキテクチャ設計はシステム要求分析の後に行われ、システム全体のアーキテクチャを決定する。

* システムエンジニアリングプロセスにより、ハードウェア・ソフトウェアの機能実装についての仕様が明らかになるので、ハードウェア設計とソフトウェア設計に移行することができる。

 

図II-24-1. 組み込みシステムの開発技術

 

【解説】

1) 組み込みシステムの開発

* 組み込みシステムの開発と一口でいってもその内容は多様性に富んでいる。例えばリアルタイムOSについても100種類を超える選択肢があり、実装に必要な要素技術についてもソフトウェア、ハードウェア共にあまりに多様である。従って組み込みシステムの開発については、仕様と要件に対してどのような要素技術が必要であるかを判断することが必要になる。

* 例えば携帯電話の開発について言えば、通話に必要なベースバンド処理、音声の符号・復号処理、音楽再生処理、カメラ撮影・画像処理等の多様な機能を実現することが必要でそのための個々の要素技術をどう利用するかという判断が必要である。

* 組み込みシステムの開発において、ハードウェアに必要な技術・ソフトウェアに必要な技術を判断していく工程をシステムエンジニアリングプロセスという。システムエンジニアリングプロセスは大きく分けて、システム要求分析とシステムアーキテクチャ設計に分けることができる。

2) システム要求分析

* システム要求分析とはシステムエンジニアリングプロセスの最初の工程にあたるものである。ここではシステム全体の機能仕様と制約を定義し分析する。

* 具体的にはシステムにどのような機能が要求されているか、システムに対する制約条件(コスト、処理時間、物理的サイズ、バッテリー等の外部要件)を明らかにし、必要な機能を確定することが必要である。

* システム要求分析で行われるのは具体的には次のような決定である。

- 必要なシステムはどのモジュールに分けることができるか。

- 具体的な機能としては何を実現するか。

- 機能の処理時間はどの程度か。

- ネットワーク機能やその他の別システムとの相互作用はあるかどうか。

- 耐久性や信頼性はどの程度か。

* これらの作業に必要な人材リソースやハードウェア・ソフトウェアに関する要素技術の洗い出しを行うこともある。

3) システムアーキテクチャ設計

* システムアーキテクチャ設計は、システム要求分析の後に行われる工程で、システム全体のアーキテクチャを決定することを目的とする。

* システムアーキテクチャ設計で具体的に行われるものは次のような決定である。

- システム全体を一つのマシンで行うか、それとも分散化するか。

- システムのどの部分をハードウェアで実現し、どの部分をソフトウェアで実現するか。

- プロセッサとして汎用LSIを用いるか、それともSoC(System on a Chip)やSiP(System in Package)と呼ばれる専用LSIを用いるか。

- 機能ごとに商用チップを利用するか、それとも独自開発をするか。

- OSを利用するかどうか。OSとして何を利用するか。

- ソフトウェアとしてどのような言語を用いるか。

* システムアーキテクチャ設計が終了すれば、次はハードウェア・ソフトウェア設計に移行する。

II-24-2. 組み込みシステム開発手順と関連文書

組み込みシステム開発工程の各ステップで利用できる各種の技法を説明し、ハードウェア構成図、ソフトウェア構成図、制御データフロー図やコントロールフロー図など、それぞれの手順で生成される成果物の概要と位置付けを解説する。

【学習の要点】

* 機器が高機能化・複雑化するに伴い、複数の開発者間での意思疎通のためにも組み込みシステム開発工程の各ステップにおいてドキュメントの重要性が高まっている。

* 各工程での成果物としては、ハードウェア構成図、ソフトウェア構成図、制御データフロー図やコントロールフロー図などがある。

* ソフトウェアの開発工程であるソフトウェアプロセスを例にとるとにはウォーターフローモデル、V字モデル、プロトタイピングモデル、アジャイルプログラミングモデルなどの開発手法がある。

図II-24-2. 様々な組み込みシステムの開発プロセス

 

【解説】

1) 組み込みシステム開発工程と成果物

* 組み込みシステム開発における工程は、ハードウェア設計、ハードウェア実装、ソフトウェア設計、ソフトウェア実装などにわけられる。

* 各工程において担当者間の意思疎通、次工程への的確な情報伝達、および品質テストや継続的な機能改善のための資料としてドキュメントを残すことが重要である。

* 主なドキュメントには下記がある。

- ハードウェア構成図:基板設計書や利用する部品一覧など

- ソフトウェア構成図:利用言語、機能構成図など

- 制御データフロー図:データと処理の流れをまとめたものなど

- コントロールフロー図:イベントごとのプロセスの起動や停止フローをまとめたものなど

2) 開発手順例

* 開発手順の例として、組み込み開発でのソフトウェアプロダクトを開発するために行われる一連の作業や活動であるソフトウェアプロセスを取り上げる。

* ソフトウェアの開発は過度に知的労働集約的な作業であるために、このプロセスを効率的にかつ創造的に管理する技法によって、ソフトウェアプロダクトの質と開発速度に違いが出る。

* 組み込みソフトウェアプロセスには複数のプロセスモデルがある。

- ウォーターフォールモデル:ウォーターフォールモデルは、要求分析 -> 設計 -> 実装 -> テスト -> 保守・運用 という一連のプロセスが一つの流れに沿って進むモデルである。

- V字モデル:V字モデルは、ウォーターフォールモデルにおけるテストを四つのレベル、単体テスト、統合テスト、機能テスト、システムテストに分けてとらえ、後半の各段階を前半の実装、詳細設計、基本設計、要求分解の段階に対応させたモデルである。

- プロトタイピングモデル:プロトタイピングモデルは、要求分析の段階でプロトタイプの制作を行いその検証をもって、設計 -> 実装 -> テスト -> 保守・運用につなげるモデルで、要求分析段階における要求の曖昧さを減らすことを重視している。

- アジャイルプログラミングモデル:アジャイルプログラミングモデルは、インクリメンタル型プロセスモデルともいわれ、開発対象をモジュール単位、優先度単位、要求の明確な単位に分け、これらの部分開発を繰り返して漸次的に開発を進めるモデルである。要求の決定に時間がかからないようにすることを重視している。

II-24-3. オブジェクト指向分析による組み込みシステム開発

制御対象やシステム資源をオブジェクトとして表現して設計するオブジェクト指向分析を、組み込み開発へ適用する方法について説明する。状態遷移図による分析や入出力の関係を表現する方法、リアルタイム性や事象応答精度の表現などオブジェクト指向によるモデリングを解説する。

【学習の要点】

* 組み込みシステムのソフトウェア開発において、オブジェクト指向分析をすることがある。

* ソフトウェアの要求分析と設計にはソフトウェアモデリングのパラダイムが必要である。

* ソフトウェアモデリングには、オブジェクト指向の他に、構造化手法、アスペクト指向等もある。

図II-24-3. 組み込み開発におけるオブジェクト指向分析のメリット・デメリット

 

【解説】

1) オブジェクト指向分析

* オブジェクトを主要な構成要素としてソフトウェアを構築する手法である。(II-13-1参照)

* UML等の記法を利用して、オブジェクトを抽象化し、そのオブジェクト間の相互作用を定義する設計手法である。

* 状態遷移図による分析や入出力の関係を表現することがある。

2) オブジェクト指向分析による組み込み開発の特徴と留意点

* オブジェクト指向分析により、オブジェクトとしての機能やドメインとしての開発範囲などが明確になる。

* UMLやユースケース図、データフロー図により複雑な処理を必要とするシステムにおいても設計段階で要件を的確に整理できる。

* ソフトウェアの再利用を進めやすくなり開発効率の改善に役立てられる。

* 開発効率をあげるためにハードウェアに依存する機能(センサなど)とソフトウェアを切り離したアプローチが有用な場合がある。

* オブジェクト指向分析に対応した組み込み開発環境が必要となる。

* 設計の難易度があがり、機能分割を進めてオブジェクト数を増やしすぎた場合、構造が複雑になり保守性の低下を招く可能性がある。また設計コストの増大にも配慮が必要である。

* プログラムの規模は大きくなるため、リアルタイム性への配慮も重要となる。

3) ソフトウェアモデリングと抽象化

* ソフトウェアの要求分析と設計においては、問題ドメインを効率良く抽象化し、モデリングをするためのモデリングパラダイムが必要である。

* オブジェクト指向以外のソフトウェアモデリングのパラダイムについては以下のものがある。

- 構造化手法:機能に注目し、機能ごとに段階的にモデリングする手法である。データフローダイアグラム等を利用してモデリングを行う。

- アスペクト指向
構造化手法もオブジェクト指向も一般に、モジュール分割する手法であるが、そのために各モジュールに要素が分割してしまうという欠点がある。このことが保守性の低下をもたらす。これを解決するために「アスペクト」という概念で、モジュールに分割された要素を横断的にカバーするのがアスペクト指向手法である。

* 保守性と再利用性のために、ソフトウェアコンポーネントとデザインパターンを流用する。

II-24-4. 組み込みシステム開発における各種の管理

ハードウェアやソフトウェア個別の品質特性や開発における品質維持など組み込みシステムの品質管理や、特許・ライセンス・機密情報などの管理、開発したシステムの変更管理など、組み込みシステム開発で必要となる各種の管理について説明する。

【学習の要点】

* 組み込みシステムには非常に高い品質が求められる。これを担保するための最も重要な仕組みがテストである。

* 自社の特許を技術ライセンスと提供するビジネスも盛んに行われている。

* 機器の高性能化に伴い、開発規模の拡大よる複数人による開発、または継続的な開発と改良、品質保証のためには、ハードウェア、ソフトウェア共に、構成管理をおこなうことが必要である。

図II-24-4. 組み込みにおけるテストと構成管理

 

【解説】

1) 品質管理

* 組み込みシステムは、一度稼働させた製品は止まることなく数年または数十年に渡って誤動作なく稼働するという、非常に高い品質が求められている。そのために、必要な品質管理が大変重要である。品質管理においては、最も重要なのはテストである。

* ハードウェアにおいては、設計段階において行われる検証と、製造段階で行われるテストに分けられる。

- 設計時検証:例えばSoCにおいて設計が期待通りに行われているかどうかをチェックするためには、シミュレーションによる検証、エミュレーションによる検証、形式的な検証などが必要である。

- 製造時テスト:ハードウェア設計が成功したとしても、製造過程で欠陥があると正常にハードウェアが動作しない。この製造不良を発見するものがテストである。製造過程におけるテストは、時間の関係上、クリティカルな入出力値をみるものとなるのが通常である。

* ソフトウェアの品質基準は大きく分けてベリフィケーションとバリデーションという二つの考え方がある。ベリフィケーションはソフトウェアプロセスにおいて、各工程が上の工程の品質基準をみたしているかどうかを問題にし、バリデーションはソフトウェアプロセスにおいて生成されるプロダクトが最終的に顧客要求を満たしているかどうかを問題にする。

* ソフトウェアのテストにおいては、ソフトウェアプロセスの段階ごとに以下のテスト種類に分けることができる。

- 単体テスト・結合テスト:前者は関数やモジュール一つごとのテストであり、後者は関数やモジュールを呼び出して行われるテストである。しばしば、スタブやドライバというモックオブジェクトを利用して、テストを行うことが多い。

- 機能テスト:すべての機能について網羅的に入力値、出力値の組合せが正常かどうかを検証するテスト。

- システムテスト:システムに負荷をかけたり、動作環境や設定を意図的に変更したり、異常な状況という特殊環境を設定して行われる、品質のロバスト性を検証するテスト。

- 回帰テスト:ソフトウェアの変更に伴い、コードの先祖返りやデグレードを起こさないように行われるテスト。

2) 特許・ライセンス・機密情報などの管理

* 競争優位性の保護から機密情報の管理が重要なことは言うまでもない。

* 特許を取得しその技術をライセンス提供するビジネスも盛んである。二社間でそれぞれの技術を交換するクロスライセンスもよく行われている。

3) 構成管理

* ハードウェア・ソフトウェアに関わらず、なんらかのソースコードを複数人で開発する場合や、継続的な上位バージョンの開発には、ソースコードの版管理が重要になる。また、開発に利用するハードウェア要素や構成、ソフトウェア構成などのバージョン、製品仕様等を管理することも必要である。これらを構成管理と言い、ハードウェア要素、ソフトウェア要素の変更に対して、整合性を保つようにコントロールし、常に変更を追跡しなければならない。

II-24-5. 組み込みシステム開発プロジェクトの体制

組み込みシステム開発プロジェクトにおけるプロジェクトマネジメントに必要な各種のマネジメント、スケジュールマネジメント、リソースマネジメント、要求マネジメント、コミュニケーションマネジメント、について解説を行うと共に、組み込みシステム開発プロジェクトをマネジメントする鍵を提示する。

【学習の要点】

* 組み込みシステム開発においては、ハードウェアとソフトウェアの摺り合わせを事前に計画し、マネジメントを行う必要がある。

* 組み込みシステム開発におけるプロジェクトマネジメントでは、異なったリソースが絡んでいると共に、異なった職能をもつ人材を一つの目的に向かって作業を進めなければならないという難しさがある。

* スケジュールマネジメントでは、トレードオフ状況を捌く必要がある。

* リソースマネジメントで一番重要な要素は人的資源である。

* 要求とプロジェクト活動を整合的にし、すべてのステークホルダーの情報伝達が適切にすることで、プロジェクトが失敗するリスクを減らすことができる。

図II-24-5. 組み込みシステム開発プロジェクトの体制

 

【解説】

1) 組み込みシステム開発におけるプロジェクトマネジメント

* 組み込みシステム開発におけるプロジェクトマネジメントとは、ターゲットとする組み込みシステムの開発を計画したコストと時間で達成するために必要なすべての活動を意味する。

* 開発プロジェクトのマネジメントで必要なのは次の要素である。

- プロジェクトの目的とゴールをチームに明示する

- プロジェクトの計画立案を明示する

- プロジェクトの状況把握と調整を行う

* 組み込みシステム開発においては、ハードウェアとソフトウェアという二つの大きな開発物があるために、これらの摺り合わせを事前に計画し、マネジメントを行わなければ、目標とする機能、性能、品質に到達することが難しくなる。

* 組み込みシステム開発におけるプロジェクトマネジメントでは、ハードウェアとソフトウェアという分野にまたがり、異なったリソースが絡んでいると共に、異なった職能をもつ人材を一つの目的に向かって作業を進めなければならないという難しさがある。そのために日々何かしらの問題が生じると仮定したマネジメントが必要になる。

2) スケジュールマネジメント

* スケジュールマネジメントは定められた期間内で業務を完了するために必要なマネジメントを行うことである。

* プロジェクトのスケジュールはプロジェクトの開発コストやリソース、要求事項に密接に関係しているために、リソースが減ったらスケジュールを延ばすなどの、トレードオフを捌かなければならない。

* スケジュールの状況を図示するために、しばしばガントチャートやアローダイアグラム等が利用される。

3) リソースマネジメント

* リソースマネジメントは、人的資源やナレッジ、製造機器、開発ソフトウェアなど、開発に必要な人的、物的リソースをマネジメントすることである。

* リソースマネジメントで一番重要な要素は人的資源である。人的資源のマネジメントは、開発チームのメンバーが個々持っている属性である、スキルやナレッジ、そして経験、また稼働可能なスケジュールといったものを、プロジェクトに最適配置することがポイントになる。

* 新規採用の場合はその教育や養成をマネジメントすることが必要である。

4) 要求マネジメント

* 要求マネジメントとは、プロジェクトに対する要求事項とプロジェクトの諸活動の整合をとるために必要なマネジメントである。

5) コミュニケーションマネジメント

* コミュニケーションマネジメントとは、開発プロジェクトに関係するすべてのステークホルダーの間の情報の伝達が効率よく的確に行うようにマネジメントすることである。

II-24-6. 組み込みシステムのアーキテクチャ

PC/AT互換機や情報家電、携帯電話、センサシステムなど代表的な組み込みシステムのハードウェアを紹介する。またこれらのシステムにおいて動作するソフトウェア構成の代表例を示し、それぞれの特徴や開発に必要な項目について説明する。

【学習の要点】

* 代表的な組み込みシステムのハードウェアアーキテクチャはSoC(System on a Chip)である。

* 最近の組み込みシステムではメモリアーキテクチャを構成し、多数のメモリの整合性とタイミングを考慮する必要がある。

* プロセッサには大きく分けて、汎用プロセッサ、アプリケーション専用プロセッサ、応用指向プロセッサの三つがある。汎用プロセッサでは、OSを載せることが多い。専用プロセッサは高度な処理を行うときに利用される。応用指向プロセッサの代表例はDSP(Digital Signal Processor)やGPU (Graphics Processing Unit)である。

* FPGA等のリコンフィギャラブルコンピューティングを利用したプロセッサが主流になっている。

図II-24-6. 組み込みシステムのアーキテクチャ

【解説】

1) SoCアーキテクチャ

* SoC(System on a Chip)アーキテクチャとは、主要な機能を1チップの半導体として実現した組み込みシステムのアーキテクチャである。SoCでは通常のパソコンのマザーボードにある、プロセッサ、バス、メモリ、I/Oインタフェース、グラフィックス等を一つの半導体として実現する。

* SoCのメリットは以下の点にある。

- 小さなサイズとなるためにシステムを小さく作ることができる。

- 物理的に部品点数も少なく、故障が少なくなると共に、保守性が増す。

- 信号伝達がチップ内だけなので、高性能かつ消費電力を抑えることができる。

2) メモリアーキテクチャ

* 組み込みでは、リアルタイム処理を実現するために多数のメモリが利用されている。最近では携帯電話や音楽プレイヤーのように大容量のメモリが必要であることから、メモリのアーキテクチャを構成し、キャッシュと主記憶、フラッシュメモリ等の整合性とタイミングを考慮する必要がある。

* メモリアーキテクチャに依存してソフトウェア構成を考える必要がある。

3) プロセッサ

* プロセッサには大きく分けて、汎用性の順序で、汎用プロセッサ、応用指向プロセッサ、アプリケーション専用プロセッサの三つがある。汎用性の高さは性能とトレードオフであることが通常である。

* 組み込みで仕様される汎用プロセッサは、ARM, MIPS, PowerPC, SH V850などが主流である。汎用プロセッサは、その上にOSを乗せて利用されることが多く、その場合機能要求をソフトウェアで実現することが多い。そのようなアーキテクチャを採用すると、開発コストが小さくなり、多様な機能開発が実現できる反面、性能が大きく実現できないことがある。

* 応用指向プロセッサは汎用と専用の中間に位置するプロセッサで、ある範囲の幅をもった専用処理を行う。代表的な例では、信号処理に共通な演算処理(例えばフィルタ処理の積和演算など)はDSP(Digital Signal Processor)で行われるののが通常である。また、3D画像のグラフィックス処理などでは、GPU(Graphics Processing Unit)が利用されるのが通常である。

* 専用プロセッサはできる限り高い性能を実現するために、特定のアプリケーションを実現するために利用されるものである。例えば、デジタル放送テレビの放送信号を処理する画像処理エンジンなどは、リアルタイムに高度な性能をもとめられるために、専用プロセッサが利用されている。

4) リコンフィギャラブルコンピューティング

* SoCにおいてハードウェアの回路構成を動的に変更できる技術をリコンフィギャラブルコンピューティングと呼ぶ。近年多用されるFPGA(Field Programmable Gate Array)が代表例である。

* FPGA等のハードウェアは特定の専用回路ではなく、一種のプログラミングによりハードウェアの機能を実現している。そのために、ソフトウウェア開発との相性がよく、ハードウェアとソフトウェアのコデザインという開発パラダイムという考え方によく合致する。

* FPGA等は高価なマスク処理等が必要ないために、他品種少量生産に向いている。

II-24-7. 組み込みシステムにおけるネットワークのハードウェア要件

シリアル通信、赤外線インタフェース、IEEE802.15などの低速デバイスや、IEEE1394、イーサネット、USB2.0などの高速デバイスによる通信インタフェースのハードウェアについて、その概要や特徴、利用方法、留意点を解説する。

【学習の要点】

* 組み込みシステムは、外部ハードウェア機器との接続のために、バス/インタフェースと汎用ネットワークをサポートする必要があることが多い。

* バス/インタフェースはCPUに周辺機器を接続するための仕組みであり、主にPCMCIA、PCI、SCSI、USB、GPIB、IEEE1934(FireWire)などが例である。

* 汎用ネットワークは、主にCPUをもつ組み込みシステム同士が、相互に通信するためのサービスの仕組みである。イーサネットやIrDA, IEEE 802.11(無線)などが例になる

* バス/インタフェースや汎用ネットワークはデバイスドライバを通じて論理的な通信が行われる。

* 組み込みシステムにおいては、ハードウェア上の制限から通信容量、電源容量、エラー処理、遅延対策等について十分に検討する必要がある。

 

図II-24-7. 組み込みシステムにおけるネットワーク

 

【解説】

1) バス/インタフェースと汎用ネットワーク

* 組み込みシステムは、外部ハードウェア機器との接続のために、バス/インタフェースと汎用ネットワークをサポートする必要があることが多い。

* バス/インタフェースはCPUに周辺機器を接続するための仕組みであり、ハードウェア同士を低レベルな通信プロトコルにより直接接続する。「ネットワーク」ではない。

* 汎用ネットワークは主にCPUをもつ組み込みシステム同士が、相互に通信するためのサービスの仕組みである。イーサネットやIrDA, IEEE 802.11(無線)などが例になる。

* 組み込みシステムにおいてバス/インタフェースや汎用通信に対応する場合、しばしばハードウェア上の制限から通信容量、電源容量、エラー処理、遅延対策等について十分に検討する必要がある。

2) バス/インタフェース

* 組み込みシステムにおける主なバス/インタフェースには次のものがある。

- PCMCIA:主に ICカードを接続するために利用されるバス。

- PCI: PC-ATアーキテクチャにおいて現在最も普及しているバス。イーサネットカードやグラフィックカードの接続に利用する。

- SCSI: ハードディスクなどの様々なハードウェア周辺機器を接続するための汎用バス。

- USB: 高速シリアルバス規格の一つで、プラグ&プレイおよびホットプラグに対応している。

- GPIB: 測定機器、計測機器に利用される。エンジニアリングと科学分野で利用が多い。

- IEEE1934(FireWire): 高速シリアルバス規格の一つで、プラグ&プレイおよびホットプラグに対応している。USBとの差はデータ通信にホスト機器が必要ないことである。

3) 汎用ネットワーク

* 多くの組み込みシステムが汎用のネットワークに接続するようになってきている。そのために汎用の通信インタフェースに対応する必要がでているのが現状である。

* 組み込みシステムにおける主な汎用ネットワークには次のものがある。

- イーサネット:現在最も普及しているネットワークインタフェース。

- IrDA:赤外線を利用したデータ通信を行うネットワークインタフェース。

- IEEE 802.11:無線を利用したネットワークインタフェース。イーサネットの無線版。

- Bluetooth:近接したデバイス同士の通信を無線で実現する。無線版USBとも言われる。

4) デバイスドライバ

* バス/インタフェースや汎用ネットワークはデバイスドライバを通じて論理的な通信が行われる。

* デバイスドライバとは入出力装置や外部記憶装置などの周辺デバイスを直接制御するソフトウェアである。

* デバイスドライバを利用するメリットは、周辺デバイスの違いを抽象化して、上位にあたるアプリケーションの再利用性を高めることと、アプリケーションの開発自体を容易にするという2点である。

II-24-8. 組み込みシステムにおけるネットワークのソフトウェア

組み込みシステムで利用できる各種の通信デバイスに関して、ソフトウェアからの利用方法を説明する。また通信するデータや通信対象、通信手段の選択方法や、組み込みシステムで利用できる通信ミドルウェアについて解説する。

【学習の要点】

* 組み込みシステムにおけるネットワークのソフトウェアで利用される言語は、C, アセンブラ、C++, Javaの順である。Cとアセンブラの組合せが組み込みソフトウェアの開発において一番利用され、安定している言語セットである。

* 組み込みシステムにおけるネットワークのソフトウェアの開発ではOSが利用されることが日常化している。

* 組み込みインターネットでは通常の汎用PCと同様のネットワークソフトウェアが利用される。

* 組み込みインターネットを利用する場合はOSを利用する場合が多い。

図II-24-8. 組み込みシステムで利用される言語とOS

 

【解説】

1) 組み込みシステムにおけるネットワークのソフトウェアにおける言語

* C言語
現在組み込みシステムにおいて最も利用されている言語はC言語である。C言語はデバイスドライバなどのハードウェアに直接アクセスするプログラムの作成に向いている。

* アセンブラ
C言語の次に組み込みで利用されているのがアセンブラである。未だにアセンブラが利用されているのは、割り込み処理などはC言語を利用していてもアセンブラが必要であること、C言語よりもパフォーマンスがよいこと、などがあげられる。ただし、命令セットがプロセッサごとに異なるために、ソフトウェアの再利用性が低くなる。

* C++
C++は大規模な組み込みシステムを中心に広がっているが、あまり十分に広がっているとは言えない状況である。その理由として、例外処理やテンプレートなどを不用意に利用してしまうとコードサイズが巨大になってしまうこと、メモリ配置を静的に決められないのでメモリの最適化を意図的に実現することができないこと、などがある。

* Java
Javaは携帯電話のような、マシンが独立で比較的小さなバイトコードをダウンロードして利用する場合に利用されているだけで、十分に広まっていない。その理由はVM (Virtual Machine)のオーバーヘッドが無視できないほど大きいこと、ガベージコレクションによりリアルタイム性を著しく失うことなどがある。

2) オペレーティングシステム

* プロセッサの処理能力性能の向上と、機能要件の肥大化の波が押し寄せた結果、組み込みシステムにおいてオペレーティングシステム(OS)が採用されるケースが急増している。

* 多くの組み込みシステムではリアルタイム性が求められることから、リアルタイムOS(RTOS)が利用されることが多い。このようなRTOSとして、ITRONおよび後継のT-Engine, RTLinux, VxWorks, Embeded Windows CEなどがよく使われる。

* 最近では組み込み機器であっても、プロセッサ性能とメモリ容量が拡大したことから、LinuxやWindowsの汎用OSがそのまま搭載されることさえある。

3) 組み込みインターネット

* 携帯電話や情報家電をはじめとして、組み込み機器を利用してインターネット上のサービスを活用する機会が増えてきた。これを組み込みインターネットという。典型的な利用方法が、携帯電話からのWebブラウジングや動画ストリーミング、メール閲覧である。

* 組み込みインターネットでは通常の汎用PCと同様、TCP/IP通信の上にHTTPプロトコルやIMAPプロトコルを利用したり、UDP/IPの上にストリーミング形式のプロトコルを利用したりする。

* インターネットに対応するミドルウェアとしてのソフトウェアスタックが必要になるため、その一部として利用可能であるOSを採用する場合が多い。

* 組み込みインターネットに対するソフトウェアスタックが無い場合は、スクラッチから開発することになるが、既にコモディティとなっているインターネットソフトウェアスタックを開発するかどうかは、十分に検討する必要がある。

II-24-9. 組み込みコンピュータを取り巻く今後の環境

携帯電話、PDAのプラットフォームや情報家電など、今後発展が期待される組み込みシステム応用分野の概要や将来展望、それらの現状と発展の動向など、組み込みシステムを取り巻く様々な環境の変化について解説する。

【学習の要点】

* 増大する機能要求と工期の短縮を実現するために、IPベース設計、既存ソフトウェアのライセンス利用、OSの利用はますます強化される。

* ハードウェアとソフトウェアの協調設計も強化される。

* Write Once, Run Everywareが何らかの形で実現される。

* アプリケーションとしてのWebサービスの利用が組み込み端末にも広がる。

* センサ型超小型インターネット端末ネットワークにより、新たな情報サービスが生み出される。

 

図II-24-9. 組み込みコンピュータを取り巻く今後の環境

 

【解説】

1) 増大する機能要求と工期の短縮

* 組み込みコンピュータは、多様化するデバイスインタフェースへの対応、爆発するネットワークサービスへのキャッチアップ、動画等のマルチメディアデータの大量処理というように、ますますの多機能化とデータ処理の速度の増加を求められている。

* その反面、サイズの縮小化や消費電力の低下、そしてマーケットドリブンな工期の短縮化といったことを求められている。

* 開発工数が大きくなるということと、工期を短縮しなければならないという矛盾した状態を解消するために、今後も以下の既存モジュールの利用を軸とした組み込み開発は増えていくだろう。

- IPベース設計

- 既存ソフトウェアのライセンス利用

- OSの利用

2) ハードウェアとソフトウェアの協調設計

* 現在においてもSoCの設計に利用される言語はC言語であり、ソフトウェアアプリケーションの実装に利用される言語もC言語である。このように、将来はハードウェアとソフトウェアの境界を明確に定めることがない、より緊密な協調設計が可能になり、マーケットの要求に素早く応えることが期待できる。

3) Write Once, Run Everywareの実現

* Write Once, Run Everywareとは一度プログラムを書くだけで、どんなシステムでもそのプログラムが動作するという考え方である。現在Java言語はある程度これを実現してはいるが、それでもヴァーチャルマシンのプロセッサ依存やその性能保証という点で十分に機能しているわけではない。

* 今後、ますますプロセッサ性能とメモリが増大し、かつ既存ソフトウェアや汎用OSの利用が広がれば、真のWrite Once, Run Everywareが実現できると期待できる。

4) アプリケーションとしてのWebサービスの利用

* インターネットサービスは今後もますます充実すると考えられる。このために、インターネット用のブラウザアプリケーションがあるだけで、多種多様なサービスを自動的に享受できることになっていく。

* これは、組み込み機器独自のアプリケーション開発をする必要がないということになってくるために、コストの著しい削減と効用の増大につながる。従って、組み込み機器のインターネット対応の傾向はますます強化されるだろう。

5) センサ型超小型インターネット端末ネットワーク

* 今後様々な社会環境や自然環境の状況を刻々と報告する、センサ型の超小型インターネット端末が組み込みシステムとして登場することは容易に考えられる。

* このセンサ型超小型インターネット端末が巨大なセンサネットワークとなり、そのネットワークを利用してより細かくパーソナルな情報サービスを提供することになるだろう。

 

II-24-10. インターネット以外の組み込みコンピュータネットワーク

携帯電話による通信や、赤外線通信、ユビキタスネットワークなど、組み込みシステムで利用できるインターネット以外のネットワークアーキテクチャについて解説する。さらに組み込みシステムにおけるIPv6の利用動向についても述べる。

【学習の要点】

* 携帯電話による通信や赤外線、RFIDによるユビキタスネットワークなど、インターネットを離れてもネットワークは広く利用されている。

* 組み込みの分野で市場規模の大きいネットワークの例としては、自動車の車載ネットワークと工場で利用されるFAシステムがあげられる。

* IPv6の普及によりあらゆる機器にIPアドレスを持たせインターネットによる通信が可能となることから、現在は通信機能のない家庭用電化製品への適用など、幅広い利用が期待されている。

図II-24-10. 広がる組み込みコンピュータのネットワーク

 

【解説】

1) インターネット以外の組み込みコンピュータネットワークとIPv6

* 組み込みシステムにおいても、他のシステムと同様に、赤外線通信、ユビキタスネットワークなどのインターネット以外のコンピュータネットワークが利用されている。

* IPv6の普及により、全ての機器やデバイスが個別にIPアドレスを持ちインターネットを利用した通信の実現が可能となり、期待されている。

* 組み込みシステムにおけるIPv6の利用は、TCP/IPプロトコルスタックの実装をハードウェア(ROM化)で行う場合と、ソフトウェアで行う場合がある。ソフトウェアで行う場合は、OSを利用する場合が大多数である。

* インターネット以外の組み込みコンピュータネットワークで市場シェアとして大きいものは、自動車や車両に用いられる車載ネットワークと、生産工場で利用されるFAネットワークである。

2) 車載ネットワーク

* 組み込みシステムとして自動車を見た場合、組み込みインターネットなどの情報ネットワークに比べて、高度の信頼性、リアルタイムの保証性が必要とされる。この車載ネットワークについては国際標準化が行われ、オープン化が進行している。

* 自動車向けの制御ネットワークとして国際標準として利用されているのがCAN(Controller Area Network)である。

* アクチュエーターやセンサなどのデバイスをつなぐための低速・低コストのネットワークとしては、LIN(Local Interconnect Network)が利用されている。

* CANはマルチマスタ方式のバス型ネットワークである。一つのバスに複数のノードが繋がれており、通信はすべてのノードにメッセージのブロードキャストが行われる。メッセージにはIDがついており、このIDが優先度を表す。各ノードはIDをみて自分に必要なメッセージを取り込む。

* CANにおいては、プロードキャストと優先度の確保がリアルタイムの保証を担保することになる。

3) FAネットワーク

* FAシステムのネットワークも高度の信頼性とリアルタイム保証が求められる分野である。

* FAシステムの組み込みシステムネットワークについては、次の三つのレベルに分けて考えることができる。

- コンピュータレベル:工場全体の管理を行う。

- コントローラレベル:生産ラインごとの管理・制御。

- デバイスレベル:一つの製造機器における制御コンピュータとセンサ・アクチュエータの管理。

* コンピュータレベルのネットワークにはEthernetを利用してTCP/IP経由の情報系ネットワークが利用されることが多い。

* DeviceNet(http://securesite.jp/ODVA/devicenet/)はコントローラ及びデバイスレベルのネットワークで、車載ネットワークであるCANをそのまま流用する。

* CC-Linkはコントローラ及びデバイスレベルのネットワークで、マスタースレーブ型のバス型ネットワークである。CC-Linkは日本の業界団体による普及活動が行われている。