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