.NET
microFrameWorkforTOPPERS
(.NET基礎)@基礎勉強会

名古屋市工業研究所
工学博士・技術士(情報工学)
小川清 @kaizen_nagoya
.NETはMicrosoft社の商標、
TOPPERSはTOPP...
構成
序章.MISRA-C/C++はC#への近道
 2章.NETframeworkとアーキテクト
 3章.TOPPERSアーキテクチャ
 4章.NET micro framworkとTOPPERSの
連携
 まとめと今後の課題

序章 MISRA-C/C++はC#への近
道
自己紹介
 今日の目標
 背景
 経緯

自己紹介
名古屋市工業研究所勤務
 TOPPERSプロジェクト理事
 SESSAME/MISRA-C研究会2012準備
会
 岐阜大学非常勤講師
 Proof Café / TAPL勉強会、名古屋ア
ジャイル勉強会、ういろMUG、TeX...
今日の目標
MISRA-C/C++で関数プログラミング
 MISRA-C:2012でC90/C99両対応−>型の整理
 .NET Frameworkに学ぶ組込のアーキテク
チャ


◦ C#技術者に組込への道を

.NET micro F...
.NET microFrameWork経緯








CQ出版の付録基板に関本 健太郎さんが移植
した.NET micro FrameWorkをどう使うかの
演習付きセミナを2013年6月松浦光洋さんを
講師に名古屋市工業研究...
TOPPERSアプリケーション開
発・アイデアコンテスト2013


アプリケーション開発部門
◦ 銀賞:TOPPERS RealtimeSystem Sample(RSS)
LPCXpresso GPS Clock 中村晋一郎
◦ 銅賞:T...
背景


名古屋市工業研究所でソフ
トウェアについて約30年取
り組んで来た成果をまと
め、次の世代に引き継ぐ
◦ MS-DOS版VZエディタ
◦ C言語、C++言語の部分集合
(MISRA-C)



TOPPERSプロジェクトが
10年...
プログラミング言語経緯
電総研の研究生OBJシンタッ
クスチェッカ作成
 C言語教育


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

SESSAME/MISRA-C研究会
 Event-B, Uppaal,...
MISRA-C 履歴
MISRA C:第一版, 1998 C90対応
 MISRA C:第二版, 2004, C90対応
 MISRA Autocode, 2007/2009
 MISRA C++ Guidelines for the u...
MISRA Autocode









MISRA AC INT: Introduction to the MISRA guidelines for the use of
automatic code generation ...
MISRA-C/C++


自動車向け、静的解析可能



異なるCPUで同じ動作(未規定・未定義・処理系定義除外)

◦ 関数プログラミングに近->副作用による値・制御変更小


動的記憶操作無。−>free無し。ポインタ無し。


...



















//misrac.h
#ifndef MISRAC_H
#define MISRAC_H
typedefstructOpaqueType * pOpaqueType;
st...
Essential Type-MISRAC:2012
第二版では潜在型(Underlying type)と呼んでいた
 CPUでレジスタ幅の拡張を想定した型規則?
 CPUでレジスタをbitifieldで処理する際の型?
 演算、関数、マ...
潜在型(MISRA-C:2004:C90対応)









型変換起因問題,変数等が適切な型で宣言していない問
題
汎整数拡張の影響がないと仮定した場合の式の型
汎整数拡張がない式の潜在型はC90 で規定する式の型
汎整数拡張...
潜在型(Underlying type) その
2








1) 両演算対象の潜在型が等しい場合は,演算対象の潜在型
2) 両演算対象の潜在型が整数型で大きさが異なる場合
は, 大きい方の演算対象の潜在型
3) 両演算対象の潜...
Effective typeと演算子・演算対象

1,制約破壊
4,5,6,(8) 実装定義
7, 未定義動作
2章.NET Frameworkとアーキテク
ト
.NET基礎
 建築におけるアーキテクチャ
 ソフトウェアアーキテクチャ
 マイクロソフト.NET FrameWork
アプリケーションアーキテクチャガイド
2.0

.NET基礎
.NET Framework 1.0, 2002
 .NET Framework 2.0, 2005


◦ .net micro framework 対応

.NET Framework 3.0, 2006
 .NET F...
.net micro Framework基礎
256 KBytes of flash and 64 KBytes of
RAM. I
 a subset of the .NET
 シミュレータデバッグ機能
.net micro framew...
.NETMicro Framework for
TOPPERS
©日高亜友
アーキテクト


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

共通部分
◦
◦
◦
◦



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

個別
◦ サーバ・ホスト、センサ、クライアント
◦ 書きやすさ、読みやすさ
◦ ...
マイクロソフト.NET FrameWork
アプリケーションアーキテクチャガイド2.0
http://www.microsoft.com/jajp/dev/2010/solutions/architecture/default.aspx
 ハ...
第3章TOPPERSSのアーキテク
チャ






仮説:割り込み処理モデル
要件:16/32/64bitCPU、
C言語、ログ出力
リスク:時間遅れ、空間逸脱
統合仕様書
◦ 過去の資産の継承
◦ 再利用性
◦ アプリケーションプ...
TOPPERSリスク軽減策
種類
リスク軽減策
1.ASPカーネル 割り込み処理モデル対応
2.HRPカーネル メモリ保護機能の追加
オブジェクトアクセス保護機能の追加
ミューテックス機能の追加
オーバランハンドラ機能の追加
3.FMPカーネル...
TOPPERSSアーキテクチャ
TECS(TOPPERS Embedded Component
System)仕様


静的生成と結合
◦ 事前配置決定可能
 初期化時間短縮

粒度の小さいコン
ポーネント
 TECSジェネレータ
 m...
第4章.NET FrameWork/.NET
microFrameWorkとの連携
連携の前提
 .NET microFrameWorkにとって
TOPPERSのよいとこ

.NET FrameWork/.NET
microFrameWorkとの連携の前提
.NET FrameWorkでそだった技術者
が.NET microFrameWorkを利用
 マイクロソフト.NET FrameWork
アプリケーションア...
.NET microFrameWorkにとって
TOPPERSのよいとこ


多くのCPUの移植があり、同等な初期
化を比較可(ASPの例)
◦ V850, H8, SH1/2A/3/4, ARM,CortexM3, RX, microBla...
まとめと今後の展望







MISRA-C/C++は関数プログラミングの入
口
Effective type(Misra-c:2012,C90&C99)と
Undelay type(MISRA-C:2004,C90)の検討
....
Upcoming SlideShare
Loading in …5
×

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

805 views

Published on

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
805
On SlideShare
0
From Embeds
0
Number of Embeds
64
Actions
Shares
0
Downloads
9
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. .NET microFrameWorkforTOPPERS (.NET基礎)@基礎勉強会 名古屋市工業研究所 工学博士・技術士(情報工学) 小川清 @kaizen_nagoya .NETはMicrosoft社の商標、 TOPPERSはTOPPERSプロジェクトの登録商標で TOPPERS プロジェ クトマス コットと
  2. 2. 構成 序章.MISRA-C/C++はC#への近道  2章.NETframeworkとアーキテクト  3章.TOPPERSアーキテクチャ  4章.NET micro framworkとTOPPERSの 連携  まとめと今後の課題 
  3. 3. 序章 MISRA-C/C++はC#への近 道 自己紹介  今日の目標  背景  経緯 
  4. 4. 自己紹介 名古屋市工業研究所勤務  TOPPERSプロジェクト理事  SESSAME/MISRA-C研究会2012準備 会  岐阜大学非常勤講師  Proof Café / TAPL勉強会、名古屋ア ジャイル勉強会、ういろMUG、TeX ユーザ会参加者 
  5. 5. 今日の目標 MISRA-C/C++で関数プログラミング  MISRA-C:2012でC90/C99両対応−>型の整理  .NET Frameworkに学ぶ組込のアーキテク チャ  ◦ C#技術者に組込への道を .NET micro FrameWorkとTOPPERSを連携す る活動  .NET (micro) Frameworkのスレッドまわりの 勉強会を検討 
  6. 6. .NET microFrameWork経緯       CQ出版の付録基板に関本 健太郎さんが移植 した.NET micro FrameWorkをどう使うかの 演習付きセミナを2013年6月松浦光洋さんを 講師に名古屋市工業研究所で開催 SWESTで松浦光洋さんを講師に.NET micro FrameWorkのセミナ ETロボコンで太田さんと審査員席で歓談 OSC東京2013/fallで日高亜友さんと情報交換 ET2013 TOPPERSブースで関本健太郎さん と情報交換 来年、.NET FrameWorkと.NET micro Frmeworkについての演習付きセミナを企画中
  7. 7. TOPPERSアプリケーション開 発・アイデアコンテスト2013  アプリケーション開発部門 ◦ 銀賞:TOPPERS RealtimeSystem Sample(RSS) LPCXpresso GPS Clock 中村晋一郎 ◦ 銅賞:Toppers_JSPとScicos_labによる組込みメカ トロニクス制御シミュレーション塩出武 ◦ 銅賞:lwIPの移植 松浦光洋  活用アイデア部門 ◦ 銀賞:.NET micro FrameWorkfor TOPPERS株式会 社デバイスドライバーズ 日高亜友 ◦ 銅賞:uIPによる WEBサーバの開発 今西孝也(高 知県工業技術センター)
  8. 8. 背景  名古屋市工業研究所でソフ トウェアについて約30年取 り組んで来た成果をまと め、次の世代に引き継ぐ ◦ MS-DOS版VZエディタ ◦ C言語、C++言語の部分集合 (MISRA-C)  TOPPERSプロジェクトが 10年経った。次の10年に 何をするとよいか。
  9. 9. プログラミング言語経緯 電総研の研究生OBJシンタッ クスチェッカ作成  C言語教育  ◦ Cコンパイラ作成を題材 ◦ The C Puzzle Bookを題材 SESSAME/MISRA-C研究会  Event-B, Uppaal, SPIN,Alloyのセミナ実施  Coqの勉強会Proof Café参加, TAPL勉強会 参加 
  10. 10. MISRA-C 履歴 MISRA C:第一版, 1998 C90対応  MISRA C:第二版, 2004, C90対応  MISRA Autocode, 2007/2009  MISRA C++ Guidelines for the use of the C++ language in critical systems: 2008  MISRA C:第三版, 2012, C90/C99 base 
  11. 11. 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,November2007. 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割にならないように=>この規則ではできない=>他の検 証、証明が必要
  12. 12. MISRA-C/C++  自動車向け、静的解析可能  異なるCPUで同じ動作(未規定・未定義・処理系定義除外) ◦ 関数プログラミングに近->副作用による値・制御変更小  動的記憶操作無。−>free無し。ポインタ無し。  暗黙、明示な型変換で設計者の意図を外れない。  例:2012年第三版 ◦ 指針1.1,プログラムの出力が依存する処理系定義の動作を文 書化し理解する。 ◦ 規則1.3, 未定義又は重大な未規定の動作が発生しない。 ◦ 指針4.8, 構造体または共用体へのポインタがコンパイル単位 内で逆参照していない場合,オブジェクトの実装を隠蔽する とよい。<例次頁>
  13. 13.                  //misrac.h #ifndef MISRAC_H #define MISRAC_H typedefstructOpaqueType * pOpaqueType; structOpaqueType { //実装を記述 }; #endif 指針4.8例:OpaqueType //Dir.4.8.c #include "misrac.h” void f (void) { pOpaqueTypepObject; pObject * GetObject(); //OpaqueTypeobject UseObject { pObject); // Opaque Type利用 }
  14. 14. Essential Type-MISRAC:2012 第二版では潜在型(Underlying type)と呼んでいた  CPUでレジスタ幅の拡張を想定した型規則?  CPUでレジスタをbitifieldで処理する際の型?  演算、関数、マクロで暗黙、明示の型変換を説明 する際の用語  Boolea characte n r singed unsigned _Bool signed char unsigned char singed short unsigned short singed int unsigned int signed long signed long unsigned long unsigned long char enum<i> named enum floating float double long double
  15. 15. 潜在型(MISRA-C:2004:C90対応)       型変換起因問題,変数等が適切な型で宣言していない問 題 汎整数拡張の影響がないと仮定した場合の式の型 汎整数拡張がない式の潜在型はC90 で規定する式の型 汎整数拡張が発生する式で汎整数拡張の結果int型となる 演算対象の潜在型は汎整数拡張前の式の型。例:二項演 算子の演算対象switch文の条件を表す括弧内の式の潜在型 は汎整数拡張前の式の型. 汎整数拡張が発生する式の中で式の型が汎整数拡張の影 響を受けない式の潜在型はC90 規定式の型.例:二項演 算子 >,>=, <,<=,==,!= を適用した結果の式の潜在 型はint型 汎整数拡張が発生する式の中で式の型が汎整数拡張の影 響を受ける式の潜在型は汎整数拡張の影響を無視した 型。例:二項演算子 *, /, %, +, -, &,^, | を適用
  16. 16. 潜在型(Underlying type) その 2      1) 両演算対象の潜在型が等しい場合は,演算対象の潜在型 2) 両演算対象の潜在型が整数型で大きさが異なる場合 は, 大きい方の演算対象の潜在型 3) 両演算対象の潜在型が整数型で大きさが等しく符号属 性が異なる(一方が符号無し整数型で他方が符号付き整数 型)場合については,符号無しの演算対象の型 4) 一方の演算対象の潜在型が整数型で他方の演算対象の 潜在型が浮動小数点型の場合は,浮動小数点型の演算対象 の潜在型。例:8 ビット符号無し整数型の変数 a と bの間 で加算を行った場合,式「a+ b」の潜在型は,8 ビット符 号無し整数 (式「a + b」の実際の型は,汎整数拡張によ りint型) 整数定数の潜在型はその定数を表現できる一番小さい型
  17. 17. Effective typeと演算子・演算対象 1,制約破壊 4,5,6,(8) 実装定義 7, 未定義動作
  18. 18. 2章.NET Frameworkとアーキテク ト .NET基礎  建築におけるアーキテクチャ  ソフトウェアアーキテクチャ  マイクロソフト.NET FrameWork アプリケーションアーキテクチャガイド 2.0 
  19. 19. .NET基礎 .NET Framework 1.0, 2002  .NET Framework 2.0, 2005  ◦ .net micro framework 対応 .NET Framework 3.0, 2006  .NET Framework 4.0 2010 
  20. 20. .net micro Framework基礎 256 KBytes of flash and 64 KBytes of RAM. I  a subset of the .NET  シミュレータデバッグ機能 .net micro frameworkは.NET Frameworkの  .NET基礎は.net micro framework 部分集合−> (最後の行は仮説)
  21. 21. .NETMicro Framework for TOPPERS ©日高亜友
  22. 22. アーキテクト  アーキテクトは、アーキテクチャを考 え、設計する人。 ◦ アーキテクチャは、建築における構造設計。 ◦ ソフトウェアは、構造化プログラミング、抜 き差し可能部品で構造設計。
  23. 23. ソフトウェアアーキテクチャ  共通部分 ◦ ◦ ◦ ◦  時間:処理時間、通信時間 空間:利用可能なメモリ、外部記憶 論理的正確性 再利用、変換可能性 個別 ◦ サーバ・ホスト、センサ、クライアント ◦ 書きやすさ、読みやすさ ◦ アナログ処理の模擬
  24. 24. マイクロソフト.NET FrameWork アプリケーションアーキテクチャガイド2.0 http://www.microsoft.com/jajp/dev/2010/solutions/architecture/default.aspx  ハードウェア、ソフトウェアの進化に対応できる  機能要件と品質要件  再利用性と保守容易性  ◦ サービス指向 ◦ ユーザ経験の  アーキテクトとして必要な事 ◦ ◦ ◦ ◦  どのような仮説を立てましたか。 明示的または黙示的な要件は何ですか。 主なリスクは何ですか。 リスクを軽減するために講じている対策は何ですか。 アーキテクチャ設計が不十分だと起こる事 ◦ 動作が不安定  処理時間のばらつき ◦ 運用環境での配置が困難  資源不足 ◦ 管理が困難 © MS .NETFW AAG
  25. 25. 第3章TOPPERSSのアーキテク チャ      仮説:割り込み処理モデル 要件:16/32/64bitCPU、 C言語、ログ出力 リスク:時間遅れ、空間逸脱 統合仕様書 ◦ 過去の資産の継承 ◦ 再利用性 ◦ アプリケーションプログラムに問題がある場 合合理的な負担増で救済  リスク軽減 次表
  26. 26. TOPPERSリスク軽減策 種類 リスク軽減策 1.ASPカーネル 割り込み処理モデル対応 2.HRPカーネル メモリ保護機能の追加 オブジェクトアクセス保護機能の追加 ミューテックス機能の追加 オーバランハンドラ機能の追加 3.FMPカーネル 資源確保(マルチコア) 4.PARKカーネ ル サービス・システム(OS)状態・時間保護 5. SSPカーネル 複雑さ、空間小 6 ATK2カーネル 自動車用 7. TECS 静的 8. TTSP 試験 9. MISRA-C対応 空間
  27. 27. TOPPERSSアーキテクチャ TECS(TOPPERS Embedded Component System)仕様  静的生成と結合 ◦ 事前配置決定可能  初期化時間短縮 粒度の小さいコン ポーネント  TECSジェネレータ  mrubyon asp+tecs: mrubyVMをTECSコ ンポーネント化  TOPPERS/ASP+TE CS:ETロボコンプ ラットフォーム 
  28. 28. 第4章.NET FrameWork/.NET microFrameWorkとの連携 連携の前提  .NET microFrameWorkにとって TOPPERSのよいとこ 
  29. 29. .NET FrameWork/.NET microFrameWorkとの連携の前提 .NET FrameWorkでそだった技術者 が.NET microFrameWorkを利用  マイクロソフト.NET FrameWork アプリケーションアーキテクチャガイ ド2.0のまとめ方でTOPPERSもまとめ る  .NET micro FrameWorkとTOPPERSの 同時構築 
  30. 30. .NET microFrameWorkにとって TOPPERSのよいとこ  多くのCPUの移植があり、同等な初期 化を比較可(ASPの例) ◦ V850, H8, SH1/2A/3/4, ARM,CortexM3, RX, microBlaze,M16C/32C, M32R, Nios  Cortex-M3はStartup.cはASP, SSPほぼ同一  いくつかのコンパイラに対応(ASPの例) ◦ GCC, HEW, NC30(8), RXC, Visual Studio.
  31. 31. まとめと今後の展望       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年 を

×