| マイクロPCとリアルタイムOS(RTAI) | 
|---|
|   目  次 1 はじめに 2 概 要 3 API解説 5節 スケジューラ 6節 タスク生成とタイマー IPC(列挙) 4 作 成 5 Download 6 SquashfsによるROM化 7 LiveUSB/LiveNET  | 
    
![]()  | 
    
| 1 はじめに | 
|  RTAI (Real-Time Application Interface)は、DIAPM(Department
      of Aerospace Engineering of Politecnico di
      Milano)で開発され、http://www.rtai.org/でオープンソースプロジェクトとして公開されている。 もともとAdeosと呼ばれるナノカーネル上にLinuxカーネルとRTOSを実装ししたようであるが、これがRtLinuxのパテントを避けることができることから、FreeなGPLとして発展したようです。  |  
    
![]()  | 
    
| 2 概 要 | 
 RTAIはAdeosのひとつの発展形としてできた、商用 RTLinuxに対抗するものです。 RtLinuxにも Freeなものがありますが、実用的には有償の RtLinux
      Pro以降になります。 また肝心の割り込み手法は 米国内特許になっています。ならば、FreeでありGPLなRTOSを作ろうということで作られたのがRTAIである(らしい)。
 これを Debian を使用してVIA C3(Eden) 667Mhzにインストールし、256Mbのフラッシュメモリで動作させる。 使用マイクロPCは HighTechSysem 製 EES3610 +メモリ128Mb + CF256Mbのディスクレスマシン。  | 
    
| 3 API解説 | 
|   3.1 5節 スケジューラ 3.2 6節 タスク生成及びタイマー 3.3 IPC(列挙しただけ)  | 
    
| 4 作 成 | 
| CF版 debian-linux の作成方法は ここ にあります。 このCFのカーネル部分に picokernel に相当する部分の充当をしなければならない。 このためkernel-2.6.17に対して ~rtai-3.4/base/arch/i386/patch/ 以下にある該当するpatchファイルでpatchを当てる。 続いて~rtai-3.4直下で以下を行います。 make menuconfigインストールされているプログラム類。 /usr/realtime       RTAI本体~rtai-3.4          上記ソース類~showroom           小さな使用例たくさん | 
    
| 5 DOWNLOAD | 
|  まず、基になるDebian3.1-kernel-2.6.17.14、RTAIパッチ済みの最小システムを
      ここ から持ってくる。この中にRTAIの基本的なすべてのものがコンパイル済みで含まれています。 内容はDebianのインストールを可能とする最小のシステムおよびRTAIのシステムモジュール(/usr/relatime)(~rtai-3.4/)と参考プログラム(~showroom/)のみが入っています。(注意)正味256Mbあります。 CFはbuffalo RCF-X 256MBを対象にして、IDE(1,1)2番目のチャンネルのマスターにアサインしています。 ダウンロードしたファイルはCFのイメージそのものですから、書き込み可能なLinuxマシンにてddコマンドでCFに書き込んでください。(これはターゲットでは/dev/hdcになります。) なお、"root"のpasswdおよびuser"admin"のpasswdは共に"admin01"です。 実行は/usr/realtimeに実行性能を測るサンプルが、~showroot/には小さなサンプルがあり、その中に runファイルがあります。 当該ディレクトリに移動して ./runもし rtf が必要な場合は #!/bin/bash
      for n in `seq 0 9`
      do
          f=/dev/rtf$n
          mknod -m 666 $f c 150 $n
      done | 
    
| 6 SquashfsによるROMファイル化 | 
| 
       Flashメモリは書き換え回数に上限があります。書き換えの必要なファイルはtmpfsとしてRAMDISKでの処理になります。 Debian4.0では256Mbを超えそうなことと、Flashメモリの特性を考慮して、Squashfsに変更することにしました。この基になるのはDebian LiveCDです。 簡単に手順を説明すると、LiveCDのisolinuxをgrubへ変更し、改めてDebia4.0で作成したカーネルvmlinuxの入れ替えとinitrd.imgの/lib/modules以下の入れ替えを行います。(これをliveCFとする。) 次に、filesystem.squashfsを解凍して別のパーティションにルートファイルシステムを作成し、同様にカーネルを入れ替えます。これにgrubを追加すれば自立的にブートできるパーティションが出来上がります。 ブートアップしてrtai-3.5をインストールし、テストしながら必要なモジュールがあればapt-get install xxxで供給し、全てのテストを完結する。できあがったファイルシステムをmksquashfsでfilesystem.squashfsに戻し、liveCFのfilesystem.squashfsと入れ替える。 こうしてできあがったliveCFを立ち上げるとパスワード等を設定していないので、いきなりユーザcasperでlogin状態になります。 ファイル構成は次のようになります 
      live:~# df
      Filesystem      1K-blocks    Used    Available  Use%   Mounted on
      tmpfs             55556         0       55556     0%   /lib/init/rw
      udev              10240        40       10200     1%   /dev
      tmpfs             55556         4       55552     1%   /dev/shm
      rootfs           145476     93060       52416    64%   /
      /dev/hdc1        120807    108722        5848    95%   /live_media
      tmpfs             55556      3140       52416     6%   /cow
      tmpfs             55556         0       55556     0%   /tmp
      live:~#
      ここでrootfsは圧縮されたルートファイルシステムです。/live_mediaはCFの内容そのままです。ここでは128MbのCFを使用しています。rootfsはReadOnlyですから書き換えの必要があるものは/cowにまとめられています。
      live:~# ls -l /cow
      total 0
      drwxr-xr-x 2  root  root    60  2007-07-21 07:43 cow
      drwxr-xr-x 8  root  root  1480  2007-07-21 09:59 etc
      drwxr-xr-x 4  root  root    80  2007-07-21 09:59 home
      drwxr-xr-x 3  root  root    60  2007-07-21 07:44 lib
      drwxr-xr-x 2  root  root    60  2007-07-21 07:43 live_media
      drwxrwxrwt 2  root  root   200  2007-07-21 07:43 tmp
      drwxr-xr-x 3  root  root    60  2007-07-21 07:43 usr
      drwxr-xr-x 7  root  root   140  2007-07-21 07:44 var
      live:~#
      これらのファイルはシステム終了時にCFにセーブしましょう。とはいえ、128Mbではその余裕はありませんが。このLiveCFはここにあります。 補足 suへの移行法       $ sudo passwd
      Enter new UNIX passsword: xxxxxxxx
      Retype new UNIX password: xxxxxxxx
      $ su 
      Password: xxxxxxxx
      #
       なお、ここで使用されているunionfsは実用性の点からaufsへ変更しましょう。 | 
    
| 7 Live-USB | 
| 多くのマシンで動作可能にするもう一つの方法としてLiveUSBがあります。上記LiveCFのローダをsyslinuxに置き代えたUSB版のLiveUSB-Rtaiはここにあります。なお、このLiveUSBはLive−Helperで作成したものです。また、このunionfsはaufsに変更してあります。 | 
| Live-NET | 
| grub->isolinux->syslinuxと進んできて、いよいよNetworkBootにたどり着きました。NetworkBootも(Intel提唱PXEに限れば) ローダーがpxelinuxになるだけで後は同じです。Netで結ばれた多数の端末マシンの一括制御、一括修正、WakbeOnLanを使えばリモートで全て操作可能で あり、多端末のデータギャザリング等では威力を発揮しそうです。 | 
| ●RT-Linuxデバッグの一方法● ●マイクロPCとRTAI-Lab● ●PIC24FとFreeRTOS●  | 
    
Guest No.   |