SlideShare a Scribd company logo
1 of 27
TOPPERS/SSP を用いた教育訓練カ
リキュラムカーネルの自作およびカ
スタマイズ
アライブビジョンソフトウェア株式会社
高橋和浩
https://www.facebook.com/firstandlastandallways
TOPPERS プロジェクト 特別会員(個人)
 アイデアアプリケーションコンテスト
 アイデア部門 入賞
バックグランド(それまでの経緯)
 ルネサスエレクトロニクスの
RTOS(μITRON カーネル ) のおよそ 8 年
ほど受託開発。  M32C M16C R32C RX
など
 ポリテクセンター兵庫にて、在職者向け
コース( μITRON) を担当 (H24 より実
施)
動機
 ITRON を使うセミナから作るセミナにし
たい
 受講生からの要望
 オープンソースの OS を使う以上、中身の
理解の必要性
 入り口として、もっとも手軽なもの 最少
セットカーネル
 Linux のカーネルに読破にくじけた人にも
 OS 自作本などのニーズ
μITRON (RTOS)の講習会
 ポリテクセンター兵庫(武庫之荘)で実施
  ・ μITRON 基本
  ・ μITRON ネットワーク
  ・新講習 RTOS自作とカスタマイズ(本
年1月実施)
 いずれも土曜日 3 日間
 H27 年度ももちろんあります
RTOS 自作講習会の概要
 標準 ITRON ガイドブック(作り方の章)
  特に専門用語の解説をしっかり
 TOPPERS/SSP( オープンソース μITRON) を
ベース(シュリンク版というものを利用)
 ボードで実際に演習を交えて実施(雑誌付録ボー
ド RX62n)+E1 デバッガ
 ソースコードをステップベースで解説していきま
す。
   (SSP は省ステップなので可能)
 SSP 本来の機能からカーネル機能拡張(待ち状態
を追加)作業を演習実施。 dly_tsk を実装してい
きます。
講習のサンプル
 ソースコード解説の例
 カーネル拡張の例
カーネルコード解説
 sta_ker() から始まる。
 マルチタスクになる前段
階の処理
 ブート一回目だけの処理
としてカーネルオブジェ
クトの生成がある。
 SSP はカーネルオブジェ
クトといってもタスクの
み
 TCB の初期設定をする。
 最後にディスパッチャを
呼ぶ
void
sta_ker(void)
{
initialize_object();
kerflg = true;
intnest = 0;
dispatcher();
}
カーネルコード解説 2
 ディスパッチャ部分
 これは、途中で待ちになら
ない SSP 特有のディスパ
ッチ処理。
 優先度の高いタスクにプリ
エンプトはするが、待ち状
態にはならないから、タス
クの高いタスクが終了して
から低いタスクの起動はこ
ういう単純な呼び出しでよ
い。
 さらに SSP はスタック共
有型なのでスタックを切り
替える必要はない。
カーネルコード解説 3
 スケジューラは、今の
レディーキューから、
次にディスパッチする
タスクを選ぶ処理。
 レディーキューの構造
に依存するが、 SSP は
単純なビットマップの
み
uint_t
search_schedtsk(void)
{
return primap_search();
}
カーネルコード解説 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);
}
カーネルコード解説 5
 最後は、ユーザーからの OS 呼び出しである。
 タスクの起動で、基本はまずレディーキューに指
定したタスクの TCB をキューイングする
 カーネルの最後(遅延ディスパッチで)今の最優
先タスクを動かす。
 SSP は単純にサブルーチンコールしかしていない
ので、
 タスクは常に頭から動くが、プリエンプトされて
復帰するケースは
 自タスクよりも高いタスクを起動した場合。
 起動されたタスクが終了した時点で、タスク起動
後に戻ればいいのでサブルーチンコールするのと
同じ作りで実現している
タスクスイッチの例 ( 追加ペー
ジ)
 タスク 2 が RUN 中に、 act_tsk() でタス
ク 1 を起動
 タスク 1 が優先度が高い場合
 タスク 1 がサブルーチンコールされる動き
タスク2 中断
実行
タスク1
時間
act_tsk(task1)
呼び出し
 移植対応部 アセンブリ言語
割込み時のタスクスイッチの例(追加ペ
ージ)
 Task2 が RUN 中に割り込みが発生
 割込みハンドラで iact_tsk(task1) を呼び
出
 Task1 が優先度高い
0 1 2 3 4 5
割り込み処理
Task2
割り込み発生
Task1
時間
Copyright (C) Reserved 2010 Embedded Systems Co.,
割り込み発生 iact_tsk(task1)
Running
Ready
Dormant
カーネル (RTOS) 仕様
シュリンク版
 SourceForge に公開
 http://sourceforge.jp/projects/shrink-sp-rx62n/
 本物との違い
 割込みベクターの登録およびスタートアップの削
除  OS なし環境を流用
 なぜ作ったか?
 SSP カーネルの簡潔な処理に比較して割り込みベ
クタ関係の処理の難度が高く、コード量も多い。
カーネルを学ぶために必要な部分だけ残した。そ
れで動くことが必要と考えた
TOPPERS/SSP のカスタマイズ フル改造編
 (1)待ち状態を持つカーネルの設計
 (2)実装
   イ.コンテキストの保存と復元
   ロ.サービスコール部の作成
 (3) dly_tsk の追加
   イ.実装に必要な項目の整理
   ロ.指定時間待ちの実装 (dly_tsk)
 (4)評価・改善
   イ.制作したカーネルを用いる際の問題点の把握
   ロ.問題点の改善
(1)待ち状態を持つカーネルの設計
 待ちを持つということは
 タスクが  run --> wait --> dormant
     wait --> ready
 中断したところから再開しなければならな
い。
コンテキストの保存と復元
 1. コンテキストの保存エリアを検討する。
 2. コンテキストからタスクが復帰する仕組
みでのタスク起動部を実装する
 3. タスクスイッチする場合にコンテキスト
の保存と復帰をします。
 タスクがスイッチするときにコンテキスト
を保存 / 復帰するように実装する。
longjmp/setjmp の利用
 コンテキストの保存領域を渡して call すれば、そ
こに保存される。
 割込みには対応できないので工夫が必要
 シュリンク版の移植性を考慮して C でできるだけ
実装
longjmp/setjmp の限界
 RTOS のコンテキスト保存
は、 longjmp/setjmp だけでは、すべて
の場合に対応できません。
 少なくとも戻り値が、 R1 レジスタが保存
されないことがある。
 割り込みには対応できない
 割り込み部でレジスタ保存 / 復帰を補完す
る必要がある。
Longjmp/setjmp の考え方
 Setjmp はコンパイラが把握
   OS 呼び出しの場合は、 setjmp を使い、これ
はコンパイラが把握できる。 Setjmp から戻る場
合は、レジスタ一式が復帰して jmp してくるが
保存を必要としない一部のレジスタを壊しても続
行できる。
 割込みはコンパイラが把握できない
  割り込みの場合はコンパイラが把握していない
ため、どこでどのレジスタを壊していいというこ
とがなくなる。
今後の展開
 ポリテクセミナーの内容(プラットフォー
ム)の見直し
 SSP シュリンク版の拡張
セミナのプラットフォーム
シュリンク版のこれから
 ハード依存部が少ないことから移植がしや
すいはず
   raspberry pi に移植しました
     (baremetal 環境)
http://www.slideshare.net/alvstakahash
i/raspberry-pi-toppers-ssp
シュリンク版の展望
ありがとうございました
 ポリテクセンター兵庫 在職者研修
http://www3.jeed.or.jp/hyogo/poly/contents/holding/index.html
正式名称
独立行政法人高齢・障害・求職者雇用支援機構
兵庫職業訓練支援センター
兵庫職業能力開発促進センター
 アライブビジョンソフトウエア株式会社
http://homepage3.nifty.com/ALVS/
 Facebook
https://www.facebook.com/firstandlastandallways
ありがとうございました

More Related Content

Viewers also liked

リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズリアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズKazuhiro Takahashi
 
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)Kazuhiro Takahashi
 
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズToppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズKazuhiro Takahashi
 
Rx hew-シミュレータで動かすー説明書
Rx hew-シミュレータで動かすー説明書Rx hew-シミュレータで動かすー説明書
Rx hew-シミュレータで動かすー説明書Kazuhiro Takahashi
 
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Kazuhiro Takahashi
 
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編Kazuhiro Takahashi
 

Viewers also liked (10)

G7プレゼンrtos自作
G7プレゼンrtos自作G7プレゼンrtos自作
G7プレゼンrtos自作
 
Gr sakuraでtinet
Gr sakuraでtinetGr sakuraでtinet
Gr sakuraでtinet
 
G7プレゼンrtos自作
G7プレゼンrtos自作G7プレゼンrtos自作
G7プレゼンrtos自作
 
リアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズリアルタイムOsのカスタマイズ
リアルタイムOsのカスタマイズ
 
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
Gr sakuraで動く mrubyスマホリモコンカー(タミヤ製ラジコン改造)
 
mrubyOSチラシ
mrubyOSチラシmrubyOSチラシ
mrubyOSチラシ
 
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズToppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
 
Rx hew-シミュレータで動かすー説明書
Rx hew-シミュレータで動かすー説明書Rx hew-シミュレータで動かすー説明書
Rx hew-シミュレータで動かすー説明書
 
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
 
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
Raspberry pi で スマホリモコンでラジコンカーを動かすさっと動かす編
 

Similar to TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋

TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都Takuya Azumi
 
Toppers Project 3 major events.
Toppers Project 3 major events.Toppers Project 3 major events.
Toppers Project 3 major events.Kiyoshi Ogawa
 
Portable RT-Middleware environment on a USB memory for the robot programing ...
Portable RT-Middleware environment on a USB memory  for the robot programing ...Portable RT-Middleware environment on a USB memory  for the robot programing ...
Portable RT-Middleware environment on a USB memory for the robot programing ...s15mh218
 
テンプレート・エンジンVelocity
テンプレート・エンジンVelocityテンプレート・エンジンVelocity
テンプレート・エンジンVelocity隆行 神戸
 
OSC2021 Online Spring TOPPERS
OSC2021 Online Spring TOPPERSOSC2021 Online Spring TOPPERS
OSC2021 Online Spring TOPPERSHiroaki Nagashima
 
TOPPERSプロジェクトの紹介 OSC2018 Nagoya
TOPPERSプロジェクトの紹介 OSC2018  NagoyaTOPPERSプロジェクトの紹介 OSC2018  Nagoya
TOPPERSプロジェクトの紹介 OSC2018 Nagoyayasuo kominami
 
Osc tokyo20141019-last
Osc tokyo20141019-lastOsc tokyo20141019-last
Osc tokyo20141019-lastKiyoshi Ogawa
 
MacでTensorFlow on Dockerを 使って見る
MacでTensorFlow on Dockerを 使って見る MacでTensorFlow on Dockerを 使って見る
MacでTensorFlow on Dockerを 使って見る Hiroyuki Yoshida
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストAtsuhiro Kubo
 
Realizling Dapr Observability Using Elastic Stack
Realizling Dapr Observability Using Elastic StackRealizling Dapr Observability Using Elastic Stack
Realizling Dapr Observability Using Elastic StackShotaro Suzuki
 
グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦
グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦
グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦Rakuten Group, Inc.
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組みRecruit Technologies
 
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介CASAREAL, Inc.
 
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業株式会社 オープンソース・ワークショップ
 
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業株式会社 オープンソース・ワークショップ
 
Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoTakao Tetsuro
 

Similar to TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋 (20)

TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都
 
Toppers Project 3 major events.
Toppers Project 3 major events.Toppers Project 3 major events.
Toppers Project 3 major events.
 
Osc tokyo20141019
Osc tokyo20141019Osc tokyo20141019
Osc tokyo20141019
 
Web IDE Gitpodを使ってTOPPES OSを体験してみよう
Web IDE Gitpodを使ってTOPPES OSを体験してみようWeb IDE Gitpodを使ってTOPPES OSを体験してみよう
Web IDE Gitpodを使ってTOPPES OSを体験してみよう
 
Portable RT-Middleware environment on a USB memory for the robot programing ...
Portable RT-Middleware environment on a USB memory  for the robot programing ...Portable RT-Middleware environment on a USB memory  for the robot programing ...
Portable RT-Middleware environment on a USB memory for the robot programing ...
 
テンプレート・エンジンVelocity
テンプレート・エンジンVelocityテンプレート・エンジンVelocity
テンプレート・エンジンVelocity
 
OSC2021 Online Spring TOPPERS
OSC2021 Online Spring TOPPERSOSC2021 Online Spring TOPPERS
OSC2021 Online Spring TOPPERS
 
Osc2017 nagoya
Osc2017 nagoyaOsc2017 nagoya
Osc2017 nagoya
 
TOPPERSプロジェクトの紹介 OSC2018 Nagoya
TOPPERSプロジェクトの紹介 OSC2018  NagoyaTOPPERSプロジェクトの紹介 OSC2018  Nagoya
TOPPERSプロジェクトの紹介 OSC2018 Nagoya
 
Osc tokyo20141019-last
Osc tokyo20141019-lastOsc tokyo20141019-last
Osc tokyo20141019-last
 
MacでTensorFlow on Dockerを 使って見る
MacでTensorFlow on Dockerを 使って見る MacでTensorFlow on Dockerを 使って見る
MacでTensorFlow on Dockerを 使って見る
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテスト
 
Realizling Dapr Observability Using Elastic Stack
Realizling Dapr Observability Using Elastic StackRealizling Dapr Observability Using Elastic Stack
Realizling Dapr Observability Using Elastic Stack
 
グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦
グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦
グローバル企業の中で「変化」を仕掛ける楽天技術研究所 Rakuten Institute of Technology の挑戦
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
 
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
 
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
 
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
 
Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour Tokyo
 

TOPPERS/SSPを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ @ソフトウェア講演会名古屋