Enviar pesquisa
Carregar
リアルタイムOsのカスタマイズ
•
Transferir como PPT, PDF
•
1 gostou
•
1,442 visualizações
K
Kazuhiro Takahashi
Seguir
RTOSのカスタマイズセミナの資料です。 演習テキストは別途
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 35
Baixar agora
Recomendados
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
NSaitoNmiri
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
NSaitoNmiri
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
Recomendados
リアルタイムOSの必要性とTOPPERS/SSPの紹介
リアルタイムOSの必要性とTOPPERS/SSPの紹介
NSaitoNmiri
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
NSaitoNmiri
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
Completely Fair Scheduler (CFS)
Completely Fair Scheduler (CFS)
gokzy
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
sandai
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Yahoo!デベロッパーネットワーク
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
sandai
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
Lagopus 0.2
Lagopus 0.2
Masaru Oki
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Takashi Hoshino
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
Takatoshi Matsuo
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
Masaru Oki
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
KamezawaHiroyuki
systemdを始めよう
systemdを始めよう
Preferred Networks
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
Yohei Azekatsu
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
Ylug 110th kpatch code reading
Ylug 110th kpatch code reading
Masami Hiramatsu
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイド
ryos36
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Insight Technology, Inc.
Mais conteúdo relacionado
Mais procurados
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
Completely Fair Scheduler (CFS)
Completely Fair Scheduler (CFS)
gokzy
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
sandai
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Yahoo!デベロッパーネットワーク
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
sandai
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
Lagopus 0.2
Lagopus 0.2
Masaru Oki
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Takashi Hoshino
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
Takatoshi Matsuo
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
Masaru Oki
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
KamezawaHiroyuki
systemdを始めよう
systemdを始めよう
Preferred Networks
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
Yohei Azekatsu
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
Uptime Technologies LLC (JP)
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
Ylug 110th kpatch code reading
Ylug 110th kpatch code reading
Masami Hiramatsu
Mais procurados
(20)
あるコンテキストスイッチの話
あるコンテキストスイッチの話
Completely Fair Scheduler (CFS)
Completely Fair Scheduler (CFS)
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
x86とコンテキストスイッチ
x86とコンテキストスイッチ
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Lagopus 0.2
Lagopus 0.2
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
systemdを始めよう
systemdを始めよう
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Ylug 110th kpatch code reading
Ylug 110th kpatch code reading
Semelhante a リアルタイムOsのカスタマイズ
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイド
ryos36
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Insight Technology, Inc.
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
Spmv9forpublic
Spmv9forpublic
T2C_
PEZY-SC programming overview
PEZY-SC programming overview
Ryo Sakamoto
Open-FCoE_osc2011tokyofall_20111119
Open-FCoE_osc2011tokyofall_20111119
metamd
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
Toshihiro Araki
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Hirotaka Kawata
マイコンロボット実習
マイコンロボット実習
Takehiko YOSHIDA
20130329 rtm3
20130329 rtm3
openrtm
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki
Mt basic as-os_on_danbot
Mt basic as-os_on_danbot
たけおか しょうぞう
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
Etsuji Nakai
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
Multi Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud builders
Juniper Networks (日本)
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
ロフト くん
Semelhante a リアルタイムOsのカスタマイズ
(20)
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイド
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Spmv9forpublic
Spmv9forpublic
PEZY-SC programming overview
PEZY-SC programming overview
Open-FCoE_osc2011tokyofall_20111119
Open-FCoE_osc2011tokyofall_20111119
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
マイコンロボット実習
マイコンロボット実習
20130329 rtm3
20130329 rtm3
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
PHPとシグナル、その裏側
PHPとシグナル、その裏側
Mt basic as-os_on_danbot
Mt basic as-os_on_danbot
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
Multi Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud builders
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
Mais de Kazuhiro Takahashi
mrubyOSチラシ
mrubyOSチラシ
Kazuhiro Takahashi
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Kazuhiro Takahashi
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Kazuhiro Takahashi
TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋
TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋
Kazuhiro Takahashi
Gr sakuraでtinet
Gr sakuraでtinet
Kazuhiro Takahashi
Rx hew-シミュレータで動かすー説明書
Rx hew-シミュレータで動かすー説明書
Kazuhiro Takahashi
mruby os(案)の開発
mruby os(案)の開発
Kazuhiro Takahashi
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Kazuhiro Takahashi
リアルタイムOsのカスタマイズチラシ023
リアルタイムOsのカスタマイズチラシ023
Kazuhiro Takahashi
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Kazuhiro Takahashi
G7プレゼンrtos自作
G7プレゼンrtos自作
Kazuhiro Takahashi
G7プレゼンrtos自作
G7プレゼンrtos自作
Kazuhiro Takahashi
G7プレゼンrtos自作
G7プレゼンrtos自作
Kazuhiro Takahashi
Mais de Kazuhiro Takahashi
(13)
mrubyOSチラシ
mrubyOSチラシ
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋
TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋
Gr sakuraでtinet
Gr sakuraでtinet
Rx hew-シミュレータで動かすー説明書
Rx hew-シミュレータで動かすー説明書
mruby os(案)の開発
mruby os(案)の開発
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
リアルタイムOsのカスタマイズチラシ023
リアルタイムOsのカスタマイズチラシ023
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
G7プレゼンrtos自作
G7プレゼンrtos自作
G7プレゼンrtos自作
G7プレゼンrtos自作
G7プレゼンrtos自作
G7プレゼンrtos自作
リアルタイムOsのカスタマイズ
1.
リアルタイム OS のカスタマ イズ ポリテクセンター兵庫 2015.1.10,17,24 アライブビジョンソフトウェア株式会 社 高橋和浩
2.
2 目次 1 日目 1.
リアルタイム OS のカスタマイズの必 要性 2.ITRON の作り方 3.TOPPERS/SSP 、インストール 4.TOPPERS/SSP プログラム演習
3.
3 目次 2 日目 5.
シュリンク版 SSP の紹介とインストー ル 6. カーネルコード解説 7.TOPPERS/SSP のカスタマイズ 一部 改造編
4.
4 目次 3 日目 8.TOPPERS/SSP
のカスタマイズ フル 改造編 (1)待ち状態を持つカーネルの設計 (2)実装 (3) dly_tsk の追加 ( 4)評価・改善 3 日間のまとめ
5.
5 1. リアルタイム OS
のカスタマイズの必要性 さまざまな局面 1) 無償の RTOS を無償で使っていて自ら メンテナンスしたい 2) 自社製 OS を使っているが我流にやっ ていて、メンテ方法を学びたい 3)OS レスでやっているが、今のシステム にマルチタスク機能をいれたい。 4)OS の自作をやってみたいと思っている
6.
6 対象の RTOS 1)
シングルコア 2) スレッドモデル 以下は、さらに基礎を元に応用が必要 プロセスモデル マルチコア (SMP)
7.
7 2.ITRON の作り方 「
ITRON 標準ガイドブック 2 」 「 PartⅢITRON を作りたい人のため に」 解説: 本では非常に端的に書かれている。た ぶんこれを読んですっとわかる人はす でに ITRON の構造を理解している人だ と考えています。解説しながら進めて いきます。
8.
8 用語 タスクディスパッチ /
タスクスイッチ タス クディスパッチャ タスクスケジューリング タスクスケジュー ラ 優先度ベーススケジューリング レディーキュー 遅延ディスパッチ(の原則) ret_int システムコール タスク独立部 --> 特有の用語で、ユーザー割 り込みルーチンのこと
9.
9 OS の動き 概要 OS
未実行(タスクが実行中) --> システムコールまたは割り込み --> OS 実行状態 すぐにユーザー割り込み処理をコール システムコールならなんかやる --> 遅延ディスパッチ ret_int でタスクにいく
10.
10 プログラムの動作優先度 ( カーネル管理外)
カーネルマスクレベル ユーザー割り込みハンドラ ユーザータスク
11.
11 TCB の作り方 タスクコントロールブロック
レディーキューとは TCB の行列のこと
12.
12 3.TOPPERS/SSP 、インストール 最少セットカーネル
リアルタイムカーネル (RTOS) リアルタイム性能はそのまま、メモリ使用を抑 えた 特徴的、「待ち状態を持たない」 スタック共有も可能 待ち状態を持たない --> プリエンプトされないの で コンテキストの保存が不 要になり シンプルに実装されてい
13.
13 インストール 演習テキスト参照
14.
14 4.TOPPERS/SSP プログラム 演習 演習テキスト参照
演習 4-1
15.
15 1 日目まとめ RTOS
の用語 RTOS の大まかな動き TOPPERS/SSP
16.
16 5. シュリンク版 SSP,
インス トール 演習テキスト参照 演習 5-1,5-2
17.
17 6. カーネルコード解説 sta_ker()
から始まる。 マルチタスクになる前 段階の処理 ブート一回目だけの処 理としてカーネルオブ ジェクトの生成がある 。 SSP はカーネルオブ ジェクトといってもタ スクのみ TCB の初期設定をする 。 void sta_ker(void) { initialize_object(); kerflg = true; intnest = 0; dispatcher(); }
18.
18 6. カーネルコード解説 2
ディスパッチャ部分 これは、途中で待ちになら ない SSP 特有のディスパッ チ処理。 優先度の高いタスクにプリ エンプトはするが、待ち状 態にはならないから、タス クの高いタスクが終了して から低いタスクの起動はこ ういう単純な呼び出しでよ い。 さらに SSP はスタック共有 型なのでスタックを切り替 える必要はない。
19.
19 6. カーネルコード解説 3
スケジューラは、今の レディーキューから、 次にディスパッチする タスクを選ぶ処理。 レディーキューの構造 に依存するが、 SSP は単純なビットマップ のみ uint_t search_schedtsk(void) { return primap_search(); }
20.
20 6. カーネルコード解説 4 ER act_tsk(ID
tskid) { ER ercd; uint_t tskpri; LOG_ACT_TSK_ENTER(tskid); CHECK_TSKCTX_UNL(); CHECK_TSKID_SELF(tskid); tskpri = get_ipri_self(tskid); t_lock_cpu(); if (test_dormant(tskpri)) { if(make_active(tskpri)) { run_task(tskpri); } ercd = E_OK; } else { ercd = E_QOVR; } t_unlock_cpu(); error_exit: LOG_ACT_TSK_LEAVE(ercd); return(ercd); }
21.
21 6. カーネルコード解説 5
最後は、ユーザーからの OS 呼び出しである。 タスクの起動で、基本はまずレディーキューに指 定したタスクの TCB をキューイングする カーネルの最後(遅延ディスパッチで)今の最優 先タスクを動かす。 SSP は単純にサブルーチンコールしかしていない ので、 タスクは常に頭から動くが、プリエンプトされて 復帰するケースは 自タスクよりも高いタスクを起動した場合。 起動されたタスクが終了した時点で、タスク起動 後に戻ればいいのでサブルーチンコールするのと 同じ作りで実現している
22.
22 6. カーネルコード解説 6 フローチャート 別紙
A1 参照 割り込みおよび遅延ディスパッチ部分 CPU が違っても同じ処理をアセンブリ言 語でこの部分を移植することで、シュ リンク版 SSP の移植が可能
23.
23 7.TOPPERS/SSP のカスタマイズ 一部改造編 演習テキスト参照
演習 7-1
24.
24 2 日目まとめ シュリンク版
SSP のインストール カーネルコードリーディング 標準的なカーネルカスタマイズ
25.
25 8.TOPPERS/SSP のカスタマイズ フル改造編
(1)待ち状態を持つカーネルの設計 (2)実装 イ.コンテキストの保存と復元 ロ.サービスコール部の作成 (3) dly_tsk の追加 イ.実装に必要な項目の整理 ロ.指定時間待ちの実装 (dly_tsk) (4)評価・改善 イ.制作したカーネルを用いる際の問題点の把 握
26.
26 (1)待ち状態を持つカーネルの設計 待ちを持つということは タスクが
run --> wait --> dormant wait --> ready 中断したところから再開しなければな らない。
27.
27 コンテキストの保存と復元 1. コンテキストの保存エリアを検討す る。
2. コンテキストからタスクが復帰する 仕組みでのタスク起動部を実装する 3. タスクスイッチする場合にコンテキ ストの保存と復帰をします。 タスクがスイッチするときにコンテキ ストを保存 / 復帰するように実装する。
28.
28 longjmp/setjmp の仕組み コンテキストの保存領域を渡して
call すれば 、そこに保存される。 保存時は戻り値 0 でリターンする。 保存さ れたものが使われた場合には 1 でリターンす る。 1 でリターンした場合は、レジスターやス タックポインタなど、保存時の状態に戻る。 setjmp は保存領域を利用して jmp する。コン テキストは保存領域のものに復帰する。
29.
29 longjmp/setjmp の限界 RTOS
のコンテキスト保存 は、 longjmp/setjmp だけでは、すべて の場合に対応できません。 少なくとも戻り値が、 R1 レジスタが保 存されないことがある。 割り込みには対応できない 割り込み部でレジスタ保存 / 復帰を補 完する必要がある。
30.
30 (2)実装 演習 8-1
演習 8-2 Wait-ssp との差分を参考
31.
31 (3) dly_tsk の追加
Delay 状態の定義 待ち状態かつタイムアウト値が 0 以外の場合 変数の追加 タイムアウト値 TCB に追加する Isig_tim を 1ms のタイマー割り込みから呼び出す。 Isig_tim の処理 全タスクループ タイムアウト値が 0 以外 タイムアウト値 -- == 0 か ? wait 解除処理 Wait 解除処理 1.TCB を WAIT READY 状態に変更 2.TCB をレディーキューにつなげる タスクスイッチは、ディスパッチャで実行される
32.
32 (3) dly_tsk の追加 実装
演習 8-3
33.
33 ( 4)評価・改善 イ.制作したカーネルを用いる際の問 題点の把握
ロ.問題点の改善
34.
34 イ.制作したカーネルを用いる際の問題点の把 握 1. 実行速度
2.RAM 利用削減 2 点改善事項 コンテキストの保存と復元を割り込み では 2 度行っている コンテキスト領域を固定で RAM を使用 タスクスタックを利用
35.
35 まとめ 演習 8-3
がカーネルの処理の一般的な 実装の形 パターン化 1) コントロールブロックを直す 2) 待ち行列に並べる、取り出す
Baixar agora