Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

【第4回】コンポーネントの実装コード

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/02/05 12:00

 今回は、TECSジェネレータの働きと、コンポーネント記述言語TECS CDLで定義されたコンポーネントの振舞いを記述するセルタイプコードの実装について説明します。

目次

TECSのリリース

 もし、すでにTECSが皆さんに使っていただける状態であれば、恐らくこのあたりをもっと早めに説明したことでしょう。しかし、残念ながら、まだ使っていただける状況にありません。でも、皆さんに使っていただけるようになるのは、もうそんなに遠い先ではありません。

 ここでTECSのリリースについて、少し説明します。2008年6月に開催されたTOPPERSカンファレンスに合わせて、TECSをTOPPERSプロジェクトの会員に向けてリリースしました。そして、ようやく一般公開へ向けてのスケジュールが見えてきました。

 2009年の春(遅くとも5月のESECまで)には一般公開する予定です。

 また、TECSのホームページを開設しました。まだ、TECSを一般公開していないため、会員以外の方はトップページ以外ほとんどアクセスできませんが、これまでに発表した論文などの一覧を掲載していますので、参考にしていただけると幸いです。

TECSジェネレータ

 さて、コンポーネントの実装コードについて説明する前に、TECSジェネレータ(以下単にジェネレータと記す)について説明します。

 本連載の第2回で、TECSによる開発の流れについて説明しましたが、ジェネレータは、前回説明したコンポーネント記述言語TECS CDLによって記述されたコンポーネント記述を入力として、実装コードの一部となるC言語のヘッダやインタフェースコードを生成します。

 ジェネレータの役割は、いくつかありますが、大きなところは以下のものです。

  • セル間の結合コードの生成
  • セル本体(セルCB)の生成
  • セルタイプコードのテンプレートの生成

 さらにMakefileも生成されます。IDEを使う場合にはあまり役に立ちませんが、Makefileのテンプレート、依存関係を示すMakefile.depend、TECSのセルタイプコードなどのファイルの一覧を記すMakefile.tecsgenが生成されます。

 以前に述べたようにTECSでは、C言語記述を基本としています。

 しかし、普通C言語ではバインディングが固定されていて、コーディング時に呼出す関数が決定されてしまい、TECSにおける組上げ記述のように、後から関数の呼出し先を変更する手段がありません。

 ジェネレータは、そのようなC言語の特性をカバーして、組上げ記述に基き、呼出し先を変更します。そのやり方は、やはりC言語に欠けているものを補いますので、マクロ定義を多用します。

 経験されていることと思いますが、マクロはソースコードデバッガとの親和性は、必ずしもよくありません。その点は、現状のTECSで、不満の残るところかもしれません。

 コンポーネントシステムは、どちらかというとオブジェクト指向の要素を多く含んでいることもあり、オブジェクト指向言語であるC++を使ったほうがよりスマートに実装できる可能性があります。しかしながら、組込みシステム開発でもっとも用いられている言語がCであることを考えると、Cで実装できたほうが受け入れやすいと考えられます。そのようなことを考慮してC言語による記述を基本としています。

 ジェネレータについては、TECSとしてすべての仕様を規定するのではなく、リファレンス実装を提供するのにとどめています。よりよい実装を妨げないようにすることと、ハンドコーディングされるセルタイプコードを除けば、実装により異なることがあってもユーザーの不利益にはならないことによります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 大山 博司(おおやま ひろし)

    TOPPERSプロジェクト コンポーネント仕様ワーキンググループ主査 オークマ株式会社 FA システム本部 主管技師 オークマ株式会社(当時は大隈鉄工所)に入社以来、数値制御装置の制御ソフトウェア開発に従事する。 博士(工学)

バックナンバー

連載:組込みコンポーネントシステムTECS
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5