TECSとは

TECS(TOPPERS Embedded Component System)は、組込みシステムに適したコンポーネントシステムです。

ここで組込みコンポーネントシステムとは、

  • 組込みソフトウェアをコンポーネントやサブシステムに分割して開発する方法を支援する仕組み
  • 組込みソフトウェアを部品化して再利用性を高める、あるいは部品流通を促進する仕組み
を提供するものです。

TECSは、TOPPERS/ASPカーネルTOPPERS/ATK1のように静的にコンフィグレーションするシステムにマッチするように設計されています。すなわち、コンポーネント(インスタンス化されたコンポーネントをcellと呼びます)の静的な生成と結合を基本としています。静的な生成と結合を基本としたことで、コンポーネント化によるオーバーヘッドが小さく、タスクやセマフォなどのカーネルオブジェクトのように、粒度の小さなものもコンポーネントとして扱うことができます。静的な生成と結合により、実行を開始する前にコンポーネントのメモリレイアウトが決定されたり、初期化に要する時間を短縮できるだけでなく、関数テーブルの要・不要の自動判定やコンポーネント記憶領域の削除などの最適化、インライン実装、ROM化支援などが可能となり、リアルタイムシステムに適したソフトウェアコンポーネントの開発が行えます。また、カーネルオブジェクトの静的APIのコードを自動生成しますから、これらを覚える必要がなくなります。

さらに、C言語のプロトタイプ宣言の曖昧さを排したインタフェース(signature)記述は、コンポーネント間のインタフェースの客観性を高めます。これにより、RPC(Remote Procedure Call)、関数呼び出しのトレースや、mruby ⇒ TECSブリッジなど、コンポーネント間に挿入して使用するコンポーネントの自動生成が可能になります。

軽量Rubyフォーラム ライブラリWGとの協力について

TOPPERSプロジェクト TECS WGは、軽量Rubyフォーラム(外部リンク) ライブラリWGと以下を目的として、相互に協力を行います(2013年3月23日〜) 。

  • 相互に広めあう
  • 両技術を組み合わせて活用する

TECS WG の開発物

TECS仕様として、以下を規定しています(仕様書は簡易パッケージに含まれています)。

  • TECSコンポーネントモデル
  • TECSコンポーネント図
  • TECSコンポーネント記述言語(TECS CDL)
  • TECSコンポーネント実装モデル

また、以下のものを開発しています(開発中非公開のものを含む)。

開発物 概要
TECS ジェネレー
タ個別パッケージ
TECS ジェネレータの個別パッケージ です。
TECSジェネレータは、TECS CDLを解釈し、インタフェース、セルの初期化コードを生成するツールです。
TOPPERS/ASP3 の簡易パッケージに同梱されている TECS ジェネレータに比べ、ATK1, HRP2 に関するプラグイン、OpaqueRPC プラグインも同梱しています。
さらに、TOPPERS/ASP3 に対応する TECSCDE も同梱しています。
TECS リファレンスマニュアル TECS 仕様書が暫定版に留まっていること、TECS CDL の最新機能に追いついていないことなどから、改めて TECS リファレンスマニュアルを作成しました。 こちら から参照できます。
各種カーネルのTECS対応 カーネルオブジェクトをTECS コンポーネント化しています。
  • TOPPERS/ASP3+TECS:TECS 版サンプルも含みます。TOPPERS/ASP3簡易パッケージに含まれています。
  • TOPPERS/ASP+TECS:syslogのコンポーネントも含みます。簡易パッケージに含まれています。
  • TOPPERS/ATK1+TECS:OILファイルを自動生成するプラグインも含みます。
  • TOPPERS/SSP+TECS:TECSはオーバヘッドが小さいため、最小セットカーネルにも適しています。※早期リリース中
  • TOPPERS/HRP2+TECS:コンポーネントのレイアウトによりメモリ保護領域を指定できます。※開発中
ETロボコンプラットフォーム EV3RTをベースとした mruby on EV3RT + TECSプラットフォーム です。
「MINDSTORMS NXT用TOPPERS/ASP+TECSプラットフォームと教育コンテンツ:ETロボコン2013対応版」は、こちらにあります。
各種プラグイン TECSジェネレータの機能拡張を行うためのプラグインです。
  • RPCプラグイン:Remote Procedure Callに必要なマーシャラコンポーネントなどを生成します。RPCの通信形態に応じて、TransparentとOpaque、非SharedとSharedのバリエーションがあります。簡易パッケージの2012年6月12日リリース版に含まれています(サンプル、ドキュメントを除けば、その後のリリースにも含まれています)。
  • MrubyBridgePlugin:mrubyからTECSコンポーネントを操作するためのコンポーネントを自動生成します。
  • TracePlugin:コンポーネント間の関数呼び出しを記録するコンポーネントを自動生成します。簡易パッケージに含まれています。
  • TraceTLVPlugin:コンポーネント間の関数呼び出しを、TLV用ログとして記録するコンポーネントを自動生成します。
TECS GUIエディタ コンポーネント図をGUIで編集し、コンポーネント図からCDLファイルを生成するためのツールです。
TOPPERS/ASP3 に対応する V0.5.1 は、TECS ジェネレータの個別パッケージ に含まれています。
mruby on asp+tecs mruby VMをTECSコンポーネント化したものです。
STM32Primer2 教材 STM32Primer2を使用したTECSの教材です。
ミドルウェアのコンポーネント化
  • TINET:TCP/IPプロトコルスタック ※開発中
  • FatFs for TOPPERS:ファイルシステム ※開発未着手
静的解析ツール コンポーネント間のフロー解析とその結果に基づく見える化、各種最適化を支援するツールです。※早期リリース中
TECS仕様書 TECS 仕様書は、TECS 簡易パッケージ に含まれています。
現在 TECS 仕様書は、最新の TECS CDL に追従していません。TECS リファレンスマニュアル を参照してください。

ダウンロード(TECS個別パッケージ)

TECS ジェネレータの個別パッケージです。
TOPPERS/ASP3 の簡易パッケージに同梱されている TECS ジェネレータに比べ、ATK1, HRP2 に関するプラグイン、OpaqueRPC プラグインも同梱しています。
さらに、TOPPERS/ASP3 に対応する TECSCDE も同梱しています。

TECS 個別パッケージ
パッケージ TECSジェネレータのバージョン リリース日
tecsgen-1.4.0.tgz 1.4.0 2016-11-16
tecsgen-1.3.1.7.tgz 1.3.1.7 2016-05-11

ダウンロード(TECS簡易パッケージ)

TECSの最新リリースの簡易パッケージを配布しています。この簡易パッケージは、TECS 仕様書、TECS 対応 TOPPERS/ASP を含みます。

TECS 簡易パッケージ
パッケージ TECSジェネレータのバージョン リリース日
tecs_package-20120608.tar.gz 1.1.0 2012-06-12
tecs_package-20100604との違い
tecs_package-20100604.tar.gz 1.0.2 2010-06-07
tecs_package-20090728との違い
tecs_package-20090728.tar.gz 1.0.0.6 2009-07-28
tecs_package-20090612との違い
tecs_package-20090612.tar.gz 1.0.0.3 2009-06-12

ETロボコン用のASPカーネルを含むTECSパッケージはこちらにあります。

TECSCDE

TECS コンポーネント図編集ツール TECSCDE V0.5.0 です。機能的に十分でないため V0.5.0 としていますが、既存の cdl ファイルからコンポーネント図をおこしたり、定義済みのセルタイプやシグニチャを利用して組上げ記述を作成するのには有用です。今後機能拡張していきます。

TECSCDE パッケージ
パッケージ サイズ リリース日
tecscde-MinGW-V0.5.0.tgz 39.0MB 2015-06-09

MrubyBridgePlugin パッケージ

MrubyBridgePlugin は mruby から TECS コンポーネントを操作するプログラムを自動生成する TECS ジェネレータのプラグインです。本パッケージには TECS ジェネレータと mruby が含まれています。cygwin や Linux などの環境でビルドして試してみるように構成されています。README-TECS.txt をお読みください。mruby から C を呼び出すプログラムを自動生成する Mruby2CBridgePlugin も同梱しています。

MrubyBridgePlugin パッケージ
パッケージ サイズ リリース日
MrubyBridgePluginPackage-130616.tgz 2.1MB 2013-06-21

mruby on EV3RT + TECS

EV3RTをベースとした mruby on EV3RT+TECS プラットフォームです。mruby (軽量Ruby) で EV3 を操作できます (一通りのセンサ,モータを利用可能)。スタンドアローンで開発する方法と Bluetooth を用いて開発する方法の2つが利用できます。今後,マルチVM機能などを拡張する予定です。動作環境、使用方法は readme.txt を参照してください。詳しくは、下記のドキュメントを参照してください。

  • doc/EV3RT_mruby_API_Reference.pdf
  • doc/mruby_on_ev3rt+tecs_build.pdf
  • doc/mruby_sample.pdf

mruby on ev3rt+tecs
パッケージ サイズ リリース日
mruby-on-ev3rt+tecs_package-beta1.0.1.tar.gz 22.8MB 2016-05-27
mruby-on-ev3rt+tecs_package-beta1.0.0.tar.gz 22.8MB 2016-05-11
mruby-on-ev3rt+tecs_package-alpha1.0.2.tar.gz 17.9MB 2015-07-12
mruby-on-ev3rt+tecs_package-alpha1.0.1.tar.gz 23.8MB 2015-06-17
mruby-on-ev3rt+tecs_package-alpha1.0.0.tar.gz 23.9MB 2015-06-09

mruby on asp+tecs

mruby on asp+tecsの簡易パッケージです。tecs_package-20120608.tar.gzにmrubyのサンプルプログラムを付け加えた構成になっています。サンプルのコンパイル・実行方法は、doc/Readme.txtをお読みください。

mruby on asp+tecs
パッケージ サイズ リリース日
mruby-on-asp+tecs_package-130618.tar.gz 6.4MB 2013-06-21

ダウンロード(ATK1+TECS)

TOPPERS/ATK1(Automotive Kernel)に対応した個別パッケージです。 TOPPERS/ATK1 OAKS16-mini版の基本構成に、TECSコンポーネント化した旧ATK1のサンプルプログラムとシステムライブラリに換装した構成となっています。TECSジェネレータの実行により、OSEK仕様に基づいた関数スケルトン出力と、OILファイルの自動生成に対応しているのが特徴です。

ルネサスエレクトロニクスの統合開発環境 TM V.3.20A、同社製コンパイラ NC30WA(V.5.45 Release01)の環境にてご利用になれます。

ATK1+TECS 簡易パッケージ
パッケージ バージョン リリース日
atk1+tecs_1.0.0.zip 1.0.0 2012-11-14

TECS 教材(STM32 Primer2 を用いてTECS を学ぶ)

この教育教材は、TECSの基礎を理解すると共に、STM32Primer2を使用して、 TECSを用いたプログラム作成の実習を行うためのものです。 この教材パッケージには、実習に用いるプログラムのソースコードに加えて、 組込みソフトウェアの基礎から、実習環境の構築方法、TECSを用いた基礎的な プログラミングから応用的なプログラミングまで(最終的にMP3プレイヤを作成する) をカバーするプレゼン資料が含まれています。

TECS 教材
パッケージ サイズ リリース日
stm32primer2_tecs_edu-20101129.tar.gz 14MB 2010-12-01

雑誌・記事

  • Interface 2011年9月号、「TOPPERSの組み込みコンポーネントをCortex-M3基板に実装 STM32 Primer2を 用いてTECSを理解する」金承燁
  • Interface 2011年7月号、「コンポーネントで組み上げる MINDSTORMS NXT用プラットホームTOPPERS/ASP+TECSを使いこなす」安積卓也、石川拓也
  • 組込みプレス Vol 15. (2009年)、「OSS の組込みコンポーネントシステム TECS を使ってみよう」大山博司、安積卓也

論文紹介

外部リンク