36
オオオオオオオオオオオオオオ 2017 Tokyo/Spring 2017/3/11 ドドド NET ドドドドドドドドドドド 1 ドドド NET ドドドド ドドドドドドド ドドドド - NETMF ドドド , LLILUM - [email protected] o.jp ドドドドドドドドドドドドドドドドドドド .NET Micro Framework ドドドドドド NET ドドドド ドドドド

OSC Tokyo/Spring NETMF 170311

Embed Size (px)

Citation preview

Page 1: OSC Tokyo/Spring NETMF 170311

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

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

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

- NETMF の今後 , LLILUM -

[email protected]

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

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

Page 2: OSC Tokyo/Spring NETMF 170311

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

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

22017/3/11

セッション内容 はじめに:なぜ興味を持ったか? .NET Micro Framework とは? LLILUM 今後はどうなる?

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

Page 3: OSC Tokyo/Spring NETMF 170311

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

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

32017/3/11

はじめに

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

なぜ.NET Framework に興味を持ったか?

Page 4: OSC Tokyo/Spring NETMF 170311

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

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

42017/3/11

組み込み開発者の悩み 昔は

OS サポートベースの IO が使いたい デバイスドライバのこと

豊富なミドルウェア(プロトコル・ファイルシステム)を安くしかも安定したものを入手

高級言語でのアプリケーション開発(アセンブラ以外) C 言語のこと

例:組み込み Linux + awk/shell/sed

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

Page 5: OSC Tokyo/Spring NETMF 170311

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

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

52017/3/11

組み込み開発者の悩み 時が経つと

非同期処理と同期処理を容易に扱いたい マルチ IO を容易に扱いたい マルチスレッドを容易に扱いたい 高速化を簡単に 複雑化なプログラムを簡単に

↓ 組込みシステムでも C# を使いたい

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

C# は偉大な言語

ハードウェアが進化拡大

複雑化

Page 6: OSC Tokyo/Spring NETMF 170311

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

ドット NETまいくろバンザイ 参考:プログラミング言語の進化 登場時期と系統

2017/3/11 ドット NETまいくろバンザイ倶楽部 6

Mesa

Delphi

SmallTalk

Cedar

Pascal

Java

C#

1970年

1980年

1990年

2000年

BCPL

C

C++UCSD Pascal

Turbo Pascal

J#

Anders Hejlsberg

Niklaus Wirth

James Gosling, Bill Joy

Alan Kay

Kernighan & Ritchie

Bjarne Stroustrup

Objective-CBrad Cox, Steve Jobs

Kenneth Bowles

Turbo C

角丸は中間言語型

C でプログラミングするには

人生は短すぎるby Miguel de Icaza, Mono Project

Page 7: OSC Tokyo/Spring NETMF 170311

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

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

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

NET Micro Framework(NETMF)

Page 8: OSC Tokyo/Spring NETMF 170311

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

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

82017/3/11

.NET Micro Framework とは? 元々は Microsoft Research 開発の組み込み OS

Colin Miller 氏を中心とするグループが開発 Visual C# / Visual Basic で開発した IL

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

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

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

作 .NET Micro Framework (NETMF) 移植済み SOC 業務アプリケーション・システム応用事例

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

Page 9: OSC Tokyo/Spring NETMF 170311

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

ドット NETまいくろバンザイ NETMF 開発リーダー Colin Miller

Steve Maillet

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

Page 10: OSC Tokyo/Spring NETMF 170311

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

ドット 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

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

開発キット約 30 万円

Page 11: OSC Tokyo/Spring NETMF 170311

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

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

112017/3/11

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

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

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

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

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

Page 12: OSC Tokyo/Spring NETMF 170311

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

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

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

GitHubNETMF / netmf-interpreter

2017/3/11 12ドット NETまいくろバンザイ倶楽部

Page 13: OSC Tokyo/Spring NETMF 170311

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

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

全体構成

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

2017/3/11 13ドット NETまいくろバンザイ倶楽部

アプリケーション開発

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

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

Page 14: OSC Tokyo/Spring NETMF 170311

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

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

142017/3/11

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

STM32F4Discovery

STM32F429Discovery

KEIL MCBSTM32F400

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

Page 15: OSC Tokyo/Spring NETMF 170311

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

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

152017/3/11

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

GR-Peach Nucleo STM32F401 Nucleo STM32L476RG

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

Facebook のNETMF on mbed 準備会

で公開

Page 16: OSC Tokyo/Spring NETMF 170311

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

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

162017/3/11

最近の状況

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

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

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

されたのが最後 原因

Raspberry Pi / Raspbian の普及 高性能安価なハードウェア蔓延 Windows 10 IoT Core の登場 新型マイコン / ボードの市場投入頻度アップ IoT ブームで開発者の興味がセンサーや無線に

Microsoft の開発者が減った?

Colin退職後…

open issue=152

Page 17: OSC Tokyo/Spring NETMF 170311

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

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

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

LLILUM

Page 18: OSC Tokyo/Spring NETMF 170311

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

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

182017/3/11

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

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

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

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

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

Page 19: OSC Tokyo/Spring NETMF 170311

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

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

https://github.com/NETMF/llilum

GitHubNETMF / llilum

2017/3/11 19ドット NETまいくろバンザイ倶楽部

Page 20: OSC Tokyo/Spring NETMF 170311

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

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

202017/3/11

LLILUM のしくみ動作概要図

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

C# Application

C# Library

mbed-bin

C# VS Compiler

ELF

LLVM Transformer

MSIL

IR

gcc

mbed Converter

Page 21: OSC Tokyo/Spring NETMF 170311

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

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

212017/3/11

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 22: OSC Tokyo/Spring NETMF 170311

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

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

222017/3/11

最近の状況

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

開発が停滞気味 BSP NuGet 化等の追加機能中断=実質開発中止 dev branch が9月に追加・変更されたのが最後

原因 Raspberry Pi / Raspbian の普及 高性能安価なハードウェア蔓延 Windows 10 IoT Core の登場 新型マイコン / ボードの市場投入頻度アップ IoT ブームで開発者の興味がセンサーや無線に

open issue=100

Page 23: OSC Tokyo/Spring NETMF 170311

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

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

NXP LPC1768 512KB/64KB (mbed)

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

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

Page 24: OSC Tokyo/Spring NETMF 170311

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

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

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

32bit Windows PC

2017/3/11 ドット NETまいくろバンザイ倶楽部 24

Page 25: OSC Tokyo/Spring NETMF 170311

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

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

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

今後はどうなる?

Page 26: OSC Tokyo/Spring NETMF 170311

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

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

262017/3/11

何でこうなった? 元々の位置づけ

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

.NET Framework .NETCompact

Framework.NETMicro

Framework

2000 年

未来 Server, Desktop Mobile, Embedded Mi-Com

PC / WindowsWindows CE

Micro

Page 27: OSC Tokyo/Spring NETMF 170311

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

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

272017/3/11

.NET Framework 2000 年

CLI ( コンセプト ) の具体的な実装が CLR Windows に大きく依存 アンダース・ヘルスバーグ

2001 年 CLI の Open Source 実装→ mono プラットフォーム独立 (Linux, unix, iOS等 , …) ミゲル・デ・イカザ  (GNOME)

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

Page 28: OSC Tokyo/Spring NETMF 170311

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

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

282017/3/11

.NET Framework 2013 年

mono →Xamarin ミゲル・デ・イカザ  (GNOME)

2014 年 .NET Framwork → .NET Core

Windows とは独立で Open Source 実装 .NET Foundation

2016 年 Microsoft が Xamarin 買収

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

Page 29: OSC Tokyo/Spring NETMF 170311

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

ドット NETまいくろバンザイ つまり 推測 Microsoft は  2010 年頃までに徐々に

Open Source の力を認めた そして急激に Open Source に傾倒していった

NETMF の Open Source 化 (2010 年 ) Codeplex → GitHub WDF の Open Source 化 .NET Core Bash On Ubuntu On Windows 10 ほかにも…

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

Page 30: OSC Tokyo/Spring NETMF 170311

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

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

2017/3/11 ドット NETまいくろバンザイ倶楽部 30

Page 31: OSC Tokyo/Spring NETMF 170311

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

ドット NETまいくろバンザイ 2 大プラットフォーム・ファミリ

2017/3/11 ドット NETまいくろバンザイ倶楽部 31

Page 32: OSC Tokyo/Spring NETMF 170311

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

ドット NETまいくろバンザイ モデルとライブラリ

2017/3/11 ドット NETまいくろバンザイ倶楽部 32

Page 33: OSC Tokyo/Spring NETMF 170311

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

ドット NETまいくろバンザイ .NET の今後

2017/3/11 ドット NETまいくろバンザイ倶楽部 33

Page 34: OSC Tokyo/Spring NETMF 170311

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

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

342017/3/11

補足(1) ちょうど3月 11 日のセミナー後  NET-MF Mailing List 宛

にSteve Steve Maillet 氏から届いた某質問への回答メール

要約 NETMF は GitHub の dotnet organization アカウントには属していませんが、 .NET Foundation の一部になっています。→つまり .NET Foundation が無くならない限り継続するということだろう。

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

Subject: Re: [NETMF/netmf-interpreter] Is .Net MF being discontinued?NETMF is already a apart of .NET Foundation.Due to historical reasons it isn't under the GitHub dotnet organization.(It is possible to change that, though it isn't without potential disruptions as all local repos would need to reset their upstream "remote". Thus far there, hasn't been a significant driver for doing that. But if a rationale argument can be made and enough regular users agree it's not out of the question to shift that.

Page 35: OSC Tokyo/Spring NETMF 170311

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

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

352017/3/11

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

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

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

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

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

Page 36: OSC Tokyo/Spring NETMF 170311

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

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

362017/3/11

まとめ はじめに:なぜ興味を持ったか? .NET Micro Framework とは? LLILUM 今後はどうなる? 補足情報

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