| マイクロ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. |