フェラーリのカーナビから考える、組込みソフトウェアの設計
製品の仕組みを入口に、C言語とシステム設計を学ぶ
身近な製品の中で、プログラムはどのように動いているのでしょうか。
グローバル教材開発株式会社では、大学・企業向けに、C言語や組込みシステムの講義・研修を行っています。大切にしているのは、プログラミングの知識を、実際の製品の動作と結びつけて理解することです。
今回は、その一例として、フェラーリ・ポルトフィーノのカーナビゲーションシステムを題材に、組込みソフトウェアの設計を考えます。
複数の機能を、同時に動かすには
カーナビは、目的地までの経路を案内するだけの装置ではありません。画面への操作、地図の表示、音楽の再生、スマートフォンとの接続など、さまざまな処理を扱います。
ここで、設計上の問いが生まれます。
「経路を計算している間も、画面の操作を受け付け、音楽を再生し続けるには、どうすればよいでしょうか」
一つの処理が終わるまで、ほかの処理を待たせる構成では、操作への反応が遅れたり、音声が途切れたりする可能性があります。
そこで、処理をどのような単位に分けるか、何を優先するか、処理の間でどう情報を受け渡すかを考えます。
製品の動作から考えることで、タスク分割やイベント処理といった設計の考え方が、具体的な課題として見えてきます。
C言語の基礎を、製品の動作につなげる
変数、配列、構造体、ポインタ、関数。C言語で学ぶこれらの要素も、用途と結びつけることで理解しやすくなります。
例えば、カーナビを想定した教材では、次のような課題を考えられます。
- 構造体: 現在位置と取得時刻を、一組のデータとして扱う。
- 配列・メモリ管理: 音声データを一時的に保存し、順次処理する。
- 条件分岐・状態遷移: 「未接続」「接続中」「接続済み」で動作を切り替える。
- 関数分割: 入力、計算、表示の役割を分け、変更しやすい構成にする。
さらに、「通信が途中で切れたらどうするか」「位置情報が更新されなくなったらどうするか」と問いを広げれば、異常時の処理や信頼性の検討にもつながります。
文法を理解し、意図した動作を組み立て、想定外の状況にも備える。そのつながりを伝えることを重視しています。
開発経験を、技術教育へ
講師は、パナソニックでDVD関連の研究・設計や海外開発支援などに携わり、現在は大学・企業で技術教育を行っています。
開発現場での経験をもとに、「どう書くか」に加えて、「なぜその構成にするのか」「どこで問題が起きるのか」を具体例とともに解説します。
※本稿の設計例は、公開情報を手がかりにした教育上の考察です。実機を分解・解析したものではなく、搭載CPU・OS・実装言語や内部構成を特定するものではありません。
C言語・組込みシステム研修のご相談
C言語の基礎学習から、組込みソフトウェアの設計を考える講義まで、受講者の経験や学習目的に応じた研修をご相談いただけます。
企業研修、大学での講義、研修会社様からの講師登壇のご依頼など、対象者・学習目標・実施時期を添えて、お問い合わせください。
グローバル教材開発株式会社
[研修・講師登壇について問い合わせる]