Más contenido relacionado
La actualidad más candente (20)
Similar a 2015 0227 OSC-Spring Tokyo NETMF (20)
2015 0227 OSC-Spring Tokyo NETMF
- 4. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 4
.NET Micro Framework とは?
元々はMicrosoft Research 開発の組み込みOS
Visual C# / Visual Basicで開発した IL
.NET アセンブリ を中間コードインタプリタで実行
豊富なドライバとライブラリを標準装備
オープンソース・ライセンスで公開(Apache V2)
30種以上のプラットフォームに移植されて動作
.NET Micro Framework (NETMF) 移植済みSOC
業務アプリケーション・システム応用事例
ドットNETまいくろバンザイ倶楽部
- 5. オープンソースカンファレンス 2015 Tokyo/Spring
ドット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
2012年 V4.3 for Visual Studio 2012
2015年 V4.3-QFE2 for Visual Studio 2013/2015
2015/2/27 5ドットNETまいくろバンザイ倶楽部
- 7. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ アーキテクチャ
全体構成
2 種類の実装方法
- Native Platform
- “OS on OS” solution
2015/2/27 7ドットNETまいくろバンザイ倶楽部
アプリケーション開発
ライブラリ開発
プラットフォーム移植
CLR: Common Language Runtime
HAL: Hardware Abstraction Layer
PAL: Platform Abstraction Layer
- 8. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ OSとしての提供機能
IL(.NETのアセンブリ)の実行環境 = TinyCLR
タイマ, 割り込みハンドラ, マルチスレッド,
スケジューラ
ブートローダ, 各種デバイスドライバ, リソースマネージャ
組み込み環境対応
MMU 不要
最小 64KB RAM / 256KB ROM (特別な環境)
標準サポート ARM7/9/Cortex-M3, Blackfin, SH-2/2A
サポート機能
ブートローダ, アプリケーションローダ, デバッガIF
2015/2/27 8ドットNETまいくろバンザイ倶楽部
ARM製コンパイラ
利用時のみ!
- 9. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 9
ドライバとサービス
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まいくろバンザイ倶楽部
- 10. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ プラットフォームとアプリケーション
自作ボードや未サポートボードに移植
CQ出版等の移植事例(参考資料)
周辺ハードウェアを自作して動作
容易に接続可能→.NET Gadgeteer
ライブラリやシステムを開発・改造
Emulatorの開発、独自モジュールの開発
連係システムやアプリケーションを開発
他のシステムとの接続
PC, Smart Phone, Cloud連係
2015/2/27 10ドットNETまいくろバンザイ倶楽部
- 11. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 11
SDK vs. PK (Porting Kit)
SDK: 組み込みアプリケーション開発
アプリケーション開発に必須
Visual Studio / VC# Express に組み込んで使用
Simulator, Debugger, Deployment Tools を含む
PK: 動作プラットフォームの構築(移植)
.NET Micro Framework の移植 に必須
ほかに クロスコンパイラ(+デバッガ)が必須
ツール類を含めた全ソースコードが提供
ほとんどを C++ で記述 (一部アセンブラ, C, C#)
ドットNETまいくろバンザイ倶楽部
バージョンを
合わせる必要がある
- 13. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ 移植方法の選択
Native実装
TinyCLR直接実装 VS. TinyBooter実装
TinyCLR / TinyBooter のメンテナンス手順が必須
他のブートローダ利用
U-Boot, T-Monitor (T-Engine)等
Network ブート
OS on OS
他のOSのアプリケーションとしてNETMFを実装
ソースコードが公開されているので
実際にはどの様にでも作ることが可能
2015/2/27 13ドットNETまいくろバンザイ倶楽部
TinyBooter = NETMF専用ブートローダ
Monoへの
エクスポート
- 14. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 14
サポート・プラットフォーム
PK が用意しているサポート・テンプレート(標準サポート環境)
BF537 -- ADI Blackfin
EA_LPC2478 -- NXP LPC2478 (Embedded Artists LPC2478 4MB / 512KB)
iMXS -- MC9328MXS (32MB RAM / 8MB Flash ROM)
MCBSTM32E – STM32F103 Cortex-M3 (KEIL MCBSTM32E 8MB / 1MB)
MOTE2 -- Marvell PXA271 (Crossbow imote2)
PCM023 -- NXP LPC22xx ARM7
SAM7S_EK -- Atmel AT91SAM7S256 (64KB RAM / 256KB Flash ROM)
SAM7X_EK -- Atmel AT91SAM7X512 (128KB RAM / 512KB Flash ROM)
SAM9RL64 -- Atmel AT91SAM9RL64EK (64MB RAM / 256MB Flash ROM)
SAM9261_EK -- Atmel AT91SAM9261EK (64MB RAM / 256MB Flash ROM)
SH7216_RSK -- SH-2A 16MB SRAM / 1MB Flash ROM
SH7264_M3A_HS64 -- SH-2A 64MB RAM / 516MB Flash ROM
SH7264_RSK -- SH-2A 64MB RAM / 64MB Flash ROM
SH7619_EVB -- SH2 8MB RAM / 4MB Flash ROM
STM32Stamp -- STM32F103 Cortex-M3 (ET-STM32 Stamp 512KB RAM / 64KB)
Windows2 -- Windows Emulator
そのほか公開されている事例
STM32F4 -- STM32F4-Discovery, Netduino Plus, FEZ Cerberus Oberon microsystems
FM3/FM4 -- SK-FM4-U120-9B560, MB9BF506, CQ_FRK_FM3 ksekimoto
RX62
ドットNETまいくろバンザイ倶楽部
- 15. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 15
移植前のチェック
ターゲット・プラットフォーム
RAM/RAM容量(ROM不足は RAMで代用可能)
CPU アーキテクチャ
gcc利用時の最低メモリ目安
RAM 256KB / ROM 512KB (Thumb / Thumb2 命令)
コンパイラとデバッガ
Windows上で動作するクロスコンパイラ
Windows上で動作する JTAG-ICE デバッガ
Native 実装 vs. “OS on OS” 実装
ターゲット・プラットフォームの適正
ドットNETまいくろバンザイ倶楽部
- 16. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 16
移植に必要な知識
組み込みシステム全般
割り込み処理, 割り込みVector, Cache, MMU, PLL
ブートローダ
移植対象のCPU, ターゲット・ボード
データシート, 回路図, メモリマップ, クロック
ツール
Toolchain(コンパイラ, アセンブラ, リンカ, ライブラリアン)
C, C++, CPUのアセンブラ命令, コマンドプロンプト, VB Script
デバッガ, JTAG ICE, Eclipse, OpenOCD+GDB
OSアーキテクチャとリソース管理
メモリ, タイマ, 割り込み, イベント
.NET Framework と CLR
ドットNETまいくろバンザイ倶楽部
- 17. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 17
ソフトウェア環境とツール
Visual Studio 2012 (VC++ 2012 exp, VC# 2012 exp も可)
Windows SDK 8.0 (MSBuild)
.NET Micro Framework 4.3 SDK (QFE1)
.NET Micro Framework 4.3 Porting Kit (QFE1)
クロスコンパイラ, デバッガ
推奨は ARM RVDS, KEIL MDK
gccは CodeSourcery arm-2014.05-28 (GCC 4.8.3まで)
一部ソースコードが非対応なので自力で問題解決
クロス開発統合環境
Eclipse (自分で作る場合も…)
ソースコード管理
7zip, WinMerge, VSS, svn, …
ドットNETまいくろバンザイ倶楽部
- 19. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 19
移植の主要作業
開発環境構築と基本設計
環境変数設定&クロス開発用ビルドスクリプト作成
メモリ割当て設計&Scatter ファイル設定
Solution の作成
ビルド&デバッグ
NativeSample を動作させる
ブートローダ, 初期化処理 (Clock, Cache, MMU, PLL)
ドライバ, PAL IF (Flash ROMドライバ開発必須, UART)
TinyCLR の動作
TinyBooter, アプリケーション・ロードとデバッグIF
ドットNETまいくろバンザイ倶楽部
- 20. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 20
InterOpの実装
NETMF標準APIに無いOS機能を
アプリケーションから呼び出す
使用方法
標準APIに無いドライバの実装
例:USB Host ドライバ, Flash ROM管理,
クリティカルな処理をCまたはアセンブラで記述して
アプリケーションから呼び出す
実装方法
C#でAPIを記述、コードをC/C++/アセンブラで記述
パラメータ、リターン値、非同期処理、イベントが利用可能
ドットNETまいくろバンザイ倶楽部
OS 移植の醍醐味
- 21. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 ドットNETまいくろバンザイ倶楽部 21
ビルド&デバッグ
NativeSample
Native Code での”Hello world” 表示出力
ビルド環境の検証(自由にカスタマイズ可能)
ドライバ類の初期化&動作の検証
TinyCLR
.NET Micro Frameworkの移植対象・本体
実行にはIL (コンパイル済アセンブリ)が必須
ProductSampleディレクトリ(HelloWorld, Network など)
TinyBooter
NETMF 純正ブートローダ(MFDepoy IF)
• メモリ管理
• 割り込み
• タイマー
• 232C/USB
ドライバ
- 23. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 23
考察: OS on OS 環境への移植
利点
OSが用意している開発環境を流用可能
JTAG-ICEの代わりにデバッガで代用可能
1回移植すれば、同一OSへの移植が容易
欠点
参考にするソースコードが用意されていない
動作している実機サンプルが入手し難い
OS依存APIを変換する作業(PAL層開発)が必須
(Timer, Event, Select, Socket, …)
ドライバの移植数、作業工数はNativeよりも多い
ドットNETまいくろバンザイ倶楽部
参考: .NET Micro Framework for Linux
- 25. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 25
アプリケーション開発手順
事前調査・基本設計
Interface 仕様の確認 (H/W, S/W, Network, …)
コーディング
Full .NET 環境用コードの流用
ソースコード・デバッグ
エミュレータ, オンライン・デバッガ
Full .NET 環境でのデバッグ (ソース流用化)
デプロイ
Flash ROM焼き, 配布用署名付きコード生成
ドットNETまいくろバンザイ倶楽部
.NET Gadgeteeer
で簡単に!
- 27. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ .NET Gadgeteer とは?
2015/2/27 ドットNETまいくろバンザイ倶楽部 27
.NET Micro Framework ベース組み込みシステム統合
開発環境とそれを構成するモジュール製品群
MMU無しマイコン上でVisual Studioで開発した
.NETアセンブリ(中間コード)をインタプリタ実行
GUI操作で自動的に
初期化コードとクラスラ
イブラリを追加
.NET MF
OS / Driver
Interpreter
App. / Lib.
Gadgeteer
- 28. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ .NET Gadgeteer とは?
2015/2/27 ドットNETまいくろバンザイ倶楽部 28
具体的には次のもの
ハードウェア
専用メインボード、専用モジュール群、
開発環境としての Windows PC
ソフトウェア
ROM化されたOS、組み込み用各種ドライバとライブラリ、
Visual Studio用Plug In(ライブラリとGUIツール、シミュレータ)
新規モジュール開発やカスタマイズ可能
オープンソース
- 32. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ GR-Peach と IoT Kit
2014年8月
GR-Peach プレスリリース
2014年11月
第1回プロデューサミーティング 試用版配布
NETMF for mbed 活動開始
2015年3月15日
IoYTコミュニティー(仮称)キックオフ!
2015年3月21日
第3回プロデューサミーティング 最終発表会
2015/2/27 32ドットNETまいくろバンザイ倶楽部
- 34. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ NETMF for mbed 活動内容
関本健太郎氏(インターフェース誌で移植記事執筆)が
中心となって移植・評価中
情報交換
Facebook : NETMF on mbed 準備会
成果公開
Codeplex : NETMF for MBED
https://netmf4mbed.codeplex.com/
GitHub : http://ms-iotkithol-jp.github.io/
mbed : http://developer.mbed.org/teams/NETMF-on-mbed/
2015/2/27 34ドットNETまいくろバンザイ倶楽部
- 36. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ IoYT コミュニティー (仮称)
Internet of Your Things 活動
http://kokucheese.com/event/index/266921/
IoTあるじゃん(ALGYAN)
facebook: IoTあるじゃん(ALGYAN)本会
https://www.facebook.com/groups/ioytjp/
2015/2/27 36ドットNETまいくろバンザイ倶楽部
- 38. オープンソースカンファレンス 2015 Tokyo/Spring
ドットNET
まいくろ
バンザイ
2015/2/27 38
参考URL
.NET Micro Framework (NETMF)
http://www.netmf.com/
http://netmf.codeplex.com/
http://en.wikipedia.org/wiki/.NET_Micro_Framework
.NET Gadgeteer
http://www.netmf.com/gadgeteer/
https://gadgeteer.codeplex.com/
http://ja.wikipedia.org/wiki/.NET_Gadgeteer
ドットNETまいくろバンザイ倶楽部