Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)

Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)

  • Login to see the comments

  • Be the first to like this

Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)

  1. 1. 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.
  2. 2. 2012/06/02 TOPPERSプロジェクト認定 2 アジェンダ • NXTソフトウェアプラットフォームの歴史 • MINDSTORMS NXT用TOPPERSプラットフォーム • MINDSTORMS NXT用 TOPPERS/ASP+TECSプラットフォームの概要 – 基本構造 – メモリマップとアップロード方法 – ツールチェーン – NXT用ASP+TECSプラットフォームのコンポーネ ント • モデルからTECSへの変換
  3. 3. 2012/06/02 TOPPERSプロジェクト認定 3 NXTソフトウェアプラットフォームの歴史 TOPPERS/JSP MINDSTORMS NXT用 TOPPERSプラットフォーム NXT Platform on ASP+TECS NXT Platform on JSPnxtOSEK/JSP leJOS NXT TOPPERS/ASP TOPPERS/ATK1 NXTソフトウェアプラットフォーム TOPPERS提供RTOS
  4. 4. 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+TEC S MINDSTORMS NXT用 TOPPERS/ASP+TECSプラッ トフォーム NXT用ASP+TECS プラットフォーム MINDSTORMS NXT Platform based on TOPPERS/ASP+TECS NXT Platform on ASP+TECS これらを総称して「MINDSTORMS NXT用 TOPPERSプラットフォーム」と呼ぶ
  5. 5. 2012/06/02 TECS Library (tecs_lib) TOPPERSプロジェクト認定 5 NXT用ASP+TECSプラットフォームの基本構造 走行体(サンプル)プログラム TOPPERS ASP+TECS デバイスドライバ Balancer Library NXTソフトウェアプラットフォーム 走行体ハードウェア (MINDSTORMS NXT)
  6. 6. 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
  7. 7. 2012/06/02 TOPPERSプロジェクト認定 7 拡張NXTファームウェア使用時のメモリマップ 100000h 200000h SRAM(64Kbyte) Flash(256Kbyte) 拡張NXTファームウェア ASP+TECアプリケーション 参考: http://lejos-osek.sourceforge.net/nxtOSEK_hack.htm#MemoryLayout
  8. 8. 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アプリケーション
  9. 9. 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)
  10. 10. 2012/06/02 TOPPERSプロジェクト認定 10 ビルド方法 • nxtOSEK、NXT用TOPPERSプラットフォーム ともに「1リンクモデル」を採用しています。 – 用意されたMakefileで簡単に実現できます • ASP+TECS環境と他の環境との違いは、TECSで定 義されている文法に沿った「コンポーネント記述」 を行うことができる点です。 – コンポーネントの自作も、提供されているコン ポーネントの利用も可能です • ビルドでは、以下の3つを実行します – make tecs – make depend – make
  11. 11. 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
  12. 12. 2012/06/02 TECSの開発動機 • 複雑な組込みシステムに適したコンポーネントシス テムが必要である – コンポーネントシステムにより複数の問題の同時 解決が期待できる – ソフトウェアの見える化 – ソフトウェア部品の流通 – RPCフレームワーク • 汎用OS用のコンポーネントシステムは普及している が、組込みシステムようのものは普及していない – しかし、汎用OS用の組込みシステムでは過剰であ る 12 TOPPERSプロジェクト認定
  13. 13. 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
  14. 14. 2012/06/02 鍵となる特性  コンポーネント(cell) は静的に配置(生成)され、結合さ れる  静的だが柔軟である  リンケージの決定による(次のスライド)  小さなオーバーヘッド  ソースコードからビルドする  define (マクロ) によってリンケージを解決する  コンポーネントはソースコードでの流通となる(バイナリ形式は別 途)  オーバーヘッドの最小化は最適化による  振舞いはC言語により記述  オブジェクト指向プログラミング(言語)は不要 14 TOPPERSプロジェクト認定
  15. 15. 2012/06/02 リンケージの決定  通常のC言語の場合  リンケージはプログラムの記述時に決定される  呼び元の関数は、どの関数を呼び出すかを決定する  TECSコンポーネントの場合  リンケージは、コンポーネントを用いてソフトウ ェアを組上げる段階で決定される  TECS コンポーネント記述言語(TECS CDL)により組上げを記 述する  リンケージはC言語のプログラム記述時には決定されない  TECSジェネレータの生成するマクロによりリンケージが 変えられる 15 TOPPERSプロジェクト認定
  16. 16. 2012/06/02 リンケージの決定 (2)  もしコンポーネント間の関係が単純ならば、呼び口関 数は、直接受け口関数に結合される  もしコンポーネント間の関係が複雑ならば、vtable( 関数テーブル)が使用され、実行時に結合が決定され る 16 TOPPERSプロジェクト認定
  17. 17. 2012/06/02 TECS 仕様 TECS コンポーネントモデル TECS コンポーネント図 TECS コンポーネント記述言語 (TECS CDL) TECS コンポーネント実装モデル これらは TECS WG により策定作業が行われてい る 17 TOPPERSプロジェクト認定
  18. 18. 2012/06/02 TECS の実装  TECS ジェネレータ  TECS CDL からインタフェースコードとcell を定 義するコード(C言語)を生成する  プラグインを適用する  RPC プラグイン, Trace プラグイン, etc  TOPPERS/ASP+TECS  RTOS のカーネルオブジェクトを TECS のセルタ イプとして定義したもの  これらの実装は TECS WG により行われている 18 TOPPERSプロジェクト認定
  19. 19. 2012/06/02 その他の鍵となる特性  コンポーネントシステムの下に隠さない  メモリアロケーター  RPC チャンネル  RTOS カーネルオブジェクト  小さな組込みシステムにも向く  Inline関数実装  ROM化コード 19 TOPPERSプロジェクト認定
  20. 20. 2012/06/02 メモリアロケータ • 呼び元の cell がアロケートし 呼び先の cell が解放 (send) • 呼び先の cell がアロケートし 呼び元の cell が解放 (receive) tClient Client tServer Server tAllocator Allocator 20 TOPPERSプロジェクト認定
  21. 21. 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プロジェクト認定
  22. 22. 2012/06/02 カーネルオブジェクト  オーバーヘッドが小さいため、カーネルオブジェクトの ような小さな粒度のものもコンポーネントとして扱える  セマフォがどのタスクに共有されているか可視化され ている 22 TOPPERSプロジェクト認定
  23. 23. 2012/06/02 メッセージ • TECS コンポーネントにメッセージを扱うポートはない • 以下のようにコンポーネントを割り込ませることで実現 する • オーバーヘッドが小さいためコンポーネントとして扱 える 23 TOPPERSプロジェクト認定
  24. 24. 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)を用いて記述します。
  25. 25. 2012/06/02 競技に使用するハードウェア構成 TOPPERSプロジェクト認定 25 超音波センサ USBコネクタ ディスプレイ 右DCモータ 右ロータリーエンコーダ 左DCモータ 左ロータリーエンコーダ 光センサ タッチセンサジャイロセンサ
  26. 26. 2012/06/02 ハードウェア内部構成 TOPPERSプロジェクト認定 26 • ハードウェア構成のイメージ図 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
  27. 27. 2012/06/02 TOPPERSプロジェクト認定 27 NXT用ASP+TECSプラットフォームのコンポーネント
  28. 28. 2012/06/02 カーネルに関するコンポーネント TOPPERSプロジェクト認定 28 Task kernel.cdl ISR CyclicHandler AlarmHandler Semaphore InitializeRoutine TerminateRoutine ConfigInterrupt CyclicTaskActivator CyclicTask Eventflag Dataqueue Priority Dataqueue FixedSizeMemoryPool Kernel ISRWithConfigInterrupt
  29. 29. 2012/06/02 TECSのカバー範囲 TOPPERSプロジェクト認定 29 QACデバッガ UML • TECSがカバーできる設計領域の範囲 分析 実装 デバッグ 検証 ※Cやアセンブラが実装のほとんどすべてをカバーできるのに対し、 他はすべてをカバーするものではない Cアセンブラ TECS UMLは Object Management Group Inc.の,QAC はProgramming Research社の商標または登録商標 です
  30. 30. 2012/06/02 TOPPERSプロジェクト認定 30 モデルから TECS への変換 • クラス図もしくはオブジェクト図などの構造モデルから、TECS コンポーネントとして実装するコンポーネントを抽出する • 抽出した各コンポーネントをCDLを用いてプログラミングする – シグニチャを、クラス図のメソッド定義を元に記述する – セルタイプを、クラス図のクラス定義や関連を元に、前述の シグニチャ定義を利用して記述する • 自作コンポーネントにて、NXT用ASP+TECSプラットフォームのコン ポーネントを利用する際には、使用するコンポーネントのセルタイプ記 述を含む.cdlファイルをimportする – セルを、オブジェクト図を元に記述する • オブジェクト間の結合を元に組上げ記述を行う • Tecsgenを用いてCソーステンプレートを自動生成後、エディタ 等で中身を記述し「セルタイプコード」を完成させる 詳しくは2~4章にて
  31. 31. 2012/06/02 TOPPERSプロジェクト認定 31 著者リスト • MINDSTORMS NXT用 TOPPERSプラットフォーム の概要 • 森 孝夫 • 大山 博司(オークマ株式会社,TOPPERSプロ ジェクト TECS WG主査)

×