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