38
オオオオオオオオオオオオオオ 2015 Tokyo/Spring 2015/2/27 ドドド NET ドドドドドドドドドドド 1 ドドド NET ドドドド ドドドドドドド ドドドド - RZ ドドドドドド GR-Peach ドドドドドドドドドドド - [email protected] o.jp ドドドドドドドドドドドドドドドドドドド .NET Micro Framework ドドドドドド NET ドドドド ドドドド

2015 0227 OSC-Spring Tokyo NETMF

Embed Size (px)

Citation preview

オープンソースカンファレンス 2015 Tokyo/Spring

2015/2/27 ドット NET まいくろバンザイ倶楽部 1

ドット NET まいくろ バンザイ倶楽部日高亜友

- RZ マイコン搭載 GR-Peach を始めとする新しい流れ -

[email protected]

オープンソースになったマイコン開発環境.NET Micro Framework の紹介。

ドット NETまいくろバンザイ

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

22015/2/27

セッション内容

.NET Micro Framework とは?

新プラットフォームへの移植

組み込みアプリケーション開発と IoT 開発 GR-Peach への移植 参加者募集!

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

32015/2/27 ドット NETまいくろバンザイ倶楽部

.NET Micro Framework とは?

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

42015/2/27

.NET Micro Framework とは? 元々は Microsoft Research 開発の組み込み OS Visual C# / Visual Basic で開発した IL

.NET アセンブリ を中間コードインタプリタで実行

豊富なドライバとライブラリを標準装備 オープンソース・ライセンスで公開 (Apache

V2) 30 種以上のプラットフォームに移植されて動

作 .NET Micro Framework (NETMF) 移植済み SOC 業務アプリケーション・システム応用事例ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ .NET Micro Framework の歴史 2001 年 V 1.0

SPOT Watch / MSN Direct Service

( Microsoft リサーチ) 2006 年 V2.0

Windows SideShow Device 2008 年 V3.0 , 3.5 for Network 2010 年 V4.0 for Open Source 2011 年 V4.2 for Visual Basic 2012 年 V4.3 for Visual Studio 2012 2015 年 V4.3-QFE2 for Visual Studio

2013/20152015/2/27 5ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

62015/2/27

NETMF の本質 本来は、 Windows CE 未満のプラット

フォーム用 組込みシステム向け製品となるはずだった OS 移植キット販売、製品ライセンス販売予定

2010 年にオープンソース化 Apache V2 ライセンス→無償で商用利用可能 競合 OS の台頭⇒ 製品相当の機能・性能・品質 を無料で公開

2015 年 正式サポート製品 GR-Peach 国内販売 国産製品化第 1 号 ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ アーキテクチャ

全体構成

2 種類の実装方法 - Native Platform - “OS on OS” solution

2015/2/27 7ドット NETまいくろバンザイ倶楽部

アプリケーション開発

ライブラリ開発プラットフォーム移

CLR: Common Language RuntimeHAL: Hardware Abstraction LayerPAL: Platform Abstraction Layer

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ OS としての提供機能 IL ( .NET のアセンブリ)の実行環境 = TinyCLR タイマ , 割り込みハンドラ , マルチスレッド ,

スケジューラ ブートローダ , 各種デバイスドライバ , リソースマ

ネージャ 組み込み環境対応

MMU 不要 最小 64KB RAM / 256KB ROM ( 特別な環境 ) 標準サポート ARM7/9/Cortex-M3, Blackfin, SH-2/2A

サポート機能 ブートローダ , アプリケーションローダ , デ

バッガ IF

2015/2/27 8ドット NETまいくろバンザイ倶楽部

ARM 製コンパイラ利用時のみ!

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

92015/2/27

ドライバとサービス

Cache Ethernet, WiFi GPIO I2C INTC LCD / Display Piezo / Speeker PMC SDRAM SDCARD / MMC SPI Thermistor TIME (RTC) TIMER USART USB Client

Backlight (GPIO,SPI) BatteryCharger / Measurement BlockStorage (Flash, SD) Buttons COM DPWS Gesture Font, Graphics HTTP Ink Interop FileSystem (FAT) Security, Crypto TCP/IP, Socket, RPC, SSL Touch Panel (Multi Touch) XML

デバイスドライバデバイスコントローラ

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

プラットフォームとアプリケーション

自作ボードや未サポートボードに移植 CQ 出版等の移植事例(参考資料)

周辺ハードウェアを自作して動作 容易に接続可能→ .NET Gadgeteer

ライブラリやシステムを開発・改造 Emulator の開発、独自モジュールの開発

連係システムやアプリケーションを開発 他のシステムとの接続

PC, Smart Phone, Cloud 連係

2015/2/27 10ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

112015/2/27

SDK vs. PK (Porting Kit) SDK: 組み込みアプリケーション開発

アプリケーション開発に必須 Visual Studio / VC# Express に組み込んで使用 Simulator, Debugger, Deployment Tools を含む

PK : 動作プラットフォームの構築(移植) .NET Micro Framework の移植 に必須 ほかに クロスコンパイラ(+デバッガ)が必

須 ツール類を含めた全ソースコードが提供 ほとんどを C++ で記述 (一部アセンブラ , C,

C# )ドット NETまいくろバンザイ倶楽部

バージョンを合わせる必要がある

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

122015/2/27 ドット NETまいくろバンザイ倶楽部

新プラットフォームへの移植と IoT 開発

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ 移植方法の選択 Native 実装

TinyCLR 直接実装 VS. TinyBooter 実装 TinyCLR / TinyBooter のメンテナンス手順が必須

他のブートローダ利用 U-Boot, T-Monitor (T-Engine) 等 Network ブート

OS on OS 他の OS のアプリケーションとして NETMF を実装

ソースコードが公開されているので実際にはどの様にでも作ることが可能

2015/2/27 13ドット NETまいくろバンザイ倶楽部

TinyBooter = NETMF 専用ブートローダ

Mono へのエクスポート

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

142015/2/27

サポート・プラットフォーム PK が用意しているサポート・テンプレート(標準サポート環境)

BF537 -- ADI Blackfin EA_LPC2478 -- NXP LPC2478 (Embedded Artists LPC2478 4MB / 512KB) iMXS -- MC9328MXS (32MB RAM / 8MB Flash ROM) MCBSTM32E – STM32F103 Cortex-M3 (KEIL MCBSTM32E 8MB / 1MB) MOTE2 -- Marvell PXA271 (Crossbow imote2) PCM023 -- NXP LPC22xx ARM7 SAM7S_EK -- Atmel AT91SAM7S256 (64KB RAM / 256KB Flash ROM) SAM7X_EK -- Atmel AT91SAM7X512 (128KB RAM / 512KB Flash ROM) SAM9RL64 -- Atmel AT91SAM9RL64EK (64MB RAM / 256MB Flash ROM) SAM9261_EK -- Atmel AT91SAM9261EK (64MB RAM / 256MB Flash ROM) SH7216_RSK -- SH-2A 16MB SRAM / 1MB Flash ROM SH7264_M3A_HS64 -- SH-2A 64MB RAM / 516MB Flash ROM SH7264_RSK -- SH-2A 64MB RAM / 64MB Flash ROM SH7619_EVB -- SH2 8MB RAM / 4MB Flash ROM STM32Stamp -- STM32F103 Cortex-M3 (ET-STM32 Stamp 512KB RAM / 64KB) Windows2 -- Windows Emulator

そのほか公開されている事例 STM32F4 -- STM32F4-Discovery, Netduino Plus, FEZ Cerberus Oberon microsystems FM3/FM4 -- SK-FM4-U120-9B560, MB9BF506, CQ_FRK_FM3 ksekimoto RX62

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

152015/2/27

移植前のチェック ターゲット・プラットフォーム

RAM/RAM 容量( ROM 不足は RAM で代用可能)

CPU アーキテクチャ gcc 利用時の最低メモリ目安

RAM 256KB / ROM 512KB (Thumb / Thumb2 命令 )

コンパイラとデバッガ Windows 上で動作するクロスコンパイラ Windows 上で動作する JTAG-ICE デバッガ

Native 実装 vs. “OS on OS” 実装 ターゲット・プラットフォームの適正ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

162015/2/27

移植に必要な知識 組み込みシステム全般

割り込み処理 , 割り込み Vector, Cache, MMU, PLL ブートローダ

移植対象の CPU, ターゲット・ボード データシート , 回路図 , メモリマップ , クロック

ツール Toolchain (コンパイラ , アセンブラ , リンカ , ライブラリ

アン)C, C++, CPU のアセンブラ命令 , コマンドプロンプト , VB Script

デバッガ , JTAG ICE, Eclipse, OpenOCD+GDB

OS アーキテクチャとリソース管理 メモリ , タイマ , 割り込み , イベント .NET Framework と CLR

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

172015/2/27

ソフトウェア環境とツール Visual Studio 2012 (VC++ 2012 exp, VC# 2012 exp も可 )

Windows SDK 8.0 (MSBuild) .NET Micro Framework 4.3 SDK (QFE1) .NET Micro Framework 4.3 Porting Kit (QFE1) クロスコンパイラ , デバッガ

推奨は ARM RVDS, KEIL MDK gcc は CodeSourcery arm-2014.05-28 (GCC 4.8.3 ま

で )一部ソースコードが非対応なので自力で問題解決

クロス開発統合環境 Eclipse ( 自分で作る場合も… )

ソースコード管理 7zip, WinMerge, VSS, svn, … ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

182015/2/27

ハードウェア環境とツール JTAG ICE, または OpenOCD ICE

対応 CPU やボード構成をよく確認する Flash ROM書き込みツール(必要に応じて) ブートローダ開発環境(必要に応じて) 評価ボード(ターゲットが利用できない場合) 測定器、信号観測ツール

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

192015/2/27

移植の主要作業 開発環境構築と基本設計

環境変数設定&クロス開発用ビルドスクリプト作成

メモリ割当て設計& Scatter ファイル設定 Solution の作成

ビルド&デバッグ NativeSample を動作させる

ブートローダ , 初期化処理 (Clock, Cache, MMU, PLL)

ドライバ , PAL IF (Flash ROM ドライバ開発必須 , UART)

TinyCLR の動作 TinyBooter, アプリケーション・ロードとデバッグ IF

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

202015/2/27

InterOp の実装 NETMF 標準 API に無い OS 機能を

アプリケーションから呼び出す 使用方法

標準 API に無いドライバの実装 例: USB Host ドライバ , Flash ROM管理 ,

クリティカルな処理を C またはアセンブラで記述してアプリケーションから呼び出す

実装方法 C# で API を記述、コードを C/C++/ アセンブラで記述 パラメータ、リターン値、非同期処理、イベントが利

用可能 ドット NETまいくろバンザイ倶楽部

OS 移植の醍醐味

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

212015/2/27 ドット NETまいくろバンザイ倶楽部

ビルド & デバッグ NativeSample

Native Code での” Hello world” 表示出力 ビルド環境の検証(自由にカスタマイズ可能) ドライバ類の初期化 & 動作の検証

TinyCLR .NET Micro Framework の移植対象・本体 実行には IL (コンパイル済アセンブリ)が必須

Product\Sample ディレクトリ( HelloWorld, Network など)

TinyBooter NETMF 純正ブートローダ( MFDepoy IF )

• メモリ管理• 割り込み• タイマー• 232C/USB

ドライバ

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

222015/2/27

考察: Native 環境への移植 利点

全ソースコードが用意されている ブートローダ , CPU初期化 , リソース管理

動作している実機サンプルが入手し易い 割り込み / イベント処理が実装し易い

欠点 未対応アーキテクチャには移植し難い クロスコンパイル , デバッグ環境を手当てする

必要

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

232015/2/27

考察: OS on OS 環境への移植 利点

OS が用意している開発環境を流用可能 JTAG-ICE の代わりにデバッガで代用可能 1回移植すれば、同一 OS への移植が容易

欠点 参考にするソースコードが用意されていない 動作している実機サンプルが入手し難い OS依存 API を変換する作業( PAL層開発)が

必須( Timer, Event, Select, Socket, … )

ドライバの移植数、作業工数は Nativeよりも多い

ドット NETまいくろバンザイ倶楽部

参考: .NET Micro Framework for Linux

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

242015/2/27 ドット NETまいくろバンザイ倶楽部

組み込みアプリケーション開発

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

252015/2/27

アプリケーション開発手順 事前調査・基本設計

Interface 仕様の確認 (H/W, S/W, Network, …) コーディング

Full .NET 環境用コードの流用 ソースコード・デバッグ

エミュレータ , オンライン・デバッガ Full .NET 環境でのデバッグ (ソース流用化)

デプロイ Flash ROM焼き , 配布用署名付きコード生成

ドット NETまいくろバンザイ倶楽部

.NET Gadgeteeerで簡単に!

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

262015/2/27

デバッガ インターフェース デバッガとの接続手段: 3 種類から選択

独自ハードウエア開発の注意点 OS更新用のデバッガ(ブート)・スイッチの

必須通常は GPIO タクト SW (ボタン) , DIP-SW 等を使

用 ドット NETまいくろバンザイ倶楽部

ドライバ

ドライバ

ドライバ

Serial (RS232C)

USB

LAN (TCP/IP)Host PC Target

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ .NET Gadgeteer とは?

2015/2/27 ドット NETまいくろバンザイ倶楽部 27

.NET Micro Framework ベース組み込みシステム統合開発環境とそれを構成するモジュール製品群

MMU 無しマイコン上で Visual Studio で開発した.NET アセンブリ(中間コード)をインタプリタ実行

GUI操作で自動的に初期化コードとクラスライブラリを追加

.NET MF

OS / Driver

Interpreter

App. / Lib.

Gadgeteer

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ .NET Gadgeteer とは?

2015/2/27 ドット NETまいくろバンザイ倶楽部 28

具体的には次のもの ハードウェア

専用メインボード、専用モジュール群、開発環境としての Windows PC

ソフトウェア ROM 化された OS 、組み込み用各種ドライバとライブラリ、

Visual Studio 用 Plug In (ライブラリと GUI ツール、シミュレータ)

新規モジュール開発やカスタマイズ可能 オープンソース

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

2015/2/27

.NET Gadgeteer とは?

C#/VB言語レベルでライブラリと豊富なミドルウェアを提供 プロトコル、グラフィック ファイルシステム サービス、マルチスレッド

10 種以上の CPU ボードと100 種以上のアクチュエータ ,センサー , ネットワークアダプタ ,コネクティビティ ,ディスプレイ等のモジュール を提供

ドット NETまいくろバンザイ倶楽部 29

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ IoT入門キット事例 IoT 入門キット

ガジェッター IoT 入門キット EnOcean IoT 入門キット

2015/2/27 30ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ GR-Peach

特長 RZ/A1H 搭載 ARM Cortex-A9 Core 400MHz, 10MB RAM, 8MB FLASH Arduino互換ピンアサイン&ピンソケット豊富な各種シールドと接続可能

mbed 対応

2015/2/27 31ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ GR-Peach と IoT Kit

2014 年 8月 GR-Peach プレスリリース

2014 年 11月 第 1回プロデューサミーティング 試用版配布 NETMF for mbed 活動開始

2015 年 3月 15 日 IoYT コミュニティー(仮称)キックオフ!

2015 年 3月 21 日 第 3回プロデューサミーティング 最終発表会

2015/2/27 32ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ NETMF for mbed

mbed 対応の GR-Peach 上で.NET Micro Framework 及び .NET Gadgeteerを移植して動作させよう!

2015/2/27 33ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ NETMF for mbed 活動内容 関本健太郎氏 ( インターフェース誌で移植記事執筆 ) が中心となって移植・評価中

情報交換 Facebook : NETMF on mbed  準備会

成果公開 Codeplex : NETMF for MBED

https://netmf4mbed.codeplex.com/ GitHub : http://ms-iotkithol-jp.github.io/ mbed : http://developer.mbed.org/teams/NETMF-on-mbed/

2015/2/27 34ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ NETMF for mbed 募集 賛同者、協力者、開発者 募集中!

Visual Studio と GR-Peach で組み込み開発 GR-Peach への移植の作業分担 IoT 学習用教材の開発、活用 国産 MCU RZ マイコンと

.NET Micro Framework の普及促進と宣伝

2015/2/27 35ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ IoYT コミュニティー (仮称) Internet of Your Things 活動

http://kokucheese.com/event/index/266921/

IoT あるじゃん (ALGYAN) facebook: IoT あるじゃん (ALGYAN) 本会 https://www.facebook.com/groups/ioytjp/

2015/2/27 36ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

372015/2/27

まとめ

.NET Micro Framework とは?

新プラットフォームへの移植

組み込みアプリケーション開発と IoT 開発 GR-Peach への移植 参加者募集!

ドット NETまいくろバンザイ倶楽部

オープンソースカンファレンス 2015 Tokyo/Spring

ドット NETまいくろバンザイ

382015/2/27

参考 URL .NET Micro Framework (NETMF)

http://www.netmf.com/ http://netmf.codeplex.com/ http://en.wikipedia.org/wiki/.NET_Micro_Framework

.NET Gadgeteer http://www.netmf.com/gadgeteer/ https://gadgeteer.codeplex.com/ http://ja.wikipedia.org/wiki/.NET_Gadgeteer

ドット NETまいくろバンザイ倶楽部