31
.NET micro FrameWork for TOPPERS .NET 基基@ 基基基基基 基基基基基基基基基 基基基基 基基基 基基基基基 () 基基基 @kaizen_nagoya TOPPERS 基基基基基基基基 基基基基基基 .NET 基 Microsoft 基基基基TOPPERS 基 TOPPERS 基基基基基基基基基基基基基

NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会

Embed Size (px)

Citation preview

Page 1: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.NET micro FrameWork for TOPPERS ( .NET 基礎) @ 基礎勉強会

名古屋市工業研究所工学博士・技術士(情報工学)小川清 @kaizen_nagoya

TOPPERSプロジェクトマスコットとばめ

.NET は Microsoft 社の商標、TOPPERS は TOPPERS プロジェクトの登録商標です。

Page 2: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

構成序章 .MISRA-C/C++ は C# への近道2 章 .NETframework とアーキテクト3 章 .TOPPERS アーキテクチャ4 章 .NET micro framwork と

TOPPERS の連携まとめと今後の課題

Page 3: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

序章 MISRA-C/C++ は C# への近道自己紹介今日の目標背景経緯

Page 4: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

自己紹介名古屋市工業研究所勤務TOPPERS プロジェクト理事SESSAME/MISRA-C 研究会 2012 準備

会岐阜大学非常勤講師Proof Café / TAPL 勉強会、名古屋ア

ジャイル勉強会、ういろ MUG 、 TeX ユーザ会参加者

Page 5: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

今日の目標

MISRA-C/C++ で関数プログラミングMISRA-C:2012 で C90/C99 両対応−>型の整

理.NET Framework に学ぶ組込のアーキテクチャ

◦C# 技術者に組込への道を.NET micro FrameWork と TOPPERS を連携

する活動.NET (micro) Framework のスレッドまわりの

勉強会を検討

Page 6: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.NET micro FrameWork 経緯

CQ 出版の付録基板に関本 健太郎さんが移植した .NET micro FrameWork をどう使うかの演習付きセミナを 2013 年 6 月松浦光洋さんを講師に名古屋市工業研究所で開催

SWEST で松浦光洋さんを講師に .NET micro FrameWork のセミナ

ET ロボコンで太田さんと審査員席で歓談OSC 東京 2013/fall で日高亜友さんと情報交換ET2013 TOPPERS ブースで関本健太郎さんと情

報交換来年、 .NET FrameWork と .NET micro

Frmework についての演習付きセミナを企画中

Page 7: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

TOPPERS アプリケーション開発・アイデアコンテスト 2013

アプリケーション開発部門◦ 銀賞: TOPPERS Realtime System Sample ( RSS )

LPCXpresso GPS Clock 中村晋一郎◦ 銅賞: Toppers_JSP と Scicos_lab による組込みメカト

ロニクス制御シミュレーション 塩出武◦ 銅賞: lwIP の移植 松浦光洋

活用アイデア部門◦ 銀賞: .NET micro FrameWork for TOPPERS 株式会

社デバイスドライバーズ 日高亜友◦ 銅賞: uIP による WEB サーバの開発 今西孝也(高知

県工業技術センター)

Page 8: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

背景名古屋市工業研究所でソフ

トウェアについて約 30 年取り組んで来た成果をまとめ、次の世代に引き継ぐ◦MS-DOS 版 VZ エディタ◦C 言語、 C++ 言語の部分集

合 (MISRA-C)TOPPERS プロジェクトが

10 年経った。次の 10 年に何をするとよいか。

Page 9: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

プログラミング言語経緯電総研の研究生 OBJ シンタックスチェッカ作成C 言語教育

◦C コンパイラ作成を題材◦The C Puzzle Book を題材

SESSAME/MISRA-C 研究会Event-B, Uppaal, SPIN,Alloy のセミナ実施Coq の勉強会 Proof Café 参加 , TAPL 勉強会

参加

Page 10: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

MISRA-C 履歴MISRA C:第一版 , 1998 C90 対応MISRA C:第二版 , 2004, C90 対応MISRA Autocode, 2007/2009MISRA C++ Guidelines for the

use of the C++ language in critical systems: 2008

MISRA C:第三版 , 2012, C90/C99 base

Page 11: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

MISRA Autocode MISRA AC INT: Introduction to the MISRA guidelines for the

use of automatic code generation in automotive systems, 2007.

MISRA AC TL: Modelling style guidelines for the application of TargetLink in the context of automatic code generation, November 2007.

MISRA AC AGC: Guidelines for the application of MISRA-C:2004 in the context of automatic code generation,November 2007.

MISRA AC GMG: Generic modelling design and style guidelines, May 2009.

MISRA AC SLSF: Modelling design and style guidelines for the application of Simulink and Stateflow, May 2009.

模擬試験の浮動小数点を自動生成で固定小数点に変換◦誤差・桁落ちを少なくするキャスト◦ 0割にならないように=>この規則ではできない=>他の検証、証明が必要

Page 12: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

MISRA-C/C++自動車向け、静的解析可能異なるCPUで同じ動作(未規定・未定義・処理系定義除外)◦関数プログラミングに近->副作用による値・制御変更小

動的記憶操作無。−>free無し。ポインタ無し。暗黙、明示な型変換で設計者の意図を外れない。例:2012年第三版◦指針1.1,プログラムの出力が依存する処理系定義の動作

を文書化し理解する。◦規則1.3, 未定義又は重大な未規定の動作が発生しない。◦指針4.8, 構造体または共用体へのポインタがコンパイル単位内で逆参照していない場合,オブジェクトの実装を隠蔽するとよい。<例次頁>

Page 13: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

//misrac.h #ifndef MISRAC_H #define MISRAC_H typedef struct OpaqueType * pOpaqueType; struct OpaqueType { //実装を記述 }; #endif

//Dir.4.8.c #include "misrac.h”

void f (void) { pOpaqueType pObject; pObject * GetObject(); //OpaqueType object UseObject { pObject); // Opaque Type利用 }

指針 4.8例 :OpaqueType

Page 14: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

Essential Type-MISRA-C:2012

第二版では潜在型 (Underlying type) と呼んでいた

CPU でレジスタ幅の拡張を想定した型規則 ?CPU でレジスタを bitifield で処理する際の型 ?演算、関数、マクロで暗黙、明示の型変換を説明

する際の用語Boolean

character singed unsigned enum<i> floating

_Bool char signed char unsigned charnamed enum float

    singed short unsigned short   double

    singed int unsigned int  long double

    signed long unsigned long    

   signed long long

unsigned long long    

Page 15: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

潜在型 (MISRA-C:2004:C90 対応 ) 型変換起因問題,変数等が適切な型で宣言していない問

題汎整数拡張の影響がないと仮定した場合の式の型汎整数拡張がない式の潜在型は C90 で規定する式の型汎整数拡張が発生する式で汎整数拡張の結果 int 型とな

る演算対象の潜在型は汎整数拡張前の式の型。例:二項演算子の演算対象 switch文の条件を表す括弧内の式の潜在型は汎整数拡張前の式の型.

汎整数拡張が発生する式の中で式の型が汎整数拡張の影響を受けない式の潜在型は C90 規定式の型.例:二項演算子 >,>=, <,<=,==, != を適用した結果の式の潜在型は int 型

汎整数拡張が発生する式の中で式の型が汎整数拡張の影響を受ける式の潜在型は汎整数拡張の影響を無視した型。例:二項演算子 *, /, %, +, -, &,^, | を適用した結果の式および , 条件演算子( ? : )の結果の式の潜在型.

Page 16: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

潜在型 (Underlying type) その21) 両演算対象の潜在型が等しい場合は , 演算対象の潜在

型2) 両演算対象の潜在型が整数型で大きさが異なる場合

は , 大きい方の演算対象の潜在型3) 両演算対象の潜在型が整数型で大きさが等しく符号属性が異なる(一方が符号無し整数型で他方が符号付き整数型)場合については,符号無しの演算対象の型

4) 一方の演算対象の潜在型が整数型で他方の演算対象の潜在型が浮動小数点型の場合は,浮動小数点型の演算対象の潜在型。例: 8 ビット符号無し整数型の変数 a と b の間で加算を行った場合,式「 a+ b」の潜在型は, 8 ビット符号無し整数 (式「 a + b」の実際の型は,汎整数拡張により int 型)

整数定数の潜在型はその定数を表現できる一番小さい型

Page 17: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

Effective type と演算子・演算対象

1, 制約破壊4,5,6,(8) 実装定義7, 未定義動作

Page 18: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

2 章 .NET Framework とアーキテクト.NET 基礎建築におけるアーキテクチャソフトウェアアーキテクチャマイクロソフト .NET FrameWork

アプリケーションアーキテクチャガイド2.0

Page 19: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.NET 基礎.NET Framework 1.0, 2002.NET Framework 2.0, 2005

◦.net micro framework 対応.NET Framework 3.0, 2006.NET Framework 4.0 2010

Page 20: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.net micro Framework 基礎256 KBytes of flash and 64 KBytes of

RAM. Ia subset of the .NET シミュレータデバッグ機能.net micro framework は .NET Framework

の部分集合−> .NET 基礎は .net micro framework

(最後の行は仮説 )

Page 21: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.NET Micro Framework for TOPPERS

© 日高亜友

Page 22: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

アーキテクトアーキテクトは、アーキテクチャを考え、設計する人。◦アーキテクチャは、建築における構造設計。◦ソフトウェアは、構造化プログラミング、抜

き差し可能部品で構造設計。

Page 23: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

ソフトウェアアーキテクチャ共通部分

◦時間:処理時間、通信時間◦空間:利用可能なメモリ、外部記憶◦論理的正確性◦再利用、変換可能性

個別◦サーバ・ホスト、センサ、クライアント◦書きやすさ、読みやすさ◦アナログ処理の模擬

Page 24: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

マイクロソフト .NET FrameWorkアプリケーションアーキテクチャガイド 2.0

http://www.microsoft.com/ja-jp/dev/2010/solutions/architecture/default.aspx

ハードウェア、ソフトウェアの進化に対応できる 機能要件と品質要件 再利用性と保守容易性

◦ サービス指向◦ ユーザ経験の

アーキテクトとして必要な事◦ どのような仮説を立てましたか。◦ 明示的または黙示的な要件は何ですか。◦ 主なリスクは何ですか。◦ リスクを軽減するために講じている対策は何ですか。

アーキテクチャ設計が不十分だと起こる事◦ 動作が不安定

処理時間のばらつき◦ 運用環境での配置が困難

資源不足◦ 管理が困難

© MS .NETFW AAG

Page 25: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

第 3 章 TOPPERSS のアーキテクチャ仮説:割り込み処理モデル要件: 16/32/64bitCPU 、C 言語、ログ出力リスク:時間遅れ、空間逸脱統合仕様書

◦過去の資産の継承◦再利用性◦アプリケーションプログラムに問題がある場合合理的な負担増で救済 リスク軽減 次表

Page 26: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

TOPPERS リスク軽減策種類 リスク軽減策1.ASP カーネル 割り込み処理モデル対応2.HRP カーネル メモリ保護機能の追加  オブジェクトアクセス保護機能の追加  ミューテックス機能の追加  オーバランハンドラ機能の追加3.FMP カーネル資源確保(マルチコア)4.PARK カーネル サービス・システム (OS)状態・時間保護5. SSP カーネル複雑さ、空間小6 ATK2 カーネル 自動車用7. TECS 静的8. TTSP 試験9. MISRA-C 対応 空間

Page 27: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

TOPPERSS アーキテクチャTECS ( TOPPERS Embedded Component System )仕様

静的生成と結合◦ 事前配置決定可能

初期化時間短縮粒度の小さいコンポーネント

TECS ジェネレータmruby on asp+tecs:

mruby VM を TECS コンポーネント化

TOPPERS/ASP+TECS:ET ロボコンプラットフォーム

Page 28: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

第4章 .NET FrameWork/.NET micro FrameWork との連携連携の前提.NET micro FrameWork にとって

TOPPERS のよいとこ

Page 29: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.NET FrameWork/.NET micro FrameWork との連携の前提

.NET FrameWork でそだった技術者が .NET micro FrameWork を利用

マイクロソフト .NET FrameWorkアプリケーションアーキテクチャガイド2.0 のまとめ方で TOPPERSもまとめる

.NET micro FrameWork と TOPPERSの同時構築

Page 30: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

.NET micro FrameWork にとってTOPPERS のよいとこ

多くの CPU の移植があり、同等な初期化を比較可( ASP の例 )◦V850, H8, SH1/2A/3/4, ARM,Cortex-M3,

RX, microBlaze,M16C/32C, M32R, Nios Cortex-M3 は Startup.c は ASP, SSPほぼ同一

いくつかのコンパイラに対応 (ASP の例 )◦GCC, HEW, NC30(8), RXC, Visual

Studio.

Page 31: NET micro  FrameWork for TOPPERS  (.NET基礎)@基礎勉強会

まとめと今後の展望MISRA-C/C++ は関数プログラミングの入口Effective type(Misra-c:2012,C90&C99) と

Undelay type(MISRA-C:2004,C90) の検討.NET の基礎は .NET micro FrameworkだC# 技術者も組込への重要性を確認.NET micro FrameWork と TOPPERS の連携

で TOPPERS プロジェクトの次のよい 10 年を