オープンソースカンファレンス 2016 Tokyo/Fall
2016/11/5 ドットNETまいくろバンザイ倶楽部 1
ドットNETまいくろ バンザイ倶楽部
日高亜友
- V4.4 リリースと最新情報, LLILUM -
info@devdrv.co.jp
オープンソースになったマイコン開発環境
.NET Micro Frameworkの紹介。
ドットNET
まいくろ
バンザイ
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 2
セッション内容
 .NET Micro Frameworkとは?
 新プラットフォームへの移植とV4.4リリース
 LLILUM
 Visual Studio / C#で
mbedのアプリケーション開発とデバッグ
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 3ドットNETまいくろバンザイ倶楽部
.NET Micro Frameworkとは?
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 4
.NET Micro Framework とは?
 元々はMicrosoft Research 開発の組み込みOS
 Visual C# / Visual Basicで開発した IL
.NET アセンブリ を中間コードインタプリタで実行
 豊富なドライバとライブラリを標準装備
 オープンソース・ライセンスで公開 (Apache V2)
 30種以上のプラットフォームに移植されて動作
 .NET Micro Framework (NETMF) 移植済みSOC
 業務アプリケーション・システム応用事例
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット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
 2015年 V4.4 for Visual Studio 2015
 リポジトリ: CodePlex →GitHub
2016/11/5 5ドットNETまいくろバンザイ倶楽部
開発キット
約30万円
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 6
NETMFの本質
 元Windows CE 未満 MMU無しプラットフォーム
組込み製品となるはずだった OS
 移植キット販売、製品ライセンス販売予定 だった
 2010年にオープンソース化
 Apache V2 ライセンス→無償で商用利用可能
⇒ 製品相当の機能・性能・品質 を無料で公開
 2015年 正式サポート製品 GR-Peach 国内販売
 国産製品化第1号
 2015年にGitHubへ移行、コミュニティ化推進
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ GitHub / netmf-interpreter
 https://github.com/NETMF/netmf-interpreter
GitHub
NETMF
/ netmf-interpreter
2016/11/5 7ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ アーキテクチャ
 全体構成
2 種類の実装方法
- Native Platform
- “OS on OS” solution
2016/11/5 8ドットNETまいくろバンザイ倶楽部
アプリケーション開発
ライブラリ開発
プラットフォーム移植
CLR: Common Language Runtime
HAL: Hardware Abstraction Layer
PAL: Platform Abstraction Layer
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 10
ドライバとサービス
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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ プラットフォームとアプリケーション
 自作ボードや未サポートボードに移植
 CQ出版等の移植事例(参考資料)
 周辺ハードウェアを自作して動作
 容易に接続可能→.NET Gadgeteer
 ライブラリやシステムを開発・改造
 Emulatorの開発、独自モジュールの開発
 連係システムやアプリケーションを開発
 他のシステムとの接続
 PC, Smart Phone, Cloud連係
2016/11/5 11ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 12
SDK vs. PK (Porting Kit)
 SDK: 組み込みアプリケーション開発
 アプリケーション開発に必須
 Visual Studio / VC# Express に組み込んで使用
 Simulator, Debugger, Deployment Tools を含む
 PK: 動作プラットフォームの構築(移植)
 .NET Micro Framework の移植 に必須
 ほかに クロスコンパイラ(+デバッガ)が必須
 ツール類を含めた全ソースコードが提供
 ほとんどを C++ で記述 (一部アセンブラ, C, C#)
ドットNETまいくろバンザイ倶楽部
バージョンを
合わせる必要がある
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 13
移植の主要作業
 開発環境構築と基本設計
 環境変数設定&クロス開発用ビルドスクリプト作成
 メモリ割当て設計&Scatter ファイル設定
 Solution の作成 (手作業)
 ビルド&デバッグ
 NativeSample を動作させる
 ブートローダ, 初期化処理 (Clock, Cache, MMU, PLL)
 ドライバ, PAL IF (Flash ROMドライバ開発必須, UART)
 TinyCLR の動作
 TinyBooter, アプリケーション・ロードとデバッグIF
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 14
InterOpの実装
 NETMF標準APIに無いOS機能を
アプリケーションから呼び出す
 使用方法
 標準APIに無いドライバの実装
 例:USB Host ドライバ, Flash ROM管理,
 クリティカルな処理をCまたはアセンブラで記述して
アプリケーションから呼び出す
 実装方法
 C#でAPIを記述、コードをC/C++/アセンブラで記述
 パラメータ、リターン値、非同期処理、イベントが利用可能
ドットNETまいくろバンザイ倶楽部
OS 移植の醍醐味
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 15ドットNETまいくろバンザイ倶楽部
V4.4 対応版
新プラットフォームへの移植
オープンソースカンファレンス 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 Branch
2016/11/5 16ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 17
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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 18
V4.4 が動作するボード
 PK標準サポートボード
 STM32F4Discovery
 STM32F429Discovery
 KEIL MCBSTM32F400
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 19
V4.4 移植事例
 関本健太郎氏の移植成果
 GR-Peach
 Nucleo STM32F401
 Nucleo STM32L476RG
ドットNETまいくろバンザイ倶楽部
Facebookの
NETMF on mbed 準備会
で公開
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 20
最近の状況
ドットNETまいくろバンザイ倶楽部
 開発が停滞気味
 派生プロジェクト .NET Gadgeteer の実質開発中止
 STM32F429Discovery関連が9月に追加・変更
されたのが最後
 原因
 IoTブームに乗り遅れた?
 Raspberry Pi / Raspbianの普及
 Windows 10 IoT Coreの登場
 その他の新ボードの登場
 IoTブームで開発者の興味がセンサーや無線に
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 21ドットNETまいくろバンザイ倶楽部
LLILUM
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 22
LLILUM とは?
 NETMFと同じ開発者が開発している
組込みアプリケーション実行環境
 Visual C# で開発したUWP (NETMF)互換の ILを
LLVMベースの.NET コンパイラでコンパイル後
mbed アプリケーション (.binを作成) 実行
 豊富なサービス
 UWP準拠のクラスライブラリを標準装備
 mbedでC#のソースコード・デバッグが可能
 Visual Studioにgdbデバッグ・インターフェース追加
- MIEngine
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ GitHub / llilum
 https://github.com/NETMF/llilum
GitHub
NETMF
/ llilum
2016/11/5 23ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 24
LLILUM のしくみ
動作概要図
ドットNETまいくろバンザイ倶楽部
C# Application C# Library
mbed-bin
C# VS Compiler
ELF
LLVM Transformer
MSIL
IR
gcc
mbed Converter
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 25
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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ LLILUMの状況(続き)
 対応ボード
 NXP LPC1768 512KB/64KB (mbed)
 Freescale FRDM-K64F 1MB/256KB (mbed)
2016/11/5 ドットNETまいくろバンザイ倶楽部 26
オープンソースカンファレンス 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
オープンソースカンファレンス 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
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 29
まとめの前に
 IoT時代の組み込み技術者の心構え
 オープンソースに関する広い知識と経験
 ライセンス
 GitHub
 コントリビュート
 コミュニケーション
 コミュニティ活動
 オンライン・オフライン・イベント
 英語力+英語版の開発環境
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2017/3/11 30
補足
 実験用 LLILUM-SDKの公開先
 download
http://www.devdrv.co.jp/hidaka/files/llilum-160528.zip
 Blog
http://www.devdrv.co.jp/hidaka/node/62
 決してお勧めしません
 非常に不安定です
 自己責任でお願いします
ドットNETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドットNET
まいくろ
バンザイ
2016/11/5 31
まとめ
 .NET Micro Frameworkとは?
 新プラットフォームへの移植とV4.4リリース
 LLILUM
ドットNETまいくろバンザイ倶楽部

OSC Tokyo/Fall NETMF 161105