リアルタイム組み込みソフトウェア開発の理論と実践(2)
-リアルタイム制御理論とそれに基づいたロボット駆動プログラムの実装-
コース番号:348M
日数:3日間
形態:ハンズオン
この研修の対象者
このコースの受講には「リアルタイム組み込みソフトウェア開発の理論と実践(1)-Cコンパイラ生成アセンブリコードおよびポインタ演算の理解とOSソースコードの読解」の履修終了が条件です。
開催日程 |
|
---|---|
時間 | 9:00 - 19:00 |
料金 |
|
会場 | 弊社 神保町 セミナールーム » |
研修コースの概要
IoTの普及にともない、ますます組み込みソフトウェア開発の重要性が高まっています。しかし、そのようなソフトウェアの開発には非常に広範囲な分野にわたる深い知識と技術が必要で、優れた開発者を育てるのは大変難しいことが知られています。各3日間から成る2つの連続したコース348Lおよびコース348Mはリアルタイム組込みソフトウェア開発に必要な知識と技術を理論から実践まで一貫して学ぶことを目的としたカリキュラムです。前コース348Lは「基礎編」、そして本コース348Mは「応用編」という位置付けです。コース348Mではコース348Lで学習した基礎の知識・技術を基に、以下の学習をします。
- x64およびARMのISA(命令セットアーキテクチャー)を理解し、それを基にコース348Lで読解したx86上で実装された brickOSをx64(Ubuntu Linux)およびARM(Raspberry PiおよびTOPPERS/EV3RT)に移植したコードを読解します。これによりOSの他プロセッサへの移植法を学習します。
- リアクティブ・システム(外部からの入力に対して何らかのアクションを起こすシステム)の制御系の仕様記述には多くの場合状態遷移図が使われますが、ここでは状態遷移図による記述法を学び、それを状態遷移テーブルにより機械的にC言語で実装する方法を学習します。さらに状態遷移図のUML(Unified Modeling Language)における拡張版であるステート・チャートにてモデル化する技法を理解します。
- 組み込みシステムの標準的な駆動法であるControl-Loop型、Event-Triggered型、周期タスク型の3つのタイプの構成を学びそれらの長所・短所を理解します。
- ハードリアルタイムシステム設計に必要なリアルタイムスケジューリング理論を学習し、高信頼性ハード・リアルタイムシステムの標準スケジューリングアルゴリズムであるRate Monotonicを周期タスク方式によりOS上に複数スレッドを使い実装する方法を学びます。そして複数スレッドを使った場合に起こる同期問題に対する排他制御について学習します。
このコースの特徴は単に座学として理論だけを学ぶのではなく、コースを通したハンズオン演習で、学習した知識・技術を全て使いLego社MindStorms® EV3で作られたロボット上にTippySrというロボットの動作仕様を実現する制御・駆動系のプログラムを実装します。講義で新たな知識・技術を学ぶごとにそれを利用した演習として、TippySrの一部ずつを段階的に実装していきます。そのようにして最後にコースで学習した知識・技術を全て駆使したロボットのプログラムを完成させます。
この研修では次のスキルが習得できます
- 現在最も広く使われているプロセッサであるx64およびARMをISA(命令セットアーキテクチャー)レベルで理解
- 348Mで学習したx86・brickOSのx64およびARMへの移植を通し、OSの他プロセッサへの移植法
- 状態遷移図およびステート・チャートによるシステム仕様の記述法
- 状態遷移テーブルを用いたC言語による状態遷移図の実装法
- 組み込みシステムの主な駆動法であるControl-Loop型、Event-Triggered型、そして周期タスク型の3つのシステム構成およびそれらの長所・短所の理解
- リアルタイムのスケジューリング理論(レートモノトニックスケジューリング、LiuとLaylandの定理)およびその実装への応用
- プライオリティ逆転問題とそれを防ぐロック・プロトコル(プライオリティ継承、プライオリティ上限プロトコル)の理解
- 以上学習した知識・技術を全て使い、Lego MindStorms® EV3のロボット上に制御・駆動プログラムを実装し実践力を鍛える(EV3のロボット上のOSはbrickOSおよびTOPPERS/HRP2)
コース内容
- brickOSのLinuxプロセスへの移植
- 以下のプラットフォームへの移植例を通して他のプロセッサ・アーキテクチャー、Cコンパイラ生成コード、およびOSの移植法を学ぶ
- 64(64-bit Pentium):レジスタ構成とgcc生成コードの理解、brikoOSのUbuntu、Cygwin64への移植
- ARM:レジスタ構成とgcc生成コードの理解、brickOSのRaspberry Pi、ev3dev(Lego EV3用開発システム)への移植
- 演習用のTippySr(Lego EV3:EV3D4)ロボットの紹介および駆動用サポート・ファンクションの説明とその一部の実装(演習)
- ステートマシンの紹介とC言語による実装法の理解
- TippySrの行動定義のステートマシンによる記述(演習)
- C言語によるTippySr制御部のステートマシンによる実装(演習)
- リアルタイムシステムの構成とリアルタイムスケジューリング理論
- 周期タスク駆動とレートモノトニックスケジューリング
- LuiとLaylandの定理
- 優先度逆転および優先度継承/優先度上限ロック・プロトコル
- TippySr駆動部のリアルタイム実装:brickOS上での周期タスク駆動/レートモノトニックスケジューリングによる実装(演習)
- EV3RT(Lego EV3用のToppers/ASP:ITRONベースのリアルタイムOS)の紹介とEV3RT上でのリアルタイムTippySrの実装(演習)
- リアルタイムTippySrの排他制御の実装に関する説明