Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

リアルタイムOSの必要性とTOPPERS/SSPの紹介

8,317 views

Published on

組込みシステムにおけるリアルタイムOSの意義と,リアルタイムOSの一種であるTOPPERS/SSPの紹介

Published in: Software
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2Qu6Caa ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❤❤❤ http://bit.ly/2Qu6Caa ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

リアルタイムOSの必要性とTOPPERS/SSPの紹介

  1. 1. リアルタイムOS の必要性と TOPPERS/SSP の紹介
  2. 2. • この資料は,数年前に某所で開催したセミナーの 資料の焼き直しです. – 正直,話が古い部分もあると思います • TOPPERS/SSPカーネルの紹介 – SSPカーネルとはどのようなものか • 対象 – SSPカーネルに興味のある方 – 前提:C言語の基礎知識 • 内容 – 前半:リアルタイムOSとは – 後半:SSPカーネルとは(使い方は別スライドでまた) この資料について 2
  3. 3. • TOPPERS/SSPカーネルとは – TOPPERSプロジェクトで公開されている – 小規模組込みシステム向け – リアルタイムOS です. • SSPカーネルの説明に入る前に,簡単に 背景を説明します. – 組込みシステムとは,リアルタイムOSとは – TOPPERSプロジェクトとは TOPPERS/SSP とは 3
  4. 4. • 参考文献「12ステップで作 る 組込みOS自作入門」 – 初学者におすすめ – この本があればこのスライド のRTOSの説明いらないか も... http://kozos.jp/books/makeos/ そのまえに 4
  5. 5. 前提とする組込みシステム 5
  6. 6. 組込みシステム • 各種の機器に組み込んで, その制御を行う コンピュータシステム – 以前では,パソコンやワークステーションで はないコンピュータシステムはほぼ該当 * ぶっちゃけ,範囲広すぎ – 分類の難しいシステムもある(携帯電話とか) • 専用化したコンピュータシステム – この意味だと,測定器につながれたパソコン も組込みシステムになる 6
  7. 7. • 「TOPPERS開発成果物の採用事例」より http://www.toppers.jp/applications.html たとえば デジタルピアノ CASIO PX-850BK HDDデュプリケータ 株式会社ワイ・イー・シー Demi PG520 ロケット JAXA H-IIA型 ジェルジェットプリンタ リコー IPSiO GX e3300 7
  8. 8. • コンピュータ内蔵,プログラム制御 – プログラムでシステムを高付加価値化 – なにがしか実世界との接点がある • 特定の機能だけをもつ専用機 いずれも 8
  9. 9. • システムにより(ハード・ソフト)構成が異 なる. • 機能は動作中に変化しない. – 目的に専用化 • 時間制約に従う (リアルタイム性をもつ) – 動作環境や制御対象に合わせて動作できる * 単純に「速い」ということではなくて – 動けない場合でもひどい結果にならない 組込みシステムの特徴 9
  10. 10. たとえば... – 実行開始のタイミング * 周期的,非周期的 – デッドライン(締め切り) * ハード,ソフト * ファーム(firm) – ジッタ(タイミングの揺れ) * 絶対的,相対的 とか... (ちょっと脱線)時間制約って? 時間 T T T T T1 T2 T3 T4 d Δt Δt 10
  11. 11. • システム機能を実現するいくつかの「ア プリケーションプログラム」からなる. – たとえば • プログラム構成はシステム毎に異なり, 設計時に決まる.動的に変化しない. • プログラムは事前に検証され,システム に悪影響を及ぼさないことを前提とする 組込みソフトウェアの特徴(1) 入力 処理 入力 出力 計算 処理 出力 処理 プログラム モータ 制御 パルス データ PWM信号 シリアル モニタ コマンド データ 結果 出力 11
  12. 12. • 多くの場合,プログラムは並行してサー ビスを提供する.なので,適切な処理の 切り替えが必要 • システムの時間制約を満たすように動か すこと 組込みソフトウェアの特徴(2) 入力 出力 入力 出力 入力 出力 入力 出力 時間 12
  13. 13. そこで,リアルタイムOS? 13
  14. 14. • OSとは,プログラムの実行を管理するソ フトウェアのこと. – プログラムを「開始」とか「停止」とか「終 了」とか • 同時に動作する複数のプログラムの実行 を管理するために利用される. 「同時に動作する」といっても単一プロセッサでは同時に一つしか動かせ ません.ここでは「同時に動作状態にある」とでも思っていただけると まず,OS(Operating System)とは 14
  15. 15. • システムごとにハード構成が異なる. • そのため,OSはプロセッサや割込みコン トローラなど「最低限の構成」を前提に 「最小限の機能」だけが提供される. – 保護機能も必須ではない.リアルタイム性の 観点からできる限り省かれる. • システムがリアルタイム性を求められる ため,その実現に適した機能を持つ. – で,結局それは リアルタイムOS ということになる... 組込みシステムのOS 15
  16. 16. RTOSを使いたくなる状況までを 順番に追ってみる 16
  17. 17. • 例1)0.5秒周期で動作するプログラム – 例えば機器の稼働状態を示すLED点滅とか – 時間経過はポーリングでチェック ポーリングによるループ処理 task1 void main () { while(1) { if(0.5秒経過?) { task1(); } } } void task1() { /* 処理*/ } 0.5s main 17
  18. 18. • 例2)処理を追加 – シリアルからデータを随 時受信. – 受信毎に,対応するコマ ンドを実行. – 処理(console_task)が短い うちは特に問題ない ポーリングによるループ処理 task1 void main () { while(1) { if(0.5秒経過?) { task1(); } if(シリアル受信?) { console_task(); } } } console_task 18
  19. 19. • 例3)時間のかかる処理が追加された – 周期処理が遅れる(または取りこぼす)可能 性がでる ポーリングによるループ処理 task1 void main () { while(1) { if(0.5秒経過?) { task1(); } if(シリアル受信?) { console_task(); } } } void console_task () { if(メモリダンプ?) { /* ダンプ処理(長い) */ } else if(コマンド?) { /* 他のコマンド処理 */ } } console_task 19
  20. 20. • 対策案)0.5秒ごとの周期処理を優先的に 実行したいなら,それを割込み処理にす る 割込みによる解決 handler1 void main () { while(1) { if(シリアル受信?) { console_task(); } } } void console_task() { if(メモリダンプ?) { /* ダンプ処理 */ } else if(コマンド?) { /* 他のコマンド処理 */ } } console_task void handler1() { /* 処理 */ } 0.5秒タイマー 20
  21. 21. • あるプログラムが,それまで動いていたプロ グラムの間に割り込むこと – それまでの処理を一時中断して別の処理を実行 し,その後,中断したプログラムを中断した時点 から再開すること – 割込みを使用すると,動作順序に関連性のない独 立した逐次処理の流れが発生する – 割込みは優先度というパラメータを持ち,高い優 先度をもつ割込みが先に実行される 割込みとは スイッチ タイマ タイマ 割込み 処理 スイッチ 割込み 処理 割込み発生! 割り込まれるプログラム 割込み処理プログラム 処理を保留 21
  22. 22. • プロセッサの利用効率を上げる – 通常、デバイスの動作はプロセッサより遅い – 外部の変化を検出するために常に確認するの は効率が悪いため変化した時に教えてもらう 割込みを利用する目的 確認 処理2 処理1 処理2 処理1 22
  23. 23. • 割込みが発生すると,プロセッサへ非同期に電気 的な信号(割込み信号)が送られる • プロセッサは割込み信号を受け取ると、実行中の プログラムを中断し,割込み処理プログラムを開 始する • 割込み処理プログラム実行中,それよりも高い優 先度を持つ割込みが発生した場合には処理が中断 され,高い優先度をもつ割込み処理プログラムが 開始される • 割込み処理プログラムが終了するとプロセッサは 中断していたプログラムを再開する 割込み発生時の処理の流れ 割込み発生! 割込み処理プログラム 処理を保留 割込み信号 23
  24. 24. • 例4)割込み処理を追加(優先度:高) – 取りこぼすかもしれないため入力を早く受け 付けたい.でも,処理完了に時間がかかる. 追加したいものがそういうものだったとしましょう. – 処理時間が長くて,優先度の高い割込み処理 を追加すると,そのぶん他の割込みの受付が 遅くなることがある それでよいか? 割込みの追加と問題点 handler1 console_task handler2 24
  25. 25. • 困るならば,プログラムを「先に処理し たい」部分と「後で行う」部分に分けて みる – 急ぐ部分だけを割込み処理にする 処理の分割 プログラム 入力 出力 急ぐ処理 後で行う 処理 出力入力 通知 25
  26. 26. • 対策案)一部をメインループへ移動 – handler1 の割込み受付の遅れは最小限に – これで解決,しかし... 割込みによる解決 handler1 console_task handler2 task2 handler2では最低限の処理と task2への通知を実施 26
  27. 27. • 移動された(時間のかかる)処理は,最悪ルー プ1周するまで実行を待たされることがある – 結局,元の問題に戻った – メインでなく低優先度の割込み処理とかすれば良 いのでは?それも正解ですが優先度数には上限が. 割込みによる解決 void main () { while(1) { if(シリアル受信?) { console_task(); } else if(task2開始条件?) { task2(); } } } handler1 console_task handler2 task2 最低限の処理とtask2への通知 27
  28. 28. • 対策案)長い処理は一定量処理して戻す 定期的な処理の切り替え void console_task(void) { static int dump_run = false; if(メモリダンプ? || dump_run) { dump_run = dump(dump_run); } /* 以下,省略 */ } int dump(int cont) { if(cont) { /* 中断前の状態に戻す */ goto loop: // 再開 } while(データ残ってる?) { loop: /* データ出力 */ if(中断回数?) { /* 状態保存 */ return true; // 継続中 } } return false; // 終了 } handler1 console_task handler2 task2 main 28
  29. 29. • プログラムの切り替え処理をいちいち埋 め込むのはとても煩雑 – プログラム追加毎に必要 – 計算量もそのつど決定 でも void dump(void) { while(データ残ってる?) { /* データ出力 */ } return; } 本来行いたい処理 int dump(int cont) { if(cont) { /* 中断前の状態に戻す */ goto loop: // 再開 } while(データ残ってる?) { loop: /* データ出力 */ if(中断回数?) { /* 状態保存 */ return true; // 継続中 } } return false; // 終了 } 29
  30. 30. • 割込みを利用することで,急ぐ処理を優先的 に実行開始できる. • プログラムを割込み処理とメイン処理に分け ることで,割込み受付の遅延を尐なくでき る. • しかし,メインループの処理には優先度がな いため,急ぐ処理が先に実行されることが保 証できない. – デッドラインを守る上においては重要である. ここまでの課題を整理 割込み処理A 割込み処理B タスクA タスクB 割込みA 割込みB 通知 通知 30
  31. 31. • 先に実行させたいタスクに高い優先度を 設定することで,先に実行させることが できる. – 優先度の低いタスクが動いていても関係ない RTOSによる解決 void task2() { /* タスク処理 */ } void handler2() { iact_task(TASK2); // 起動 } void console_task () { /* コマンド処理 */ } handler1 console_task handler2 task2 task2 起動 31
  32. 32. • RTOSを使うと – メインプログラムの間に割込みのような優先 度を持たせ,急ぐ処理を常に先に実行でき る. – 複数のプログラムを並行に動作させた上でリ アルタイム性が検討できるようになる – プログラムの共通的な切り替え処理をOSとし て分離できる.その結果,各プログラムの独 立性が高まり,保守管理が楽になる. ということができる RTOSのメリットまとめ 32
  33. 33. • 実行開始のタイミング – 周期ハンドラ+タスク起動 – 割込み+タスク起動 • デッドライン(締め切り) – スケジューリング規則と優先 度設定で最悪処理時間を調整 • ジッタ – スケジューリング規則と優先 度設計で開始タイミングの遅 れの程度を調整 – (RTOSとは関係ないけど)処理が一定時間で終わる ようなソフト設計とか,ハード設計とか RTOSの時間制約への寄与 時間 T T T T T1 T2 T3 T4 d Δt Δt 33
  34. 34. • 全ての利用者やプログラムに平等に計算 機資源を提供するという考え方に基づく ため,リアルタイム性が保証できない – TSS(タイムシェリングシステム) – 実際には,リアルタイム性をもたせるための 拡張機能を取り込んでいる場合もある. • 必要メモリ量が多すぎる. – 最低でも1MBはRAMが必要というのでは, RAMが尐ないシステムでは使えない.たくさん積 んでるなら良いけど 汎用OSではなぜダメか 34
  35. 35. • ハードウェアは年々変化する.開発の都 合でハード変更が必要となる場合がある • ハードウェアが異なれば,割込み系な ど,そのハードの定義や挙動も異なる. • その都度システムが同じ振る舞いをする かどうかの検討が必要となる. • OSという共通の枠組みを使うことで,OS 移植とアプリ移植を独立に実施できる. ハードに起因する挙動の違いを枠組みに そって整理でき,検討しやすくなる. RTOSの別のメリット 35
  36. 36. • 様々なRTOS – μITRON (TOPPERS/JSP, NORTi など) – OSEK/VDX (ISO 17356シリーズ) – その他(QNX,VxWorks, とか) • OS によっては目的別に機能のサブセット が定義されている – (μITRON4.0)スタンダードプロファイル,自 動車制御プロファイル – (OSEK) BCC1,BCC2,ECC1,ECC2  ここでは TOPPERS/SSP カーネルを対象にしますが,そういやTOPPERS まだ紹介してないですね.... 様々なリアルタイムOS(RTOS) 36
  37. 37. TOPPERSプロジェクト 37
  38. 38. • オープンソース開発プロジェクト – TOPPERSとは Toyohashi OPen Platform for Embedded Real-time Systems の略 – 2003年よりNPO法人化 • 目的 – 組込みシステム開発で基盤となるソフトウェ アの提供による産業振興 * 非競争領域をオープンソース化し,企業・個人が 先進的な開発に取り組めるように – 教育教材の提供による技術者育成 TOPPERSプロジェクトとは 38
  39. 39. TOPPERSプロジェクトとは http://www.toppers.jp/project.html 39
  40. 40. • 組込みシステム用RTOS – TOPPERS新世代カーネル系 * ASP(標準的) * FMP(マルチコア拡張),FDMP(機能分散マルチプロ セッサ向け) * HRP2(高信頼) * SSP(小規模) – μITRON系 * JSP(スタンダード), FI4(フルセット) – 欧州車載系 * ATK1(OSEK/VDX), ATK2(AUTOSAR) 成果物(1) 40
  41. 41. • ミドルウェア – TINET(TCP/IP),CAN/LIN – FatFs for TOPPERS (ファイルシステム) – TECS(コンポーネントシステム) • 設計・評価用ツール – カーネル用テストスイート – TLV(ログ可視化) • 教育用教材 – 各種セミナー教材,ETロボコン用コンテンツ 成果物(2) 41
  42. 42. • TOPPERS開発成果物の採用事例 http://www.toppers.jp/applications.html 開発事例(再掲) デジタルピアノ CASIO PX-850BK HDDデュプリケータ 株式会社ワイ・イー・シー Demi PG520 ロケット JAXA H-IIA型 ジェルジェットプリンタ リコー IPSiO GX e3300 42
  43. 43. • オープンソースライセンスである – だれでもすぐに利用できる – 製品に取り込みやすい(レポートウェア) • ITRONで長年培われた技術をベースとし ており,実績がある – ITRON(Industrial TRON, TRONはThe Real- time Operating system Nucleusの略)はトロン 協会により定められた制御機器向けリアルタ イムOSの業界標準仕様 – 現在では ITRON を改良した TOPPERS新世 代カーネル の開発が行われている TOPPERSの特徴 43
  44. 44. • μITRON仕様の発展版 – 最新版はバージョン1.6.0 (2014/4 現在) • TOPPERS/ASPが代表例で,他に FMP, FDMP, HRP2などがある. • TOPPERS新世代カーネルは TOPPERS新 世代カーネル統合仕様書(以後,統合仕様 書) にまとめて規定されている. – TOPPERS/SSPカーネルはTOPPERS新世代 カーネルの一種である.したがってSSPカー ネルは基本的にこの仕様に基づく. TOPPERS新世代カーネル 44
  45. 45. 新世代カーネル統合仕様書 45 ※このイメージちょっと古いです
  46. 46. • TOPPERSプロジェクトが配布している小 規模組込みシステム用のRTOS • ASPカーネルと比べて大幅に機能削減 • 2011年11月より一般公開 – 最新バージョンは1.2.1 (2014/4 現在) • 対応MCU(他にも移植中) – Cortex-M3 – R8C/M32C – RX62N – Cortex-M0(+)(非公式) https://bitbucket.org/NSaitoNmiri/toppers_ssp_lpc812/ TOPPERS/SSPカーネルとは TOPPERS/ASP TOPPERS/SSP ROM RAM 約26KByte 約3KByte 52Byte 31Byte 46
  47. 47. ロードマップとSSPの位置づけ 47
  48. 48. • 出典:T-Engineフォーラム「2011年度組込 みシステムにおけるリアルタイムOSの利 用動向に関するアンケート調査報告書」 http://www.t-engine.org/ja/2012/tef-rtos2012.html SSPの開発背景 48
  49. 49. • RTOSサイズに関する利用動向 – この数年,小規模システムの割合はあまり変 化がない – 64KB未満のプログラムサイズが約19%を占 め,前年比でも減尐していない. * RAMはたいていの場合,それよりさらに尐ない – 今後も一定の割合で存在すると仮定 * メモリ増大化でこの仮定が崩れつつあるのではという気もする • 従来のTOPPERSのRTOSではRAMの極め て尐ない組込みシステムには適用が困難 – JSP や ASP が求めるリソースが小規模シス テムには大きい. SSPの開発背景 49
  50. 50. ※ 基本,拡張,独自追加の各機能に大別 • 基本機能 – μITRON4.0仕様「仕様準拠の最低条件」を元 に,TOPPERS新世代カーネルの機能をサブ セット化 * 最低限のタスク管理(タスクには待ち状態がない) * 割込み管理,CPU例外管理,システム状態管理 SSPカーネル仕様の特徴(1) μITRON4.0仕様 TOPPERS 新世代カーネル仕様 TOPPERSが 独自に拡張 (共通部分) 基本機能 独自拡張部分 (SSPのみ) SSPカーネ ル拡張機能 仕様準拠の 最低条件 50
  51. 51. • RTOSがμITRON4.0に準拠しているという ために最低限必要な機能および仕様を定 めたもの 1.静的APIおよびサービスコールのサポート * CRE_TSK タスクの生成 * (i)act_tsk タスクの起動 * ext_tsk 自タスクの終了 * DEF_INH 割込みハンドラの登録 2.μITRON4.0仕様のスケジューリング規則に 沿ったスケジューリングを行うこと * 優先度ベースおよびFCFS(First Come First Service)のスケジューリング 参考:仕様準拠の最低限の条件 51
  52. 52. • 拡張機能 (不要なら外すことが可能) – 時間管理機能({周期,アラーム}ハンドラ) – 同期・通信機能(データキュー,イベントフ ラグ) • 独自追加機能(SSPのみに存在する機能) ※システム全体のプログラムサイズを最小化す るために有用な機能 – 共有スタック領域,実行時優先度 • TOPPERSの他のカーネル(ASPカーネル など)が上位互換性を持つように配慮し ているが,完全な互換にはなっていない SSPカーネル仕様の特徴(2) 52
  53. 53. • 対象とするプログラム規模 – 実行プログラムサイズが数KB~数十KB程度 * ASPカーネルでは数十KB~1MB程度 – 尐し小さめのシステムにも適用可能 * 例えば ROM6KByte,RAM2KByte程度でも可能 * ROM4K, RAM1Kに挑戦中だが現状ちと厳しい • プログラム機能 – 複雑な制御を必要としないシステム * タスクスケジューラ,割込み管理で十分な場合 • OS導入ステップ – リアルタイムOSを導入したいが,導入障壁が 高いと感じている開発チーム SSPカーネルの適用範囲 53
  54. 54. • 組込みシステムはコンピュータシステム であり目的に専用化されたRTSである • 組込みソフトウェア開発ではリアルタイ ム性を確保する点でRTOSが便利である • RTOSは標準仕様品を使う意味での利点も ある.選択肢の一つとしてTOPPERSの カーネルを利用するという方法がある. • TOPPERS/SSPカーネルはTOPPERSプロ ジェクトの組込みシステム向けRTOSの一 つであり,小規模な点が特徴である. まとめ 54

×