第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
© Copyright 2024 Paperzz