【ワールドクラスのオンサイト(一社)研修】
C言語によるリアルタイム組み込みソフトウェア開発の理論と実践 -ロボット制御演習による実践力強化-

コース番号:223P
日数:5日間(ご希望に合わせた日数・内容のカスタマイズが可能です)
形態:ハンズオン

研修コースの概要

IoTの普及にともない、ますます組み込みソフトウェア開発の重要性が高まっています。しかし、そのようなソフトウェアの開発には非常に広範囲な分野にわたる深い知識と技術が必要で、優れた開発者を育てるのは大変難しいことが知られています。このコースは、C言語でリアルタイムの組み込みソフトウェアを設計・実装するのに必要な知識・技術について、理論から実践まで一貫して学ぶことを目的としたコースです。 コースを通した演習でLego社MindStorms®で作ったTippySrというロボットの制御・駆動系のプログラムを実装します。講義で新たな知識・技術を学ぶごとにそれを利用した演習として、TippySrの一部ずつを段階的に実装していきます。そのようにして最後にコースで学習した知識・技術を全て駆使したロボットのプログラムを完成させます。

コースの最初の3日間は基礎編として、制御プログラムの実行時の動作を完全に把握するためにコンパイラおよびOSに対する理解を深めます。まずCのプログラムがどのようにメモリー上に展開され実行されるのか、Cとアッセンブラのコードのリンクの仕方、あるいはポインタ演算の完全な理解といった言語の重要な機能および実装メカニズムの理解を深めます。次に複数スレッドの実行環境およびそれらの間のインタラクションといった並行プログラムの基礎や同期の問題を学習し、さらにOSが「どのような」並行プログラム環境を「どのようにして」提供しているのかをより深く理解するため、MindStorms®用のC言語OSであるBrickOSのソース・コードの主要部分を読解します。

続く2日間は応用編として、TippySrのロボット上に制御プログラムと駆動プログラムを実装します。多くのリアクティブ・システム(外部からの入力に対してなんらかのアクションを起こすシステム)の制御系の仕様記述には状態遷移図が使われます。ここでは状態遷移図による記述法を学び、それを状態遷移テーブルにより機械的にC言語で実装する方法を学習し、それをTippySrの実装に応用します。さらに状態遷移図のUML(Unified Modeling Language)における拡張版であるステート・チャートにてモデル化する技法を理解します。駆動プログラムについては組み込みシステムの標準的な駆動法であるContorl-Loop型、Event-Triggered型、周期タスク型の3つのタイプの構成を学びそれらの長所・短所を理解します。さらにハードリアルタイムシステム設計に必要なリアルタイム・スケジューリング理論を学習し、高信頼性ハード・リアルタイム・システムの標準スケジューリングアルゴリズムであるRate Monotonicを周期タスク方式によりOS上に複数スレッドを使い実装する方法を学び、それをTippySrの実装に応用します。

この研修では次のスキルが習得できます

  • 組み込み機器実装に必要な高度なC言語の機能・実装の詳細
  • リアルタイム組み込み機器開発に必須な知識である並行プログラムと同期の基礎
  • BrickOSのソース・コードの主要な部分を解読することによる、OSの内部の構造および動作の詳細の理解
  • 状態遷移図およびステート・チャートによるリアクティブ・システムの仕様の記述法
  • 状態遷移テーブルを用いたC言語による状態遷移図の実装法
  • 組み込みシステムの主な駆動法であるControl-Loop型、Event-Triggered型、そして周期タスク型の3つのシステム構成およびそれらの長所・短所の詳細比較
  • リアルタイムのスケジューリング理論およびその実装への応用
  • 以上学習した知識・技術を全て使い、Lego MindStorms®のロボット上に制御・駆動プログラムを実装し実践力を鍛える。

この研修の対象者

最新のリアルタイム組み込みソフトウェア開発の理論から実践まで一貫して体系的に学ぼうと考えていらっしゃる組み込み機器の設計者、プログラマ、ソフトウェア・エンジニアの方々に最適です。受講には6ヶ月以上のC言語によるプログラムの経験が必要です。

コース内容

組み込みソフトウェア開発のための上級C技術

  • コンピュータの基礎構成
  • Cプログラムの実行環境
  • 配列とポインタ演算

並行プログラムと同期

  • プロセスとスレッド
  • 同期
  • OSの構成(monolithic型とMicroKernel型)

BrickOSの内部構成とソース・コードの解読

  • BrickOSの構成
  • インタラプト(割り込み)の詳細
  • BrickOSのカーネルの実装

演習用ロボット(TippySr)の紹介

  • TippySrの概略
  • 行動制御理論
  • TippySrの行動制御定義
  • TippySrの駆動メソッド

ステート・マシンによる制御仕様の記述とCによる実装

  • ステート・マシンと状態遷移図
  • ステート・マシン図の紹介

組み込みソフトウェアの構成とリアルタイム・スケジューリング理論

  • リアルタイム・システム
  • 組み込みソフトウェアの構成
  • リアルタイム・スケジューリング理論

TippySrの同期コードの解説

受講者の声

「5日間の研修内容すべてに無駄が無く、ほぼ全てが繋がってリアルタイムシステムの理解に繋がり、また、より実践に基づいた即日使える内容ばかりだった。リアルタイムシステム設計者必須の研修と思う(全員受けさせるべき)。」

「大変有意義な講座でした。組込システムのソフトウェアについて包括的に網羅されており、しかも“広く浅く”ではなく“広く深く”知識を習得出来たと思います。」

「知識の紹介だけでなく、実践による裏付けも伴っており、とても良い内容だったと思います。プログラム歴は約10年。先生のおっしゃる通り、しっかりした教育を受けずにOJT中心の技術習得だったので理論的な知識が欠けている事を痛感し、もっと早く受けていたらと思いました。」

「独学では何年、何十年経っても得られない内容を本コースで学べたと思います。想像していた以上に内容が濃かったので、講師の他のコースも受講したいと思います。」

「素晴らしい内容だった。プログラマとして仕事をしていくうえで必要な知識を学べ、今後の勉強の必要性を意識させる構成は、初日からずっと驚きだった」

「インストラクターの知識の深さ、広さ、説明、質疑応答、いずれもレベルが高く、脱帽する。」

「組み込みシステムの技術者として知っているべき基礎が学べた。とても高度な内容だったが、すぐに業務に活かせるような知識であり、復習して自分の技術にしたいと思う。」

「深い知識と豊富な経験から構成された講義は、これまでの自分のソフトウェアに対する価値観を変えてくれる内容であった。さらに、ソースレベルで考えることの重要さと正確さを学べた。」

「コンパイラからOSまで、組み込みソフトウェアの動作について、完全に理解するための知識を得られた。」