2015 1025 OSC-Fall Tokyo NETMF

32
オオオオオオオオオオオオオオ 2015 Tokyo/Fall 2015/10/25 ドドド NET ドドドドドドドドドドド 1 ドドド NET ドドドド ドドドドドドド ドドドド - V4.4 ドドドドドドドドド , LLILUM - [email protected] o.jp ドドドドドドドドドドドドドドドドドドド .NET Micro Framework ドドドドドド NET ドドドド ドドドド

Transcript of 2015 1025 OSC-Fall Tokyo NETMF

Page 1: 2015 1025 OSC-Fall Tokyo NETMF

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

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

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

- V4.4 リリースと最新情報 , LLILUM -

[email protected]

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

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

Page 2: 2015 1025 OSC-Fall Tokyo NETMF

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

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

22015/10/25

セッション内容

.NET Micro Framework とは?

新プラットフォームへの移植と V4.4 リリース

最新情報 , LLILUM

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

Page 3: 2015 1025 OSC-Fall Tokyo NETMF

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

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

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

.NET Micro Framework とは?

Page 4: 2015 1025 OSC-Fall Tokyo NETMF

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

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

42015/10/25

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

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

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

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

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

Page 5: 2015 1025 OSC-Fall Tokyo NETMF

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

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

SPOT Watch / MSN Direct Service( Microsoft リサーチ)

2006 年 V2.0Windows SideShow Device

2008 年 V3.0 , 3.5 for Network 2010 年 V4.0 for Open Source 2011 年 V4.2 for Visual Basic 2015 年 V4.4 for Visual Studio 2015

リポジトリ : CodePlex →GitHub

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

開発キット約 30 万円

Page 6: 2015 1025 OSC-Fall Tokyo NETMF

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

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

62015/10/25

NETMF の本質 元 Windows CE 未満 MMU 無しプラット

フォーム 組込み製品となるはずだった OS

移植キット販売、製品ライセンス販売予定 だった 2010 年にオープンソース化

Apache V2 ライセンス→無償で商用利用可能⇒ 製品相当の機能・性能・品質 を無料で公開 2015 年 正式サポート製品 GR-Peach 国内販売 国産製品化第 1 号

2015 年に GitHub へ移行、コミュニティ化推進 ドット NETまいくろバンザイ倶楽部

Page 7: 2015 1025 OSC-Fall Tokyo NETMF

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

ドット NETまいくろバンザイ GitHub / netmf-interpreter

https://github.com/NETMF/netmf-interpreter

GitHubNETMF / netmf-interpreter

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

Page 8: 2015 1025 OSC-Fall Tokyo NETMF

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

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

全体構成

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

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

アプリケーション開発

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

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

Page 9: 2015 1025 OSC-Fall Tokyo NETMF

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

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

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

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

MMU 不要 標準メモリ 128KB RAM / 512KB ROM

標準サポート ARM7/9/Cortex-M3, Blackfin, SH-2/2A→ V4.4 で Cortex-M4 / STM32 F4 だ

けに? サポート機能

ブートローダ , アプリケーションローダ , デバッガ IF

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

Page 10: 2015 1025 OSC-Fall Tokyo NETMF

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

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

102015/10/25

ドライバとサービス

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まいくろバンザイ倶楽部

Page 11: 2015 1025 OSC-Fall Tokyo NETMF

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

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

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

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

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

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

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

PC, Smart Phone, Cloud 連係

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

Page 12: 2015 1025 OSC-Fall Tokyo NETMF

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

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

122015/10/25

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

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

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

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

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

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

Page 13: 2015 1025 OSC-Fall Tokyo NETMF

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

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

132015/10/25 ドット NETまいくろバンザイ倶楽部

組み込み開発で何ができるか?

Page 14: 2015 1025 OSC-Fall Tokyo NETMF

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

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

142015/10/25

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

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

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

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

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

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

.NET Gadgeteeerで簡単に!

Page 15: 2015 1025 OSC-Fall Tokyo NETMF

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

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

152015/10/25

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

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

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

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

ドライバ

ドライバ

ドライバ

Serial (RS232C)

USB

LAN (TCP/IP)Host PC Target

Page 16: 2015 1025 OSC-Fall Tokyo NETMF

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

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

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

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

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

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

.NET MF

OS / Driver

Interpreter

App. / Lib.

Gadgeteer

Page 17: 2015 1025 OSC-Fall Tokyo NETMF

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

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

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

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

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

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

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

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

Page 18: 2015 1025 OSC-Fall Tokyo NETMF

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

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

2015/10/25

.NET Gadgeteer とは?

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

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

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

Page 19: 2015 1025 OSC-Fall Tokyo NETMF

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

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

Spider IoT 入門キット IoT 植物栽培キット EnOcean IoT 入門キット

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

Page 20: 2015 1025 OSC-Fall Tokyo NETMF

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

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

202015/10/25 ドット NETまいくろバンザイ倶楽部

V4.4 対応版新プラットフォームへの移植

Page 21: 2015 1025 OSC-Fall Tokyo NETMF

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

ドット NETまいくろバンザイ V4.4 で何が変わったか? GitHub への移行 SDK 開発ツールの変更 Visual Studio 2015 のみ対応 OS は Windows 7~

10 ログイン名にスペースがあるとインストール出来な

い!バグ ARM-CMSIS 対応 テンプレートが 2CPU/ 2 ボードに激減

STM32系だけに! デバッグ機能の高速化と安定化 UWP に影響を受けたクラスライブラリのサポート バグ FIX2015/10/25 21ドット NETまいくろバンザイ倶楽部

Page 22: 2015 1025 OSC-Fall Tokyo NETMF

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

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

222015/10/25

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

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

CPU アーキテクチャ (Cortex-M4 or NOT) 最低メモリ目安

RAM 256KB / ROM 512KB (Thumb2 命令 ) コンパイラとデバッガ

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

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

Page 23: 2015 1025 OSC-Fall Tokyo NETMF

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

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

232015/10/25

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

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

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

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

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

デバッガ , JTAG ICE, Eclipse, OpenOCD+GDB OS アーキテクチャとリソース管理

メモリ , タイマ , 割り込み , イベント .NET Framework と CLR

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

Page 24: 2015 1025 OSC-Fall Tokyo NETMF

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

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

242015/10/25

V4.4 ソフトウェア環境とツール Visual Studio 2015 (Express 版不可 , Community 版可 ) .NET Micro Framework 4.4 SDK ( バイナリインストーラ

配布 ) .NET Micro Framework 4.4 Porting Kit (GitHub) クロスコンパイラ , デバッガ

推奨は ARM RVDS, KEIL MDK gcc は Launchpad GCC ARM Embedded 4_9 以降

一部スクリプト(環境変数)に不具合がある場合も…

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

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

Page 25: 2015 1025 OSC-Fall Tokyo NETMF

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

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

252015/10/25

ハードウェア環境とツール STM32系を使えばほぼ問題ない

STM32 F4 DISCOVERY は OpenOCD 対応オンボード・デバッガ搭載(他の STM32もデバッグ可能)

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

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

Page 26: 2015 1025 OSC-Fall Tokyo NETMF

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

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

262015/10/25

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

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

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

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

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

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

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

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

Page 27: 2015 1025 OSC-Fall Tokyo NETMF

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

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

272015/10/25

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

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

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

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

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

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

OS 移植の醍醐味

Page 28: 2015 1025 OSC-Fall Tokyo NETMF

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

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

282015/10/25 ドット NETまいくろバンザイ倶楽部

ビルド & デバッグ NativeSample

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

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

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

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

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

ドライバ

Page 29: 2015 1025 OSC-Fall Tokyo NETMF

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

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

292015/10/25 ドット NETまいくろバンザイ倶楽部

LLILUM

Page 30: 2015 1025 OSC-Fall Tokyo NETMF

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

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

302015/10/25

LLILUM とは? NETMF と同じ開発者が開発している  組込みアプリケーション実行環境

Visual C# で開発した UWP (NETMF)互換の IL をLLVMベースの .NET コンパイラでコンパイル後mbed アプリケーション (.bin を作成 ) 実行

Visual Studio で gdb デバッグ 豊富なサービスとクラスライブラリを標準装備 オープンソース・ライセンスで公開 (Apache

V2) 開発環境 /SDK のビルド手順が大変!

x64, VS2015, LLVM 3.7.0, ARM GCC, Make, CMake, Python 2.7.4MIEngine, Visual Studio Extensibility Tools, …. まだまだほかにもドット NETまいくろバンザイ倶楽部

Page 31: 2015 1025 OSC-Fall Tokyo NETMF

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

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

対応ボード NXP LPC1768 512KB/64KB (mbed)

Freescale FRDM-K64F 1MB/256KB (mbed)

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

Page 32: 2015 1025 OSC-Fall Tokyo NETMF

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

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

322015/10/25

まとめ

.NET Micro Framework とは?

新プラットフォームへの移植と V4.4 リリース

最新情報 , LLILUM

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