沼津高専 電子制御工学科
MIRS0204 技術調査
RT-Linux
MIRS0204-TECH-0008
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2002.12.15 中西 村田 初版

ソフトウェア調査報告


目次

  1. RT-Linuxとは
  2. RT-Linuxのデータ処理の流れ
  3. RT-Linuxの構造
  4. ソフトウェア構成
  5. RT-Linuxの操作
  6. RT-Linuxの利点・欠点

  1. RT-Linuxとは
  2. RT-Linux(Real Time Linux) はLinuxにパッチを当てたリアルタイムOSである。 リアルタイムOSとは実時間処理用のOSで、要求された時刻に確実に処理が行われるものである。 RT-Linuxの特徴は、市販のRT-OSに比べて遥かに安価(無料)で手にはいること、 Linuxの持つアプリケーションや開発環境をそのまま利用できることである。

  3. RT-Linuxのデータ処理の流れ

  4. リアルタイムタスクとLinuxプロセス間の通信は、RT-Linuxカーネル内の情報交換機能しての リアルタイムFIFO(First In First Out,データが転送した順番で取り出される機能)によって実現される

  5. RT-Linuxの構造
    1. RT-Linux基本用語

      1. POSIX…IEEEによって定められたUNIXシステムのインターフェース仕様。RT-Linux v2.3では全てのAPI関数がPOSIXスタイルで 構成されているのではなく、POSIX+非POSIX(RT-Linux独自)のスタイルでプログラミングを行う。
      2. API関数…RT-Linuxで用意されている関数
      3. API…Applocation Programing Interfaceの略。アプリケーションは、基本的にすべての処理をこのAPIを経由して行なう
      4. スレッド…複数のCPUを持つコンピュータシステム上で、共有メモリを使用して 並列計算を行うOS機能。スレッドプログラミングを行うことで、1つのプログラム(プロセス) の中で、複数のスレッドがアドレス空間を共有して、情報の交換を高速で効率的に行うことができる。
      5. FIFO…リアルタイムタスクとLinuxプロセス間の情報交換機能。(First In First Out)

    2. リアルタイムカーネルモジュール

      Linuxでリアルタイム処理を実現するために、RT-Linux V2.3では、次のカーネルモジュールが供給されている。
      カーネルモジュール
      カーネル内容
      rtl_schedPOSIXインターフェースとRT-Linux V1.xで供給されている APIの双方をサポートする優先順位スケジューラ。
      rtl_timeプロセッサのクロックを制御し、ハンドラのクロックに接続するインターフェースを 提供する。
      rtl_posixioデバイスドライバに対して、POSIXスタイルのopen/read/writeインターフェースを サポートする。
      rtl_fifoリアルタイムタスクとLinuxプロセス間の、データのread/writeインターフェースを提供する。

       RT-Linux V2.x用に開発されたリアルタイムプログラムを実行するためには、あらかじめこれらのカーネルモジュールをカーネルに組み込んでおく必要がある。
       カーネルモジュールの組み込み方法は、シェルスクリプトを使う。(ひとつひとつ組み込むこともできる)


  6. ソフトウェア構成
    1.  ソフトウェアは下記のタスク・ドライバから構成される。  
      • 超音波センサ(RT-task1)
      • 赤外線センサ(driver1)
      • タッチセンサ(driver2)
      • ロータリーエンコーダ・PWM(RT-task2)
      • LCD(driver3)

       これらのタスク・ドライバと行動制御プログラムとのデータ、コマンドのやりとりはFIFOによって行われる。このFIFO一つに対し一つの役割を持たせ必要な数だけ用意する。具体的に下記の表に示す。

      FIFOの役割

      FIFO番号
      役割
      FIFO1
      超音波センサ番号選択用
      FIFO2
      超音波による測定距離データ、エラー値格納用
      FIFO3
      ロータリーエンコーダのカウント値書込用
      FIFO4
      PWMへの速度データの受取用
      FIFO5
      RE,PWMへのSTART、STOP等の各種指令やタスクの優先度、実行周期の受取用

      各タスク・ドライバの機能

      • 超音波センサ(RT-task1)
           行動制御プログラムからコマンド(センサ選択番号)がFIFO1に書き込まれてから超音波が送信される。
           超音波センサを選択した時の時刻と、割込みがはいった時の時刻のデータから距離に換算し、FIFO2に書き込む。
           ただし、一秒たっても割り込みが入らない場合はタスク1(タイムアウトタスク)が起動し、エラー値をFIFO2に書き込んでタイムアウトとする。

      • 赤外線センサ(driver1)
           赤外線センサタスクの機能は、割り込みが発生したとき、他の割り込みをマスクし、データの保存を行いその割り込み信号をリセットした後、通常動作に戻ることである。

      • タッチセンサ(driver2)
           タッチセンサタスクの機能は、タッチセンサが反応する度にこのタスクが起動し、タッチセンサの状態を保存することである。

      • ロータリーエンコーダ・PWM(RT-task2)
           ロータリーエンコーダタスクの機能は、一定時間ごとにロータリーエンコーダの値を読み込んで、そこからx,y座標と姿勢角θを計算しCPUにデータを送ることである。
           PWMタスクの機能は、CPUから受け取ったduty比のデータをPWM信号に変換してモーターへ送ることである。

      • LCD(driver3)
           LCDドライバは、各センサ・ロータリーエンコーダ・PWMの情報やシステムの状態を表示することを目的とする。


  7. RT-Linuxの操作
  8. RT-Linuxの操作 RT-Linuxを立ち上げた後、以下のコマンドが使用できる。このコマンドはrootでのみ有効である。

    モジュール…Linuxのカーネルに機能を追加するためのプログラム

  9. RT-Linuxの利点・欠点
  10. RT‐Linuxのリアルタイムプログラムはカーネルモードで動く。 カーネルモードとはメモリやデバイスなどが保護されていない状態である。 通常のプログラムはユーザーモードで実行されるため、例えプログラムが暴走しても システムがダウンしないようになっている。しかし、リアルタイムプログラムの メモリ空間は全く保護されておらず、ポインタ操作を誤るとすぐに暴走する。 動作環境として提供されている機能は、最低限のタスクとFIFO、セマフォだけである。 セマフォは複数のプログラム間での同期をとる仕組みである。

    しかし、その代償として十分に高速で動作する。 CPUやチップセットにもよるが、10μsのタイマ割り込みですら可能だ。
    まとめると
    利点:

    欠点:

    また、RT-LinuxのようにLinuxにパッチを当てて実時間処理を可能にしたOSに ART-Linux というものが存在する。こちらはRT-Linuxとは異なり、ユーザー空間でプログラムを実行 するため、メモリが保護されている。従って、システムが壊れる可能性は低いと思われる。

    現段階ではMIRSのシステム基本構成がRT-Linuxとなっているので導入できるか不明であり、 ART-Linuxの利点・欠点の調査も不十分である。


    関連文書
    Real Time な制御