mindstorms nxt用...

31
2012/06/02 TOPPERSプロジェクト認定 1 1. MINDSTORMS NXT用 TOPPERSプラットフォーム の概要 大山 博司 TOPPERS プロジェクト TECS WG 主査 ®LEGO, the LEGO logo, MINDSTORMS and the MINDSTROMS logo are trademarks of the LEGO Group.

Upload: takuya-azumi

Post on 13-Jul-2015

3.630 views

Category:

Software


5 download

TRANSCRIPT

2012/06/02 TOPPERSプロジェクト認定 1

1. MINDSTORMS NXT用 TOPPERSプラットフォーム の概要

大山 博司

TOPPERS プロジェクト TECS WG 主査

®LEGO, the LEGO logo, MINDSTORMS and the MINDSTROMS logo are trademarks of the LEGO Group.

2012/06/02 TOPPERSプロジェクト認定 2

アジェンダ

• NXTソフトウェアプラットフォームの歴史

• MINDSTORMS NXT用TOPPERSプラットフォーム

• MINDSTORMS NXT用 TOPPERS/ASP+TECSプラットフォームの概要

– 基本構造

– メモリマップとアップロード方法

– ツールチェーン

– NXT用ASP+TECSプラットフォームのコンポーネント

• モデルからTECSへの変換

2012/06/02 TOPPERSプロジェクト認定 3

NXTソフトウェアプラットフォームの歴史

TOPPERS/JSP

MINDSTORMS NXT用 TOPPERSプラットフォーム

NXT Platform on ASP+TECS

NXT Platform on JSP nxtOSEK/JSP

leJOS NXT

TOPPERS/ASP

TOPPERS/ATK1

NXTソフトウェアプラットフォーム

TOPPERS提供RTOS

2012/06/02 TOPPERSプロジェクト認定 4

MINDSTORMS NXT用TOPPERSプラットフォーム

ベース 正式名称 略称

TOPPERS/JSP

MINDSTORMS NXT用 TOPPERS/JSPプラットフォーム

NXT用JSP プラットフォーム

MINDSTORMS NXT Platform based on TOPPERS/JSP

NXT Platform on JSP

TOPPERS/ASP+TECS

MINDSTORMS NXT用 TOPPERS/ASP+TECSプラットフォーム

NXT用ASP+TECS プラットフォーム

MINDSTORMS NXT Platform based on TOPPERS/ASP+TECS

NXT Platform on ASP+TECS

これらを総称して「MINDSTORMS NXT用 TOPPERSプラットフォーム」と呼ぶ

2012/06/02

TECS Library (tecs_lib)

TOPPERSプロジェクト認定 5

NXT用ASP+TECSプラットフォームの基本構造

走行体(サンプル)プログラム

TOPPERS ASP+TECS

デバイスドライバ

Balancer Library

NXTソフトウェアプラットフォーム

走行体ハードウェア (MINDSTORMS NXT)

2012/06/02

NXT BIOSと拡張NXTファームウェア

• NXT用ASP+TECSプラットフォームは、 拡張NXTファームウェアとNXT BIOSの 両方に対応している

• 切り替えは、target_lib_inst.cdl 内で行う

– 拡張NXTファームウェアを使用する場合には、 ram_only.cdlをimportする

– NXT BIOSを使用する場合には、 ram+rom.cdlをimportする

TOPPERSプロジェクト認定 6

tecs_package¥asp+tecs¥tecs_lib¥mindstorms_nxt¥target_lib_inst.cdl

2012/06/02 TOPPERSプロジェクト認定 7

拡張NXTファームウェア使用時のメモリマップ

100000h

200000h

SRAM(64Kbyte)

Flash(256Kbyte)

拡張NXTファームウェア

ASP+TECアプリケーション

参考: http://lejos-osek.sourceforge.net/nxtOSEK_hack.htm#MemoryLayout

2012/06/02 TOPPERSプロジェクト認定 8

NXT BIOS使用時のメモリマップ

100000h

200000h

SRAM(64Kbyte)

Flash(256Kbyte)

NXT BIOS(32KBytes)

ASP+TECアプリケーション で使用するRAM領域

参考: http://lejos-osek.sourceforge.net/nxtOSEK_hack.htm#MemoryLayout

108000h

ASP+TECアプリケーション

2012/06/02 TOPPERSプロジェクト認定 9

NXT用ASP+TECSプラットフォームのツールチェーン

ソースコード

(.c, .hファイルなど)

TECS ジェネレータ (tecsgen)

GNU ARM

ツールチェーン

ソースコード

(.c, .hファイルなど)

ファイル

ツール

データの流れ

ソースコード

(.c .hファイルなど)

実行形式 メモリマップ

ファイル等

RTOS, ライブラリ

(.c .hファイルなど) 設定ファイル

(リンカスクリプト等)

アプリケーションの

コンポーネント記述

(*.cdl)

コンフィギュレーション

ファイル(*.cfg)

コンフィギュレータ

(Cfg.exe)

ビルドツール (make)

Makefile

制御の流れ

開発者の操作

TECSプラットフォームの

コンポーネント記述

(*.cdl)

2012/06/02 TOPPERSプロジェクト認定 10

ビルド方法

• nxtOSEK、NXT用TOPPERSプラットフォーム ともに「1リンクモデル」を採用しています。

– 用意されたMakefileで簡単に実現できます

• ASP+TECS環境と他の環境との違いは、TECSで定義されている文法に沿った「コンポーネント記述」を行うことができる点です。

– コンポーネントの自作も、提供されているコンポーネントの利用も可能です

• ビルドでは、以下の3つを実行します

– make tecs

– make depend

– make

2012/06/02 TOPPERSプロジェクト認定 11

インストールするツール

ビルド用ツール Cygwin 最新版をインストールすればOKです。

インストールするパッケージの選択は、ほとんどデフォルトでOKです。ただし以下は必須です。

GNU Make 3.81 (nxtOSEKでも使用)

Perl 5.10.0

BINUTILS

GCCまたはGCC-CORE

GNUARM nxtOSEKやJSPでも使用する、GCC-4.0.2 ツールチェイン (bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4.exe)をインストールします

TOPPERS ASP+TECS開発環境

以下のツールが必要です。配布パッケージに同梱されています。

コンフィギュレータ … cfg.exe 1.7.0

TECSジェネレータ … tecsgen.exe 1.0.2.35

ロード用ツール LEGO MINDSTORMS NXT Driver

nxtOSEKやJSPでも使用するツール群をそのまま使用します。したがって、インストール方法も他の環境と変わりはありません。

NeXTTool

Appflash.exe

2012/06/02

TECSの開発動機

• 複雑な組込みシステムに適したコンポーネントシステムが必要である

– コンポーネントシステムにより複数の問題の同時解決が期待できる

– ソフトウェアの見える化

– ソフトウェア部品の流通

– RPCフレームワーク

• 汎用OS用のコンポーネントシステムは普及しているが、組込みシステムようのものは普及していない

– しかし、汎用OS用の組込みシステムでは過剰である

12 TOPPERSプロジェクト認定

2012/06/02

基本コンポーネントモデル

TECSコンポーネントは最小限の機能を持つ

関数呼び出しを行うポート(口)のみを持つ

コンポーネントを組み合わせてプログラムを作成する

TOPPERSプロジェクト認定

cell はコンポーネントのインスタンス cell はattribute.と呼ばれる定数を持つ cell は var (internal variable)と呼ばれる変数を持つ cell はentry port (受け口) を通して機能を提供する cell はcall port. (呼び口) を通して機能を利用する 関数の集合を signature と呼ぶ cell は celltype.に属する celltype は属するcellの特性を決定する

TECS コンポーネント図

TECS コンポーネントモデル (基本モデル)

13

2012/06/02

鍵となる特性

コンポーネント(cell) は静的に配置(生成)され、結合される

静的だが柔軟である リンケージの決定による(次のスライド)

小さなオーバーヘッド

ソースコードからビルドする define (マクロ) によってリンケージを解決する

コンポーネントはソースコードでの流通となる(バイナリ形式は別途)

オーバーヘッドの最小化は最適化による

振舞いはC言語により記述

オブジェクト指向プログラミング(言語)は不要

14 TOPPERSプロジェクト認定

2012/06/02

リンケージの決定

通常のC言語の場合

リンケージはプログラムの記述時に決定される 呼び元の関数は、どの関数を呼び出すかを決定する

TECSコンポーネントの場合

リンケージは、コンポーネントを用いてソフトウェアを組上げる段階で決定される

TECS コンポーネント記述言語(TECS CDL)により組上げを記述する

リンケージはC言語のプログラム記述時には決定されない

TECSジェネレータの生成するマクロによりリンケージが変えられる

15 TOPPERSプロジェクト認定

2012/06/02

リンケージの決定 (2)

もしコンポーネント間の関係が単純ならば、呼び口関数は、直接受け口関数に結合される

もしコンポーネント間の関係が複雑ならば、vtable(関数テーブル)が使用され、実行時に結合が決定される

16 TOPPERSプロジェクト認定

2012/06/02

TECS 仕様

TECS コンポーネントモデル

TECS コンポーネント図

TECS コンポーネント記述言語 (TECS CDL)

TECS コンポーネント実装モデル

これらは TECS WG により策定作業が行われている

17 TOPPERSプロジェクト認定

2012/06/02

TECS の実装

TECS ジェネレータ

TECS CDL からインタフェースコードとcell を定義するコード(C言語)を生成する

プラグインを適用する RPC プラグイン, Trace プラグイン, etc

TOPPERS/ASP+TECS

RTOS のカーネルオブジェクトを TECS のセルタイプとして定義したもの

これらの実装は TECS WG により行われている

18 TOPPERSプロジェクト認定

2012/06/02

その他の鍵となる特性

コンポーネントシステムの下に隠さない

メモリアロケーター

RPC チャンネル

RTOS カーネルオブジェクト

小さな組込みシステムにも向く

Inline関数実装

ROM化コード

19 TOPPERSプロジェクト認定

2012/06/02

メモリアロケータ

• 呼び元の cell がアロケートし 呼び先の cell が解放 (send)

• 呼び先の cell がアロケートし 呼び元の cell が解放

(receive)

tClient Client

tServer Server

tAllocator Allocator

20 TOPPERSプロジェクト認定

2012/06/02

RPC: Remote Procedure Call

tClient Client

tServer Server

tClient Client

tServer Server

tRPCChannel RPCChannel

tRPCChannel RPCChannel

tMarshaller Marshaller

tClientchannel ClientChannel

tServerChannel ServerChannel

tUnmarshaller Unmarshaller

tTask Task

RPC channel は下図のようなコンポーネント

RPC プラグインにより挿入

21

このチャンネルのコンポーネント図は、正確ではありません。TDRセルが省略されているなど

TOPPERSプロジェクト認定

2012/06/02

カーネルオブジェクト

オーバーヘッドが小さいため、カーネルオブジェクトのような小さな粒度のものもコンポーネントとして扱える

セマフォがどのタスクに共有されているか可視化されている

22 TOPPERSプロジェクト認定

2012/06/02

メッセージ

• TECS コンポーネントにメッセージを扱うポートはない

• 以下のようにコンポーネントを割り込ませることで実現する

• オーバーヘッドが小さいためコンポーネントとして扱える

23 TOPPERSプロジェクト認定

2012/06/02

コンポーネント記述の3要素

TOPPERSプロジェクト認定 24

要素名 記述方法 内容

シグニチャ signature s*** セルタイプが提供する外部インターフェースを定義する。Javaでいうインターフェースに該当。

セルタイプ celltype t*** C++やJavaでいうクラス定義に該当。 シグニチャを利用して呼び口、受け口を定義する他、属性(attribute)も定義する。

セル cell t*** セル名 概念的にはインスタンス。ただしTECSのセルの記述においては、セル間の結合を記述する。これはC++やJavaで「コンストラクタ」にて行う、インスタンス間の結合処理に該当。この記述に基づいて「静的に」コンポーネント間の結合を実現するCソースコードが生成される。

以上の3要素を、Component Description Language(CDL)を用いて記述します。

2012/06/02

競技に使用するハードウェア構成

TOPPERSプロジェクト認定 25

超音波センサ

USBコネクタ

ディスプレイ

右DCモータ 右ロータリーエンコーダ

左DCモータ 左ロータリーエンコーダ

光センサ

タッチセンサ ジャイロセンサ

2012/06/02

ハードウェア内部構成

TOPPERSプロジェクト認定 26

• ハードウェア構成のイメージ図

Bluetooth

LCDディスプレイ

サウンド

ボタン

バッテリセンサ

メインプロセッサ

コプロセッサ

センサポート

モータポート

USART1SPI

SSCTWI PIOA

I2C

2012/06/02 TOPPERSプロジェクト認定 27

NXT用ASP+TECSプラットフォームのコンポーネント

2012/06/02

カーネルに関するコンポーネント

TOPPERSプロジェクト認定 28

Task

kernel.cdl

ISR

CyclicHandler

AlarmHandler

Semaphore

InitializeRoutine TerminateRoutine

ConfigInterrupt

CyclicTaskActivator CyclicTask

Eventflag Dataqueue Priority

Dataqueue

FixedSizeMemoryPool

Kernel

ISRWithConfigInterrupt

2012/06/02

TECSのカバー範囲

TOPPERSプロジェクト認定 29

QAC デバッガ

UML

• TECSがカバーできる設計領域の範囲

分析

実装

デバッグ

検証

※Cやアセンブラが実装のほとんどすべてをカバーできるのに対し、他はすべてをカバーするものではない

C アセンブラ TECS

UMLは Object Management Group Inc.の,QAC はProgramming Research社の商標または登録商標です

2012/06/02 TOPPERSプロジェクト認定 30

モデルから TECS への変換

• クラス図もしくはオブジェクト図などの構造モデルから、TECSコンポーネントとして実装するコンポーネントを抽出する

• 抽出した各コンポーネントをCDLを用いてプログラミングする

– シグニチャを、クラス図のメソッド定義を元に記述する

– セルタイプを、クラス図のクラス定義や関連を元に、前述のシグニチャ定義を利用して記述する • 自作コンポーネントにて、NXT用ASP+TECSプラットフォームのコンポーネントを利用する際には、使用するコンポーネントのセルタイプ記述を含む.cdlファイルをimportする

– セルを、オブジェクト図を元に記述する • オブジェクト間の結合を元に組上げ記述を行う

• Tecsgenを用いてCソーステンプレートを自動生成後、エディタ等で中身を記述し「セルタイプコード」を完成させる

詳しくは2~4章にて

2012/06/02 TOPPERSプロジェクト認定 31

著者リスト

• MINDSTORMS NXT用 TOPPERSプラットフォーム の概要

• 森 孝夫

• 大山 博司(オークマ株式会社,TOPPERSプロ

ジェクト TECS WG主査)