.NET micro Framework
forTOPPERS (.NET基礎)@基礎
勉強会

名古屋市工業研究所
工学博士・技術士(情報工学)
小川清 @kaizen_nagoya
.NETはMicrosoft社の商標、
TOPPERSはT...
構成
序章.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 micro Framework経緯








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
micro Frameworkとの連携
連携の前提
 .NET micro Frameworkにとって
TOPPERSのよいとこ

.NET Framework/.NET micro
Frameworkとの連携の前提
.NET Frameworkでそだった技術者
が.NET micro Frameworkを利用
 マイクロソフト.NET Framework
アプリケーショ...
.NET micro Frameworkにとって
TOPPERSのよいとこ


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

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基礎)@基礎勉強会

683 views
555 views

Published 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 Framework for TOPPERS.

Published in: Automotive
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
683
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. .NET micro Framework forTOPPERS (.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 for TOPPERS  .NET (micro) Frameworkのスレッドまわりの 
  6. 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. 7. TOPPERSアプリケーション開 発・アイデアコンテスト2013  アプリケーション開発部門 ◦ 銀賞:TOPPERS RealtimeSystem Sample(RSS) LPCXpresso GPS Clock 中村晋一郎 ◦ 銅賞:Toppers_JSPとScicos_labによる組込みメカ トロニクス制御シミュレーション塩出武 ◦ 銅賞:lwIPの移植 松浦光洋  活用アイデア部門 ◦ 銀賞:.NET micro Framework for 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(); //OpaqueType object取得 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+TEC S:ETロボコンプラッ トフォーム   Singletonが大事
  28. 28. 第4章.NET Framework/.NET micro Frameworkとの連携 連携の前提  .NET micro Frameworkにとって TOPPERSのよいとこ 
  29. 29. .NET Framework/.NET micro Frameworkとの連携の前提 .NET Frameworkでそだった技術者 が.NET micro Frameworkを利用  マイクロソフト.NET Framework アプリケーションアーキテクチャガイ ド2.0のまとめ方でTOPPERSもまとめ る  .NET micro FrameworkとTOPPERSの 同時構築 
  30. 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. 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年 を

×