沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2002.12.12 | 片桐 | 小山 | 初版 |
CPU ボード | i486 133MHz, Memory 16MB, SVGA chip, 10M Ethernet, ISA bus |
記憶装置 | Flush memory 64MB (IDE ディスク互換) |
FPGA ボード | 標準ゲート数 10,000, RAMビット数:6,144, ユーザI/O数:134, ISA bus |
オペレーティングシステム
RT-Linux Ver 2.3 (Linux kernel 2.2.14)
ここでは、オペレーティングシステムのRT-Linuxについての調査を報告する。
ソフトウェアは当然ハードウェアの制限に準じたものを作る。
RT-Linuxとは
RT-Linuxは、Linuxの機能にリアルタイム処理をする機能を付け加えたものである。
実時間処理。他のデバイスからの入力信号や、プログラムからの要求に対して、即座に(リアルタイムに)これを処理する方式。制御システムなどでは、一定時間内に処理を確実に終了しなければならない場合があるがこのような実時間性を保証し、許容される時間内に処理の完了を保証する処理方式がリアルタイム処理である。
2.2 RT-LINUXのスケジューリング リアルタイムカーネルは、リアルタイムプロセスとLinuxカーネルを対象にしたスケジューリングを行う。このときリアルタイムプロセス(タスク)の優先度のほうがLinuxカーネルよりも高く、リアルタイムプロセスの優先度は任意に決めることができる。
Linuxでは、スケジューリング間隔が10ms程度であるが、PC/AT機の内蔵タイマICにより1μs程度の間隔になっている。このためLinuxでは、ハードウェア割り込みを受け付けてISR(インタラプトサービスルーチン)を呼び出すまでに600μsまたは20msぐらいかかるが、RT-Linuxではこれを15μs程度の短縮している。
つまり、リアルタイムカーネルがCPU割り込み制御の主導権を握り、スケジューラも兼ねることによって、時間要素をLinuxカーネルに依存しないで、自身で制御できるようにしている。
RT-Linuxの処理は以下のような流れに基づいて行われる。 | |
※赤で囲まれた部分がRTLinuxによって拡張される部分 ※緑で囲まれた部分がユーザーが作成する(提供される)部分 図2 処理の流れ |
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.org Home Page http://www.rtlinux.org |
BROKEN's Advanced Vehicle Laboratory http://homepage1.nifty.com/BROKEN/index.htm |