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

  • 242 views
Uploaded on

This is a first step of a promotion for Automotive MISRA-C Engineer to using C# and dot Net Micro Framework for TOPPERSand for C# programmers to Embedded system development using dot Net Micro …

This is a first step of a promotion for Automotive MISRA-C Engineer to using C# and dot Net Micro Framework for TOPPERSand for C# programmers to Embedded system development using dot Net Micro Framework for TOPPERS.

More in: Automotive
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
242
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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