Submit Search
Upload
リアルタイムOSの必要性とTOPPERS/SSPの紹介
•
Download as PPTX, PDF
•
16 likes
•
9,467 views
NSaitoNmiri
Follow
組込みシステムにおけるリアルタイムOSの意義と,リアルタイムOSの一種であるTOPPERS/SSPの紹介
Read less
Read more
Software
Report
Share
Report
Share
1 of 54
Download now
Recommended
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
VirtualTech Japan Inc.
Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!
Etsuji Nakai
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
DevOps勉強会
DevOps勉強会
Shuntaro Saiba
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
Recommended
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
VirtualTech Japan Inc.
Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!
Etsuji Nakai
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
DevOps勉強会
DevOps勉強会
Shuntaro Saiba
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
LXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
Brocade
Docker超入門
Docker超入門
VirtualTech Japan Inc.
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
Hiraku Toyooka
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
Takuya ASADA
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
Gstreamer Basics
Gstreamer Basics
Seiji Hiraki
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
Nmapの真実(続)
Nmapの真実(続)
abend_cve_9999_0001
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
Hidetoshi Hirokawa
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
Takashi Kajinami
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
G7プレゼンrtos自作
G7プレゼンrtos自作
Kazuhiro Takahashi
NiosII と RTOS について
NiosII と RTOS について
ryos36
More Related Content
What's hot
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
LXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
Brocade
Docker超入門
Docker超入門
VirtualTech Japan Inc.
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
Hiraku Toyooka
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
Takuya ASADA
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
Gstreamer Basics
Gstreamer Basics
Seiji Hiraki
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
Nmapの真実(続)
Nmapの真実(続)
abend_cve_9999_0001
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
Hidetoshi Hirokawa
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
Takashi Kajinami
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
What's hot
(20)
DockerとPodmanの比較
DockerとPodmanの比較
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
LXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoya
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
Docker超入門
Docker超入門
Docker Tokyo
Docker Tokyo
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
自宅サーバ仮想化
自宅サーバ仮想化
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
Gstreamer Basics
Gstreamer Basics
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
Nmapの真実(続)
Nmapの真実(続)
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Viewers also liked
G7プレゼンrtos自作
G7プレゼンrtos自作
Kazuhiro Takahashi
NiosII と RTOS について
NiosII と RTOS について
ryos36
マイコンでマルチタスク
マイコンでマルチタスク
Katsuhiko Terawaki
REAL TIME OPERATING SYSTEM
REAL TIME OPERATING SYSTEM
prakrutijsh
Real Time OS For Embedded Systems
Real Time OS For Embedded Systems
Himanshu Ghetia
Real time Operating System
Real time Operating System
Tech_MX
Viewers also liked
(6)
G7プレゼンrtos自作
G7プレゼンrtos自作
NiosII と RTOS について
NiosII と RTOS について
マイコンでマルチタスク
マイコンでマルチタスク
REAL TIME OPERATING SYSTEM
REAL TIME OPERATING SYSTEM
Real Time OS For Embedded Systems
Real Time OS For Embedded Systems
Real time Operating System
Real time Operating System
Similar to リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
Kazuhiro Takahashi
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Kotaro Nakayama
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
Preferred Networks
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
Gr sakuraでtinet
Gr sakuraでtinet
Kazuhiro Takahashi
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
Yamato Tanaka
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
Kiyoshi Ogawa
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
Toshikazu Ichikawa
20130126 sc12-reading
20130126 sc12-reading
Toshiya Komoda
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Computational Materials Science Initiative
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
MicroAd, Inc.(Engineer)
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
charsbar
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
Yuhki Hanada
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Nagato Kasaki
Similar to リアルタイムOSの必要性とTOPPERS/SSPの紹介
(20)
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
Gr sakuraでtinet
Gr sakuraでtinet
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
あるコンテキストスイッチの話
あるコンテキストスイッチの話
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
20130126 sc12-reading
20130126 sc12-reading
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
リアルタイムOSの必要性とTOPPERS/SSPの紹介
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 now