Upload
atomu-hidaka
View
157
Download
4
Embed Size (px)
Citation preview
オープンソースカンファレンス 2015 Tokyo/Spring
2015/2/27 ドット NET まいくろバンザイ倶楽部 1
ドット NET まいくろ バンザイ倶楽部日高亜友
- RZ マイコン搭載 GR-Peach を始めとする新しい流れ -
オープンソースになったマイコン開発環境.NET Micro Framework の紹介。
ドット NETまいくろバンザイ
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
22015/2/27
セッション内容
.NET Micro Framework とは?
新プラットフォームへの移植
組み込みアプリケーション開発と IoT 開発 GR-Peach への移植 参加者募集!
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
32015/2/27 ドット NETまいくろバンザイ倶楽部
.NET Micro Framework とは?
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
42015/2/27
.NET Micro Framework とは? 元々は Microsoft Research 開発の組み込み OS Visual C# / Visual Basic で開発した IL
.NET アセンブリ を中間コードインタプリタで実行
豊富なドライバとライブラリを標準装備 オープンソース・ライセンスで公開 (Apache
V2) 30 種以上のプラットフォームに移植されて動
作 .NET Micro Framework (NETMF) 移植済み SOC 業務アプリケーション・システム応用事例ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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/20152015/2/27 5ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
62015/2/27
NETMF の本質 本来は、 Windows CE 未満のプラット
フォーム用 組込みシステム向け製品となるはずだった OS 移植キット販売、製品ライセンス販売予定
2010 年にオープンソース化 Apache V2 ライセンス→無償で商用利用可能 競合 OS の台頭⇒ 製品相当の機能・性能・品質 を無料で公開
2015 年 正式サポート製品 GR-Peach 国内販売 国産製品化第 1 号 ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ アーキテクチャ
全体構成
2 種類の実装方法 - Native Platform - “OS on OS” solution
2015/2/27 7ドット NETまいくろバンザイ倶楽部
アプリケーション開発
ライブラリ開発プラットフォーム移
植
CLR: Common Language RuntimeHAL: Hardware Abstraction LayerPAL: Platform Abstraction Layer
オープンソースカンファレンス 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 製コンパイラ利用時のみ!
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
92015/2/27
ドライバとサービス
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まいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
プラットフォームとアプリケーション
自作ボードや未サポートボードに移植 CQ 出版等の移植事例(参考資料)
周辺ハードウェアを自作して動作 容易に接続可能→ .NET Gadgeteer
ライブラリやシステムを開発・改造 Emulator の開発、独自モジュールの開発
連係システムやアプリケーションを開発 他のシステムとの接続
PC, Smart Phone, Cloud 連係
2015/2/27 10ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
112015/2/27
SDK vs. PK (Porting Kit) SDK: 組み込みアプリケーション開発
アプリケーション開発に必須 Visual Studio / VC# Express に組み込んで使用 Simulator, Debugger, Deployment Tools を含む
PK : 動作プラットフォームの構築(移植) .NET Micro Framework の移植 に必須 ほかに クロスコンパイラ(+デバッガ)が必
須 ツール類を含めた全ソースコードが提供 ほとんどを C++ で記述 (一部アセンブラ , C,
C# )ドット NETまいくろバンザイ倶楽部
バージョンを合わせる必要がある
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
122015/2/27 ドット NETまいくろバンザイ倶楽部
新プラットフォームへの移植と IoT 開発
オープンソースカンファレンス 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 へのエクスポート
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
142015/2/27
サポート・プラットフォーム 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
152015/2/27
移植前のチェック ターゲット・プラットフォーム
RAM/RAM 容量( ROM 不足は RAM で代用可能)
CPU アーキテクチャ gcc 利用時の最低メモリ目安
RAM 256KB / ROM 512KB (Thumb / Thumb2 命令 )
コンパイラとデバッガ Windows 上で動作するクロスコンパイラ Windows 上で動作する JTAG-ICE デバッガ
Native 実装 vs. “OS on OS” 実装 ターゲット・プラットフォームの適正ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
162015/2/27
移植に必要な知識 組み込みシステム全般
割り込み処理 , 割り込み Vector, Cache, MMU, PLL ブートローダ
移植対象の CPU, ターゲット・ボード データシート , 回路図 , メモリマップ , クロック
ツール Toolchain (コンパイラ , アセンブラ , リンカ , ライブラリ
アン)C, C++, CPU のアセンブラ命令 , コマンドプロンプト , VB Script
デバッガ , JTAG ICE, Eclipse, OpenOCD+GDB
OS アーキテクチャとリソース管理 メモリ , タイマ , 割り込み , イベント .NET Framework と CLR
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
172015/2/27
ソフトウェア環境とツール 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
182015/2/27
ハードウェア環境とツール JTAG ICE, または OpenOCD ICE
対応 CPU やボード構成をよく確認する Flash ROM書き込みツール(必要に応じて) ブートローダ開発環境(必要に応じて) 評価ボード(ターゲットが利用できない場合) 測定器、信号観測ツール
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
192015/2/27
移植の主要作業 開発環境構築と基本設計
環境変数設定&クロス開発用ビルドスクリプト作成
メモリ割当て設計& Scatter ファイル設定 Solution の作成
ビルド&デバッグ NativeSample を動作させる
ブートローダ , 初期化処理 (Clock, Cache, MMU, PLL)
ドライバ , PAL IF (Flash ROM ドライバ開発必須 , UART)
TinyCLR の動作 TinyBooter, アプリケーション・ロードとデバッグ IF
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
202015/2/27
InterOp の実装 NETMF 標準 API に無い OS 機能を
アプリケーションから呼び出す 使用方法
標準 API に無いドライバの実装 例: USB Host ドライバ , Flash ROM管理 ,
クリティカルな処理を C またはアセンブラで記述してアプリケーションから呼び出す
実装方法 C# で API を記述、コードを C/C++/ アセンブラで記述 パラメータ、リターン値、非同期処理、イベントが利
用可能 ドット NETまいくろバンザイ倶楽部
OS 移植の醍醐味
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
212015/2/27 ドット NETまいくろバンザイ倶楽部
ビルド & デバッグ NativeSample
Native Code での” Hello world” 表示出力 ビルド環境の検証(自由にカスタマイズ可能) ドライバ類の初期化 & 動作の検証
TinyCLR .NET Micro Framework の移植対象・本体 実行には IL (コンパイル済アセンブリ)が必須
Product\Sample ディレクトリ( HelloWorld, Network など)
TinyBooter NETMF 純正ブートローダ( MFDepoy IF )
• メモリ管理• 割り込み• タイマー• 232C/USB
ドライバ
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
222015/2/27
考察: Native 環境への移植 利点
全ソースコードが用意されている ブートローダ , CPU初期化 , リソース管理
動作している実機サンプルが入手し易い 割り込み / イベント処理が実装し易い
欠点 未対応アーキテクチャには移植し難い クロスコンパイル , デバッグ環境を手当てする
必要
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
232015/2/27
考察: OS on OS 環境への移植 利点
OS が用意している開発環境を流用可能 JTAG-ICE の代わりにデバッガで代用可能 1回移植すれば、同一 OS への移植が容易
欠点 参考にするソースコードが用意されていない 動作している実機サンプルが入手し難い OS依存 API を変換する作業( PAL層開発)が
必須( Timer, Event, Select, Socket, … )
ドライバの移植数、作業工数は Nativeよりも多い
ドット NETまいくろバンザイ倶楽部
参考: .NET Micro Framework for Linux
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
252015/2/27
アプリケーション開発手順 事前調査・基本設計
Interface 仕様の確認 (H/W, S/W, Network, …) コーディング
Full .NET 環境用コードの流用 ソースコード・デバッグ
エミュレータ , オンライン・デバッガ Full .NET 環境でのデバッグ (ソース流用化)
デプロイ Flash ROM焼き , 配布用署名付きコード生成
ドット NETまいくろバンザイ倶楽部
.NET Gadgeteeerで簡単に!
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
262015/2/27
デバッガ インターフェース デバッガとの接続手段: 3 種類から選択
独自ハードウエア開発の注意点 OS更新用のデバッガ(ブート)・スイッチの
必須通常は GPIO タクト SW (ボタン) , DIP-SW 等を使
用 ドット NETまいくろバンザイ倶楽部
ドライバ
ドライバ
ドライバ
Serial (RS232C)
USB
LAN (TCP/IP)Host PC Target
オープンソースカンファレンス 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
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ .NET Gadgeteer とは?
2015/2/27 ドット NETまいくろバンザイ倶楽部 28
具体的には次のもの ハードウェア
専用メインボード、専用モジュール群、開発環境としての Windows PC
ソフトウェア ROM 化された OS 、組み込み用各種ドライバとライブラリ、
Visual Studio 用 Plug In (ライブラリと GUI ツール、シミュレータ)
新規モジュール開発やカスタマイズ可能 オープンソース
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
2015/2/27
.NET Gadgeteer とは?
C#/VB言語レベルでライブラリと豊富なミドルウェアを提供 プロトコル、グラフィック ファイルシステム サービス、マルチスレッド
10 種以上の CPU ボードと100 種以上のアクチュエータ ,センサー , ネットワークアダプタ ,コネクティビティ ,ディスプレイ等のモジュール を提供
ドット NETまいくろバンザイ倶楽部 29
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ IoT入門キット事例 IoT 入門キット
ガジェッター IoT 入門キット EnOcean IoT 入門キット
2015/2/27 30ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ GR-Peach
特長 RZ/A1H 搭載 ARM Cortex-A9 Core 400MHz, 10MB RAM, 8MB FLASH Arduino互換ピンアサイン&ピンソケット豊富な各種シールドと接続可能
mbed 対応
2015/2/27 31ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ NETMF for mbed
mbed 対応の GR-Peach 上で.NET Micro Framework 及び .NET Gadgeteerを移植して動作させよう!
2015/2/27 33ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ NETMF for mbed 募集 賛同者、協力者、開発者 募集中!
Visual Studio と GR-Peach で組み込み開発 GR-Peach への移植の作業分担 IoT 学習用教材の開発、活用 国産 MCU RZ マイコンと
.NET Micro Framework の普及促進と宣伝
2015/2/27 35ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 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まいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
372015/2/27
まとめ
.NET Micro Framework とは?
新プラットフォームへの移植
組み込みアプリケーション開発と IoT 開発 GR-Peach への移植 参加者募集!
ドット NETまいくろバンザイ倶楽部
オープンソースカンファレンス 2015 Tokyo/Spring
ドット NETまいくろバンザイ
382015/2/27
参考 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まいくろバンザイ倶楽部