説明スライド(PDF - 名古屋大学 大学院情報科学研究科 附属組込み

第2回組込みシステム研究センター
シンポジウム
2010/9/16
TECS:組込み向けの
コンポーネントシステム
森 孝夫
名古屋大学 大学院情報科学研究科
附属組込みシステム研究センター
1
アジェンダ
• コンポーネントベース開発
• TECSの概要
• TECSを知る・試してみる
• まとめ
2
コンポーネントベース開発
(Component-based development)
3
コンポーネントベース開発とは?
• コンポーネントベース開発とは?
• 電気や機械の世界と同様、用意されたコンポーネントを
組み合わせてソフトウェアを構築しようという思想を
ベースとした開発方法
• コンポーネントシステムに支えられる面が大きい
• Windows COM, DCOM, .NET Framework
• CORBA, CCM(CORBA Component Model)
• Java Beans, EJB(Enterprise JavaBeans)
• コンポーネントとは
• ソフトウェアのアルゴリズムやデータ構造を隠蔽し、
定義されたインターフェースを介して
外部のコンポーネントと通信しながら動作するソフトウェア部品
• 上記のような基本的な定義は同じだが、
詳細はコンポーネントシステムによって異なる
4
組込み向けコンポーネントシステムの必要性
• 規模増大、複雑化に伴い、組込みでもコンポーネントベー
スで開発を進めたい、という要求が発生
• モデルによる分析・設計を「お絵かき」で終わらせず、シ
ームレスに実装につなげたい、という「欲求」もある
• 汎用システム向けのコンポーネントシステムでは不十分な
面がある
• コンポーネント間の結合を動的に行うため、オーバヘッ
ドが大きい
• オブジェクト指向言語での記述を前提としている
• 特定のプラットフォーム上での動作が前提となっており
、組込みシステム分野で使われている多様なプラットフ
ォーム(例えば、ネットワークにCANを用いた環境)に対
応できない
5
TECS以外の組込みコンポーネントシステムの事例
• PBO(Port-Based Object)
•
•
•
•
センサを使用したロボットの制御向けのコンポーネントシステム
ChimeraリアルタイムOSの上で動作
動的にコントローラを変更することが可能が
動的結合を採用しているため、オーバヘッドが大きい
• Koala
• 電化製品向けのコンポーネントとシステム
• スイッチという機構を取り入れ、最後段階で2つのコンポーネントのうちどちらと結合するかを選
択できる
• AUTOSAR
• 車載制御向けのコンポーネントシステム
• RTE(Run-Time Environment)上でコンポーネント配置
• 同一ECUにあるか、異なったECU上にあるかを意識せずにコンポーネントを配置でき、コンポー
ネントの再利用性を高めることができる
• SaveCCT
•
•
•
•
車載制御向けのコンポーネントシステム
各コンポーネント入力から出力まで、実行時間を測定
測定情報を使用、スケジュール可能
特定ハードウェアが必要
6
TECSの概要
7
TECSとは
• TOPPERS Embedded Component Systemの略字
• 組込みシステム特有の制約を考慮した
コンポーネントシステム
• 静的なコンポーネントモデル
• 静的にインスタンス化・結合することで、
メモリ(特にRAM)を節約し、オーバーヘッドを解消
• システムの最下層の要素もコンポーネントとして扱える
• 特定プラットフォームに依存することなく、コンポーネ
ントベース開発が可能
• マルチコアプロセッサシステム/分散システムにおける
遠隔呼出し(RPC:Remote Procedure Call)にも対応
8
TECSの設計領域の範囲
• 分析・設計の終わりの段階から、実装、検証の工程に用い
ることが可能
実装
テスト
TECS
コンポーネント図
UML
分析、設計
C
QAC
アセンブラ
デバッガ
TECS
TECS CDLの記述
より実装
トレース
プラグイン
9
TECS開発の歴史
2004年 1月
2006年 3月
2006年10月
2007年12月
2008年 6月
2008年11月
2009年 5月
2010年 6月
コンポーネント仕様 WG 開始
TECSと命名(方向性がほぼ固まる)
セキュリティコンポーネントIPA未踏
に採択
組込みZINE連載開始(現CodeZine)
会員向けリリース開始
キャッツとヴィッツがサポートを表明
一般向けリリース開始
組込みプレスに記事を掲載
RPCを会員向けリリース開始
10
TECSコンポーネントモデルの基礎
基本的なコンポーネントモデル
セル:セルタイプ
セル:セルタイプ
呼び口
受け口
結合
セルは
• セルタイプに属する
• 呼び口、受け口を持つ
• 属性、内部変数を持つ (図示しない)
• インスタンス毎に名前が付けられる
セルを結合してソフトウェアを
完成させることを組上げと呼ぶ
11
セル記述のための3要素
要素名
記述方法
内容
シグニチャ
signature s***
セルタイプが提供する外部インターフェースを
定義する。Javaでいうインターフェースに該当。
セルタイプ
celltype t***
C++やJavaでいうクラス定義に該当。
シグニチャを利用して呼び口、受け口を定義す
る他、属性(attribute)も定義する。
セル
cell t*** セル名
概念的にはインスタンス。ただしTECSのセル
の記述においては、セル間の結合を記述する。
これはC++やJavaで「コンストラクタ」にて行う、
インスタンス間の結合処理に該当。この記述に
基づいて「静的に」コンポーネント間の結合を
実現するCソースコードが生成される。
以上の3要素を、Component Description
Language(CDL)を用いて記述します。
12
シグニチャ
セル間のインタフェース定義
• TECS CDL 表現
• 関数頭部を列挙
• 一連の機能をまとめて記述する
• シグニチャの名前には接頭文字 s を付加
signature sTask {
ER
activate(void);
ER_UINT
cancelActivate(void);
ER
terminate(void);
ER
changePriority([in] PRI priority);
ER
getPriority([out] PRI *p_priority);
ER
refer([out] T_RTSK *pk_task_status);
… 中略
};
• []内を取り除くと、正当なC言語の文法になる
13
関数とデータ型(1)
• 引数の入出力方向の指定
• in …関数への入力
• out … 関数からの出力
• inout … 関数の入力/出力
例
ER
ER
changePriority([in] PRI priority);
getPriority([out] PRI *p_priority);
他にも以下の指定が可能
• 他コンポーネントに対する入出力方向の指定
• アロケータの使用を表す send, receiveがある
• ポインタ引数に関する指定
• size_is, count_is, string により配列であることを明示する
14
関数とデータ型(2)
• TOPPERS/ASPの型との親和性を重視
• 推奨する基本型(サイズが明瞭)
char_t, bool_t … この2つの型は RPC でのみサイズ明瞭(8bit)
int8_t, int16_t, int32_t, int64_t, int128_t
uint8_t,uint16_t,uint32_t, uint64_t, uint128_t
float32_t, double64_t
• 推奨しない型(サイズが不明瞭)
char,
float,
int,
long, short,
double, long double
int_t
• Cヘッダで定義される型(typedef,struct)の取り込み
import_C( “mytypes.h” );
• 引数以外にも属性、内部変数、定数の型も同様
15
セルタイプ
セルの型式のTECS CDLによる表現
• セルタイプのTECS CDL 表現
• セルの持つ受け口、呼び口、属性、内部変数を指定する
• この他にリクワイア、ファクトリを指定できる
• ファクトリ:静的APIの記述手段
• リクワイア:セルタイプに共通な結合の指定
• セルタイプの名前には接頭文字 t を付加する
例
[active] celltype tTask {
[inline] entry sTask eTask;
/* 受け口:タスク操作 */
call sTaskBody cBody; /* 呼び口:タスク本体 */
attr{
ID
id = C_EXP("TSKID_$id$");
[omit] ATR
taskAttribute = C_EXP("TA_NULL");
[omit] PRI
priority;
[omit] SIZE
stackSize;
… 一部省略
};
active … 後述
};
inline … インライン関数として実装することを指定
omit … CBに含めないことの指定 (factoryで利用)
16
セルタイプ
属性と内部変数
セルごとの初期値指定
実行時の値変更
属性
内部変数¶
可
不可
不可(ただし、属性を参照可)
可
¶内部変数を単に「変数」と呼ぶことがあります
celltype tAlarmCounter {
attr {
// 属性
int32_t
initialCount = 0;
int32_t
thresholdCount; <<< セルで必ず
初期値指定必要
};
var {
// 内部変数
int32_t
count = initial_count;
};
// 呼び口、受け口の記述は省略
};
17
セルの定義と結合
tCountInput
CountInput
tAlertCounter
eCounter AlertCounter
sUpDownCounter
sAlert
cAlert
tBuzzer
Buzzer
• セルを定義する際に、他のセルとの結合を指定する点に特徴がある
• セルを結合してアプリケーションを完成させることを組上げと言う
例
// AlertCounter セル
cell tAlertCounter AlertCounter {
cAlert = Buzzer.eAlert; /* 呼び口の結合 */
initialCount = 0; /* 初期値 */
alertCount = 5; /*警告を発するカウント */
};
// CountInput, Buzzer のセル定義は省略
18
開発の流れ
• (1)TECSコンポーネント図でソフトウェ
ア構造を表現する
• TECS CDLを用いて、部品の型である
(3)セルタイプを記述する
• セルタイプを定義する前に(2)シグニ
チャを記述しておく必要がある
• 必要な部品の型が揃ったら(4)組上げ
記述を行う
• (2),(3),(4)を(6)TECS ジェネレータに
通す.そうすると、(10)インタフェース
コード、(9)ヘッダファイル、(8)セルタイプ
コードのテンプレートが生成される
• セルタイプコードのテンプレートを元に、
セルタイプコード(C言語)を記述する
• インタフェースコードとセルタイプコード
を、コンパイルし、リンクすることでアプ
リケーションモジュールが完成する
19
TECSを知る・試してみる
20
ハードウェアなしで試す
• TOPPERSホームページより、実ハードウェアがなくとも
お試し頂ける、ASP+TECS環境と
チュートリアルテキストを公開しています
• http://www.toppers.jp/tecs.html
• http://www.toppers.jp/download.cgi/tecs_package20100604.tar.gz
21
ETロボコンで試す
• MINDSTORMS NXT用TOPPERS/ASP+TECSプラットフォ
ームは、ETロボコン2010の認定プラットフォームのひとつ
です。
• 環境のダウンロード先はこちらです。
• http://www.toppers.jp/etrobo-asp.html
• http://www.toppers.jp/download.cgi/et-roboconasp+tecs-20100721.tar.gz
• チュートリアルテキストのダウンロード先はこちらです。
• http://www.toppers.jp/download.cgi/et-roboconasp+tecs-seminar-20100615.tar.gz
22
STM32 Primer2で試す
• 現在はTOPPERS会員限定ですが、
STM32 Primer2ボード上でTECSを用いたプログラミングを
行う教材を公開しています。
• 環境のダウンロード先はこちらです。
(演習テキストも含まれています。)
• http://www.toppers.jp/members.html
• https://www.toppers.jp/MEMBERS/early/po/stm32prime
r2_tecs_edu-20100616.zip
• 以下のような特徴があります
• 安価なプラットフォーム
• LED の点滅からミュージックプレイヤーまで
段階的な開発を体験できる
• 組込みコンポーネント開発の利点を理解できる
23
研究・開発予定
• 2010年度は、以下の研究開発を実施する予定です
• OpaqueRPC の開発と公式リリース
• STM32Primer2教材の、RPC機能に関する内容追加
• 各種検証機能の開発
• 各種関連ドキュメントや記事を公開していく予定です
• 論文、関連ドキュメントに関しては、
詳しくはTOPPERSホームページを参照して下さい
• http://www.toppers.jp/tecs.html
24
まとめ
• 組込みソフトウェア開発向けのコンポーネントシステムで
あるTECSを紹介した
• ツールセット、解説ドキュメントも含めて、
簡単に試すことのできる環境をオープンに提供
• 2010年度は、RPCの拡張と教材開発を中心に
研究開発を進めていく
25
引用・参考文献
• 組込みコンポーネントシステムTECS 仕様書(V1.0.1.2)
• コンピュータ ソフトウェア Vol. 26 (2009),No. 4
~組込みシステムに適したコンポーネントシステムの実現と評価~, 安積
• ET2009 カンファレンスの発表資料
~組込みコンポーネントシステムTECSの概要~, 大山
• TECS開発技術の基礎
~組込みシステムソフトウェア~,DCI
• NEP公開講座「TECSを用いたコンポーネントベース開発
入門」テキスト
26