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