mindstorms nxt用...
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プロジェクト認定 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章にて