31
オオオオオオオオオオオオオオ 2016 Tokyo/Fall 2016/11/5 ドドド NET ドドドドドドドドドドド 1 ドドド NET ドドドド ドドドドドドド ドドドド - V4.4 ドドドドドドドドド , LLILUM - [email protected] o.jp ドドドドドドドドドドドドドドドドドドド .NET Micro Framework ドドドドドド NET ドドドド ドドドド

OSC Tokyo/Fall NETMF 161105

Embed Size (px)

Citation preview

Page 1: OSC Tokyo/Fall NETMF 161105

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

2016/11/5 ドット NET まいくろバンザイ倶楽部 1

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

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

[email protected]

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

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

Page 2: OSC Tokyo/Fall NETMF 161105

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

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

22016/11/5

セッション内容

.NET Micro Framework とは?

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

LLILUM Visual Studio / C# で

mbed のアプリケーション開発とデバッグ

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

Page 3: OSC Tokyo/Fall NETMF 161105

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

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

32016/11/5 ドット NETまいくろバンザイ倶楽部

.NET Micro Framework とは?

Page 4: OSC Tokyo/Fall NETMF 161105

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

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

42016/11/5

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

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

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

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

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

Page 5: OSC Tokyo/Fall NETMF 161105

オープンソースカンファレンス 2016   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

2016/11/5 5ドット NETまいくろバンザイ倶楽部

開発キット約 30 万円

Page 6: OSC Tokyo/Fall NETMF 161105

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

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

62016/11/5

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

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

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

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

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

Page 7: OSC Tokyo/Fall NETMF 161105

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

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

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

GitHubNETMF / netmf-interpreter

2016/11/5 7ドット NETまいくろバンザイ倶楽部

Page 8: OSC Tokyo/Fall NETMF 161105

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

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

全体構成

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

2016/11/5 8ドット NETまいくろバンザイ倶楽部

アプリケーション開発

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

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

Page 9: OSC Tokyo/Fall NETMF 161105

オープンソースカンファレンス 2016   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

2016/11/5 9ドット NETまいくろバンザイ倶楽部

Page 10: OSC Tokyo/Fall NETMF 161105

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

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

102016/11/5

ドライバとサービス

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: OSC Tokyo/Fall NETMF 161105

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

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

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

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

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

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

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

PC, Smart Phone, Cloud 連係

2016/11/5 11ドット NETまいくろバンザイ倶楽部

Page 12: OSC Tokyo/Fall NETMF 161105

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

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

122016/11/5

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

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

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

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

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

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

Page 13: OSC Tokyo/Fall NETMF 161105

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

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

132016/11/5

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

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

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

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

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

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

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

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

Page 14: OSC Tokyo/Fall NETMF 161105

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

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

142016/11/5

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

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

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

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

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

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

OS 移植の醍醐味

Page 15: OSC Tokyo/Fall NETMF 161105

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

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

152016/11/5 ドット NETまいくろバンザイ倶楽部

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

Page 16: OSC Tokyo/Fall NETMF 161105

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

ドット NETまいくろバンザイ V4.4 で何が変わったか? GitHub に移行 SDK 開発ツールの変更 ( VS 自動インストール

化) Visual Studio 2015 のみ対応 OS は Windows 7~

10 ARM-CMSIS / RTOS 対応 テンプレートが 2CPU/ 2 ボードに激減

STM32系だけに! デバッグ機能の高速化と安定化 UWP に影響を受けたクラスライブラリのサポート バグ Fix

AllJoyn Branch2016/11/5 16ドット NETまいくろバンザイ倶楽部

Page 17: OSC Tokyo/Fall NETMF 161105

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

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

172016/11/5

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 ( 自分で作る必要… )→Visual Studio MIEngine

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

Page 18: OSC Tokyo/Fall NETMF 161105

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

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

182016/11/5

V4.4 が動作するボード PK 標準サポートボード

STM32F4Discovery

STM32F429Discovery

KEIL MCBSTM32F400

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

Page 19: OSC Tokyo/Fall NETMF 161105

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

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

192016/11/5

V4.4 移植事例 関本健太郎氏の移植成果

GR-Peach Nucleo STM32F401 Nucleo STM32L476RG

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

Facebook のNETMF on mbed 準備会

で公開

Page 20: OSC Tokyo/Fall NETMF 161105

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

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

202016/11/5

最近の状況

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

開発が停滞気味 派生プロジェクト .NET Gadgeteer の実質開発

中止 STM32F429Discovery関連が9月に追加・変更

されたのが最後 原因

IoT ブームに乗り遅れた? Raspberry Pi / Raspbian の普及 Windows 10 IoT Core の登場 その他の新ボードの登場 IoT ブームで開発者の興味がセンサーや無線に

Page 21: OSC Tokyo/Fall NETMF 161105

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

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

212016/11/5 ドット NETまいくろバンザイ倶楽部

LLILUM

Page 22: OSC Tokyo/Fall NETMF 161105

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

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

222016/11/5

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

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

豊富なサービス UWP 準拠のクラスライブラリを標準装備 mbed で C# のソースコード・デバッグが可能

Visual Studio に gdb デバッグ・インターフェース追加- MIEngine

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

Page 23: OSC Tokyo/Fall NETMF 161105

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

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

https://github.com/NETMF/llilum

GitHubNETMF / llilum

2016/11/5 23ドット NETまいくろバンザイ倶楽部

Page 24: OSC Tokyo/Fall NETMF 161105

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

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

242016/11/5

LLILUM のしくみ動作概要図

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

C# Application

C# Library

mbed-bin

C# VS Compiler

ELF

LLVM Transformer

MSIL

IR

gcc

mbed Converter

Page 25: OSC Tokyo/Fall NETMF 161105

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

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

252016/11/5

LLILUM の状況 オープンソース・ライセンスで公開 (Apache

V2) GitHub で開発 , V1.0 リリース済

NETMF/llilum master が無い!→安定動作版が無い

バージョンによって動作したりしなかったり

開発環境 /SDK のビルド手順が大変! Windows 10/x64, VS2015, LLVM 3.7.x, ARM GCC, Make,

CMake, Python 2.7.4, …. まだまだほかにも LLVM のビルドに2 ~3時間かかる 文書やコミュニティの情報に間違いが多い!

ISSUE を探して解決することが必須ドット NETまいくろバンザイ倶楽部

Page 26: OSC Tokyo/Fall NETMF 161105

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

ドット NETまいくろバンザイ LLILUM の状況(続き) 対応ボード

NXP LPC1768 512KB/64KB (mbed)

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

2016/11/5 ドット NETまいくろバンザイ倶楽部 26

Page 27: OSC Tokyo/Fall NETMF 161105

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

ドット NETまいくろバンザイ LLILUM の状況(続き) 対応ボード

Nucleo STM32F091 (mbed) Nucleo STM32F401 (mbed) Nucleo STM32F411 (mbed) Nucleo STM32L152 (mbed)

32bit Windows PC

2016/11/5 ドット NETまいくろバンザイ倶楽部 27

Page 28: OSC Tokyo/Fall NETMF 161105

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

ドット NETまいくろバンザイ NETMF vs. LLILUM 比較表

2016/11/5 ドット NETまいくろバンザイ倶楽部 28

NETMF (V4.4) LLILUM (V1.0)

歴史・実績 2001 年 ~ 2015 年 ~

動作方式 中間言語インタプリタ マシン語バイナリ

コンパイル方式 VS + 独自コード VS + LLVM経由

リソース 中 小

ビルド時間 短 長

.NET Class Lib Version V3.x V4.5

標準対応ボード 2種 7種

プログラミング言語 C#, VB C#, VB

Page 29: OSC Tokyo/Fall NETMF 161105

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

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

292016/11/5

まとめの前に IoT時代の組み込み技術者の心構え

オープンソースに関する広い知識と経験ライセンスGitHubコントリビュート

コミュニケーションコミュニティ活動オンライン・オフライン・イベント英語力+英語版の開発環境

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

Page 30: OSC Tokyo/Fall NETMF 161105

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

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

302017/3/11

補足 実験用 LLILUM-SDK の公開先

downloadhttp://www.devdrv.co.jp/hidaka/files/llilum-160528.zip

Bloghttp://www.devdrv.co.jp/hidaka/node/62

決してお勧めしません 非常に不安定です 自己責任でお願いします

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

Page 31: OSC Tokyo/Fall NETMF 161105

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

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

312016/11/5

まとめ

.NET Micro Framework とは?

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

LLILUM

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