osc tokyo/fall netmf 161105
TRANSCRIPT
オープンソースカンファレンス 2016 Tokyo/Fall
2016/11/5 ドット NET まいくろバンザイ倶楽部 1
ドット NET まいくろ バンザイ倶楽部日高亜友
- V4.4 リリースと最新情報 , LLILUM -
オープンソースになったマイコン開発環境.NET Micro Framework の紹介。
ドット NETまいくろバンザイ
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
22016/11/5
セッション内容
.NET Micro Framework とは?
新プラットフォームへの移植と V4.4 リリース
LLILUM Visual Studio / C# で
mbed のアプリケーション開発とデバッグ
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
32016/11/5 ドット NETまいくろバンザイ倶楽部
.NET Micro Framework とは?
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 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 万円
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
62016/11/5
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
GitHubNETMF / 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 RuntimeHAL: Hardware Abstraction LayerPAL: 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まいくろバンザイ
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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
プラットフォームとアプリケーション
自作ボードや未サポートボードに移植 CQ 出版等の移植事例(参考資料)
周辺ハードウェアを自作して動作 容易に接続可能→ .NET Gadgeteer
ライブラリやシステムを開発・改造 Emulator の開発、独自モジュールの開発
連係システムやアプリケーションを開発 他のシステムとの接続
PC, Smart Phone, Cloud 連係
2016/11/5 11ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ倶楽部
バージョンを合わせる必要がある
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
132016/11/5
移植の主要作業 開発環境構築と基本設計
環境変数設定&クロス開発用ビルドスクリプト作成
メモリ割当て設計& Scatter ファイル設定 Solution の作成 (手作業)
ビルド&デバッグ NativeSample を動作させる
ブートローダ , 初期化処理 (Clock, Cache, MMU, PLL)
ドライバ , PAL IF (Flash ROM ドライバ開発必須 , UART)
TinyCLR の動作 TinyBooter, アプリケーション・ロードとデバッグ IF
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
142016/11/5
InterOp の実装 NETMF 標準 API に無い OS 機能を
アプリケーションから呼び出す 使用方法
標準 API に無いドライバの実装 例: USB Host ドライバ , Flash ROM 管理 ,
クリティカルな処理を C またはアセンブラで記述してアプリケーションから呼び出す
実装方法 C# で API を記述、コードを C/C++/ アセンブラで記述 パラメータ、リターン値、非同期処理、イベントが利
用可能 ドット NETまいくろバンザイ倶楽部
OS 移植の醍醐味
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
152016/11/5 ドット 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 Branch2016/11/5 16ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
182016/11/5
V4.4 が動作するボード PK 標準サポートボード
STM32F4Discovery
STM32F429Discovery
KEIL MCBSTM32F400
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
192016/11/5
V4.4 移植事例 関本健太郎氏の移植成果
GR-Peach Nucleo STM32F401 Nucleo STM32L476RG
ドット NETまいくろバンザイ倶楽部
Facebook のNETMF on mbed 準備会
で公開
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
202016/11/5
最近の状況
ドット NETまいくろバンザイ倶楽部
開発が停滞気味 派生プロジェクト .NET Gadgeteer の実質開発
中止 STM32F429Discovery関連が9月に追加・変更
されたのが最後 原因
IoT ブームに乗り遅れた? Raspberry Pi / Raspbian の普及 Windows 10 IoT Core の登場 その他の新ボードの登場 IoT ブームで開発者の興味がセンサーや無線に
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
212016/11/5 ドット NETまいくろバンザイ倶楽部
LLILUM
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ GitHub / llilum
https://github.com/NETMF/llilum
GitHubNETMF / llilum
2016/11/5 23ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ
292016/11/5
まとめの前に IoT時代の組み込み技術者の心構え
オープンソースに関する広い知識と経験ライセンスGitHubコントリビュート
コミュニケーションコミュニティ活動オンライン・オフライン・イベント英語力+英語版の開発環境
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2016 Tokyo/Fall
ドット NETまいくろバンザイ
312016/11/5
まとめ
.NET Micro Framework とは?
新プラットフォームへの移植と V4.4 リリース
LLILUM
ドット NETまいくろバンザイ倶楽部