沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2002.12.15 | 中西 | 村田 | 初版 |
RT-Linux(Real Time Linux) はLinuxにパッチを当てたリアルタイムOSである。
リアルタイムOSとは実時間処理用のOSで、要求された時刻に確実に処理が行われるものである。
RT-Linuxの特徴は、市販のRT-OSに比べて遥かに安価(無料)で手にはいること、
Linuxの持つアプリケーションや開発環境をそのまま利用できることである。
リアルタイムタスクとLinuxプロセス間の通信は、RT-Linuxカーネル内の情報交換機能しての
リアルタイムFIFO(First In First Out,データが転送した順番で取り出される機能)によって実現される
Linuxでリアルタイム処理を実現するために、RT-Linux V2.3では、次のカーネルモジュールが供給されている。
カーネル | 内容 |
rtl_sched | POSIXインターフェースとRT-Linux V1.xで供給されている APIの双方をサポートする優先順位スケジューラ。 |
rtl_time | プロセッサのクロックを制御し、ハンドラのクロックに接続するインターフェースを 提供する。 |
rtl_posixio | デバイスドライバに対して、POSIXスタイルのopen/read/writeインターフェースを サポートする。 |
rtl_fifo | リアルタイムタスクとLinuxプロセス間の、データのread/writeインターフェースを提供する。 |
RT-Linux V2.x用に開発されたリアルタイムプログラムを実行するためには、あらかじめこれらのカーネルモジュールをカーネルに組み込んでおく必要がある。
カーネルモジュールの組み込み方法は、シェルスクリプトを使う。(ひとつひとつ組み込むこともできる)
FIFOの役割
FIFO番号 |
役割 |
FIFO1 |
超音波センサ番号選択用 |
FIFO2 |
超音波による測定距離データ、エラー値格納用 |
FIFO3 |
ロータリーエンコーダのカウント値書込用 |
FIFO4 |
PWMへの速度データの受取用 |
FIFO5 |
RE,PWMへのSTART、STOP等の各種指令やタスクの優先度、実行周期の受取用 |
各タスク・ドライバの機能
RT-Linuxの操作 RT-Linuxを立ち上げた後、以下のコマンドが使用できる。このコマンドはrootでのみ有効である。
RT‐Linuxのリアルタイムプログラムはカーネルモードで動く。 カーネルモードとはメモリやデバイスなどが保護されていない状態である。 通常のプログラムはユーザーモードで実行されるため、例えプログラムが暴走しても システムがダウンしないようになっている。しかし、リアルタイムプログラムの メモリ空間は全く保護されておらず、ポインタ操作を誤るとすぐに暴走する。 動作環境として提供されている機能は、最低限のタスクとFIFO、セマフォだけである。 セマフォは複数のプログラム間での同期をとる仕組みである。
しかし、その代償として十分に高速で動作する。
CPUやチップセットにもよるが、10μsのタイマ割り込みですら可能だ。
まとめると
利点:
また、RT-LinuxのようにLinuxにパッチを当てて実時間処理を可能にしたOSに ART-Linux というものが存在する。こちらはRT-Linuxとは異なり、ユーザー空間でプログラムを実行 するため、メモリが保護されている。従って、システムが壊れる可能性は低いと思われる。
現段階ではMIRSのシステム基本構成がRT-Linuxとなっているので導入できるか不明であり、 ART-Linuxの利点・欠点の調査も不十分である。
関連文書 |
---|