2014 1018 OSC-Fall Tokyo NETMF

35
オープンソースカンファレンス 2014 Tokyo/Fall 2014/10/18 ドットNETまいくろバンザイ倶楽部 1 ドットNETまいくろ バンザイ倶楽部 日高亜友 - IoT 時代の組み込みOSの主役 - [email protected] オープンソースになったマイコン開発環境 .NET Micro Frameworkの紹介。 ドットNET まいくろ バンザイ

description

オープンソースになったマイコン開発環境 .NET Micro Frameworkの新プラットフォームへの移植手順を解説。 IoT時代の組み込みOSの主役 ドットNETまいくろバンザイ倶楽部

Transcript of 2014 1018 OSC-Fall Tokyo NETMF

Page 1: 2014 1018 OSC-Fall Tokyo NETMF

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

2014/10/18 ドットNETまいくろバンザイ倶楽部 1

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

日高亜友

- IoT 時代の組み込みOSの主役 -

[email protected]

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

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

Page 2: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 2

セッション内容

.NET Micro Frameworkとは?

新プラットフォームへの移植

組み込みアプリケーション開発とIoT

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

Page 3: 2014 1018 OSC-Fall Tokyo NETMF

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

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

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

.NET Micro Frameworkとは?

Page 4: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 4

.NET Micro Framework とは?

Microsoft Research開発の組み込みOS

Visual C# / Visual Basicで開発した IL

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

豊富なドライバとライブラリを標準装備

オープンソース・ライセンスで公開(Apache V2)

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

.NET Micro Framework (NETMF) 移植済みSOC

業務アプリケーション・システム応用事例

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

Page 5: 2014 1018 OSC-Fall Tokyo NETMF

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

2012年 V4.3 for Visual Studio 2012

2014年 V4.3-R2β for Visual Studio 2013/20142014/10/18 5ドットNETまいくろバンザイ倶楽部

Page 6: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 6

NETMFの本質

本来は、Windows CE 未満のプラットフォーム用

組込みシステム向け製品となるはずだったOS

(かつては)移植キット販売済

(かつては)製品ライセンス販売予定

2010年にオープンソース化

Apache V2 ライセンス→無償で商用利用可能

競合OSの台頭

⇒製品相当の機能・性能・品質 を無料で公開

2014年末に何かが起こるかも?

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

Page 7: 2014 1018 OSC-Fall Tokyo NETMF

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

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

全体構成

2 種類の実装方法- Native Platform

- “OS on OS” solution

2014/10/18 7ドットNETまいくろバンザイ倶楽部

アプリケーション開発ライブラリ開発

プラットフォーム移植

CLR: Common Language Runtime

HAL: Hardware Abstraction Layer

PAL: Platform Abstraction Layer

Page 8: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ OSとしての提供機能

IL(.NETのアセンブリ)の実行環境 = TinyCLR

タイマ, 割り込みハンドラ, マルチスレッド,

スケジューラ

ブートローダ, 各種デバイスドライバ, リソースマネージャ

組み込み環境対応

MMU 不要

最小 64KB RAM / 256KB ROM (特別な環境)

標準サポート ARM7/9/Cortex-M3, Blackfin, SH-2/2A

サポート機能

ブートローダ, アプリケーションローダ, デバッガIF 2014/10/18 8ドットNETまいくろバンザイ倶楽部

Page 9: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 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まいくろバンザイ倶楽部

Page 10: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ プラットフォームとアプリケーション

自作ボードや未サポートボードに移植

CQ出版等の移植事例(参考資料)

周辺ハードウェアを自作して動作

容易に接続可能→.NET Gadgeteer

ライブラリやシステムを開発・改造

Emulatorの開発、独自モジュールの開発

連係システムやアプリケーションを開発

他のシステムとの接続

PC, Smart Phone, Cloud連係

2014/10/18 10ドットNETまいくろバンザイ倶楽部

Page 11: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 11

SDK vs. PK (Porting Kit)

SDK: 組み込みアプリケーション開発 アプリケーション開発に必須

Visual Studio / VC# Express に組み込んで使用

Simulator, Debugger, Deployment Tools を含む

PK: 動作プラットフォームの構築(移植) .NET Micro Framework の移植に必須

ほかにクロスコンパイラ(+デバッガ)が必須

ツール類を含めた全ソースコードが提供

ほとんどを C++ で記述 (一部アセンブラ, C, C#)ドットNETまいくろバンザイ倶楽部

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

Page 12: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 12ドットNETまいくろバンザイ倶楽部

新プラットフォームへの移植

Page 13: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ 移植方法の選択

Native実装 TinyCLR直接実装 VS. TinyBooter実装

TinyCLR / TinyBooterのメンテナンス手順が必須

他のブートローダ利用 U-Boot, T-Monitor (T-Engine)等

Network ブート

OS on OS

他のOSのアプリケーションとしてNETMFを実装

ソースコードが公開されているので実際にはどの様にでも作ることが可能

2014/10/18 13ドットNETまいくろバンザイ倶楽部

TinyBooter = NETMF専用ブートローダ

Monoへのエクスポート

Page 14: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 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まいくろバンザイ倶楽部

Page 15: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 15

移植前のチェック

ターゲット・プラットフォーム

RAM/RAM容量(ROM不足は RAMで代用可能)

CPU アーキテクチャ

gcc利用時の最低メモリ目安

RAM 256KB / ROM 512KB (Thumb / Thumb2 命令)

コンパイラとデバッガ

Windows上で動作するクロスコンパイラ

Windows上で動作する JTAG-ICE デバッガ

Native 実装 vs. “OS on OS” 実装

ターゲット・プラットフォームの適正ドットNETまいくろバンザイ倶楽部

Page 16: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 16

移植に必要な知識

組み込みシステム全般 割り込み処理, 割り込みVector, Cache, MMU, PLL

ブートローダ

移植対象のCPU, ターゲット・ボード データシート, 回路図, メモリマップ, クロック

ツール Toolchain(コンパイラ, アセンブラ, リンカ, ライブラリアン)

C, C++, CPUのアセンブラ命令, コマンドプロンプト, VB Script

デバッガ, JTAG ICE, Eclipse, OpenOCD+GDB

OSアーキテクチャとリソース管理 メモリ, タイマ, 割り込み, イベント

.NET Framework と CLR

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

Page 17: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 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まいくろバンザイ倶楽部

Page 18: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 18

ハードウェア環境とツール

JTAG ICE, またはOpenOCD ICE

対応CPUやボード構成をよく確認する

Flash ROM書き込みツール(必要に応じて)

ブートローダ開発環境(必要に応じて)

評価ボード(ターゲットが利用できない場合)

測定器、信号観測ツール

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

Page 19: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 19

移植の主要作業

開発環境構築と基本設計

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

メモリ割当て設計&Scatter ファイル設定

Solution の作成

ビルド&デバッグ

NativeSampleを動作させる

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

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

TinyCLRの動作

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

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

Page 20: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 20

InterOpの実装

NETMF標準APIに無いOS機能をアプリケーションから呼び出す

使用方法

標準APIに無いドライバの実装

例:USB Host ドライバ, Flash ROM管理,

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

実装方法 C#でAPIを記述、コードをC/C++/アセンブラで記述

パラメータ、リターン値、非同期処理、イベントが利用可能

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

Page 21: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 ドットNETまいくろバンザイ倶楽部 21

ビルド&デバッグ

NativeSample

Native Code での”Hello world” 表示出力

ビルド環境の検証(自由にカスタマイズ可能)

ドライバ類の初期化&動作の検証

TinyCLR

.NET Micro Frameworkの移植対象・本体

実行にはIL (コンパイル済アセンブリ)が必須

Product\Sampleディレクトリ(HelloWorld, Network など)

TinyBooter

NETMF 純正ブートローダ(MFDepoy IF)

• メモリ管理• 割り込み• タイマー• 232C/USB

ドライバ

Page 22: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 ドットNETまいくろバンザイ倶楽部 22

TinyCLRとアセンブリの実行動作

アセンブリ検索

初期化

Debugger 接続

アセンブリのロード

アセンブリの実行

起動

デプロイ後

無し

Flash ROM

読み出し・書き込み

‘F5’ キーでビルド、デプロイ、実行、デバッグ

Page 23: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 23

考察:Native 環境への移植

利点

全ソースコードが用意されている

ブートローダ, CPU初期化, リソース管理

動作している実機サンプルが入手し易い

割り込み / イベント処理が実装し易い

欠点

未対応アーキテクチャには移植し難い

クロスコンパイル, デバッグ環境を手当てする必要

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

Page 24: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 24

考察: OS on OS 環境への移植

利点

OSが用意している開発環境を流用可能

JTAG-ICEの代わりにデバッガで代用可能

1回移植すれば、同一OSへの移植が容易

欠点

参考にするソースコードが用意されていない

動作している実機サンプルが入手し難い

OS依存APIを変換する作業(PAL層開発)が必須(Timer, Event, Select, Socket, …)

ドライバの移植数、作業工数はNativeよりも多いドットNETまいくろバンザイ倶楽部

参考: .NET Micro Framework for Linux

Page 25: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 25ドットNETまいくろバンザイ倶楽部

組み込みアプリケーション開発

Page 26: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 26

アプリケーション開発手順

事前調査・基本設計

Interface 仕様の確認 (H/W, S/W, Network, …)

コーディング

Full .NET 環境用コードの流用

ソースコード・デバッグ

エミュレータ, オンライン・デバッガ

Full .NET 環境でのデバッグ (ソース流用化)

デプロイ

Flash ROM焼き, 配布用署名付きコード生成

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

.NET Gadgeteeerで簡単に!

Page 27: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 27

デバッガ インターフェース

デバッガとの接続手段:3種類から選択

独自ハードウエア開発の注意点

OS更新用のデバッガ(ブート)・スイッチの必須

通常はGPIOタクトSW(ボタン), DIP-SW等を使用

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

ドライバ

ドライバ

ドライバ

Serial (RS232C)

USB

LAN (TCP/IP)Host PC Target

Page 28: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ .NET Gadgeteer とは?

2014/10/18 ドットNETまいくろバンザイ倶楽部 28

Microsoftリサーチが開発している.NET Micro Framework ベース組み込みシステム統合開発環境とそれを構成するモジュール製品群

MMU無しマイコン上でVisual Studioで開発した.NETアセンブリ(中間コード)をインタプリタ実行

GUI操作で自動的に

初期化コードとクラスライブラリを追加

.NET MF

OS / Driver

Interpreter

App. / Lib.

Gadgeteer

Page 29: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ .NET Gadgeteer とは?

2014/10/18 ドットNETまいくろバンザイ倶楽部 29

具体的には次のもの ハードウェア

専用メインボード、専用モジュール群、開発環境としてのWindows PC

ソフトウェア ROM化されたOS、組み込み用各種ドライバとライブラリ、

Visual Studio用Plug In(ライブラリとGUIツール、シミュレータ)

新規モジュール開発やカスタマイズ可能 オープンソース

Page 30: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18

.NET Gadgeteer とは?

C#/VB言語レベルでライブラリと豊富なミドルウェアを提供 プロトコル、グラフィック

ファイルシステム

サービス、マルチスレッド

10種以上のCPUボードと100種以上のアクチュエータ,センサー, ネットワークアダプタ,コネクティビティ,ディスプレイ等のモジュールを提供

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

Page 31: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ IoT (Internet of Things)

IoT と .NET Micro Framework

2010年12月

NETMF搭載FEZ Panda Internet of Things Kit販売開始Network + LED + Switch + Sensor

2014/10/18 31ドットNETまいくろバンザイ倶楽部

Page 32: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ IoT Internet of Things

デバイスとITの架け橋

http://blogs.msdn.com/b/hirosho/

Internet Of Things ハンズオン

http://aka.ms/IoTHandsOn

Microsoft Azure モバイルサービスとセンサー類を接続

IoT 入門キット

ガジェッター IoT 入門キット

EnOcean IoT 入門キット2014/10/18 32ドットNETまいくろバンザイ倶楽部

Page 33: 2014 1018 OSC-Fall Tokyo NETMF

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

ドットNETまいくろバンザイ IoT入門キット

IoT 入門キット

ガジェッター IoT 入門キット

EnOcean IoT 入門キット

2014/10/18 33ドットNETまいくろバンザイ倶楽部

Page 34: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 34

参考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

https://www.ghielectronics.com/

http://tinyclr.jp/

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

Page 35: 2014 1018 OSC-Fall Tokyo NETMF

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

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

2014/10/18 35

まとめとFacebook Group

.NET Micro Frameworkとは?

.NET Micro Framework (英語)

新プラットフォームへの移植 .NET Micro Framework Porting勉強会 (日本語)

組み込みアプリケーション開発とIoT .NET Micro Framework/Gadgeteer 作品自慢(日本語)

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

興味がある方、是非facebook groupにご参加ください!