RTAIのインストール方法
FRONT PAGE

コレは何?
 RTAIの導入手順書です。 一般的なLinuxディストリビューションにおいてリアルタイム動作を可能とするものです。 カーネルモジュールを実時間で動かすことだけでなく,ユーザ空間においてスレッドを実時間で動作させることも可能になります。 C/C++のライブラリをそのまま利用できますし,ディスプレイ,マウス,NIC等々も使用できるので便利です。 実験結果をそのままfprintfでHDDにファイルとして書き込むこともできます。 速度の面ではDSPやFPGAには敵いませんが,便利さでは圧倒的にこちらの方が上でしょう。

(09/06/10改訂)

ここの内容は少々古いので, RTAI+Fedora12 64bit もしくは RTAI3.9+Fedora17 64bit を試した方が良いかもしれません。(12/07/26追記)
最新版はこちら→ RTAI3.9+Fedora17 64bit(13/07/29追記)


ハードウェア/ソフトウェア構成例
 使用したパソコンのハードウェアおよびソフトウェア構成は以下の通りです。
ハードウェア構成:Pentium4 + 845G + Intel EtherExpressPro
ソフトウェア構成:kernel-2.6.23 + Slackware-12.2 + rtai-3.7
上記で動作を確認しています。


導入方法
 まず普通に slackware12.2 を入れます。 注意点として,slackwareインストール時に画面設定を Normal (default) にすること。 画面が表示できなくなります。

インストールが終わったら、 研究室で共有するディレクトリをどっかに作っちゃいましょう。
mkdir /hoge
hogeの権限を変えます。
chmod 777 /hoge
RTAIのカーネルとかの基ファイル入れるディレクトリを hoge に作っておきます。
cd /hoge
mkdir RTAI

linuxのカーネルとRTAIを落として hoge に入れておきます。 例えば以下からダウンロード
ココ→ http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2
ココ→ https://www.rtai.org/RTAI/rtai-3.7.tar.bz2
その後、以下で解凍。
tar jxf linux-2.6.23.tar.bz2
tar jxf rtai-3.7.tar.bz2

解凍した内容を/usr/srcに移します。
cd /usr/src
cp -r /hoge/RTAI/rtai-3.7 ./
cp -r /hoge/RTAI/linux-2.6.23 ./

カーネルにパッチを当てます。
cd /usr/src/linux-2.6.23
patch -p1 < ../rtai-3.7/base/arch/i386/patches/hal-linux-2.6.23-i386-1.12-03.patch

menuconfig 使って設定します。
make menuconfig
必須設定項目は以下の通り
◆ Processor type and features
◇ Processor family
Pentium4... [SELECT] (CPUによって変更せよ)
Symmetric multi-processing support 多コアの場合[ENABLE] 単コアの場合[DISABLE]
Interrupt pipeline [ENABLE]

◆ Power management options (ACPI, APM)
ACPI Support (Advanced Config....) [DISABLE]
◇ CPU Frequency scaling
CPU Frequency sacaling [DISABLE]

◆ Loadable module support
Module versioning support [DISABLE]

コンパイルしてカーネルイメージを構築します。
make all
make modules_install
make install
どうやら勝手に /boot/vmlinuz を書き換えるようである。 バックアップを事前に取っておいた方が良いかもしれないが、男ならバックアップは必要ない。 ここで再起動。
shutdown -r now
起動後に画面が出ない場合は,liloconf で vga=normal にしてLILOを再構築しましょう。
起動したらカーネルの名前を尋ねてみましょう。
uname -r
ここで、2.6.23 と返ってくればちゃんと入ってます。 RTAIをぶち込みます。(二行目は元からあるリンクを念のため一度削除している。)
cd /usr/src/
rm linux
ln -s /usr/src/linux-2.6.23 linux
cd rtai-3.7
make menuconfig
menuconfigはデフォルトのままでいけるようです。(ただしRTnetを使う場合は要設定) In-kernel C++ support をチェックしたらエラー。2.6.x ではだめだそうです。 残念。仕方ないのでカーネル内でのC++は諦めますか。 コンパイルしてインスコします。
make all
make install

エラーが出なければおk。 /etc/rc.d/rc.localの最後に以下を追加してモジュールが自動的に入るようにする 必要に応じてモジュールを入れること。
insmod /usr/realtime/modules/rtai_hal.ko
insmod /usr/realtime/modules/rtai_sched.ko # カーネルモードで動かすとき
insmod /usr/realtime/modules/rtai_lxrt.ko # ユーザーモードで動かすとき

/etc/profileに追加
export PATH=/usr/realtime/bin:$PATH
これをしないと制御プログラムがmakeできないので注意。 以下を打ってRTAIの動作を確かめましょう。
cd /usr/realtime/testsuite/user/latency
./run
なんか動いていそうなメッセージが出たらおk。
	*
	*
	* Type ^C to stop this application.
	*
	*
	
	## RTAI latency calibration tool ##
	# period = 100000 (ns)
	# average time = 1 (s)
	# use the FPU
	# start the timer
	# timer_mode is oneshot
	
	RTAI Testsuite - USER latency (all data in nanoseconds)
	2009/06/8 23:16:02
	RTH|    lat min|    ovl min|    lat avg|    lat max|    ovl max|   overruns
	RTD|       -440|       -440|       -292|       1985|       1985|          0
	RTD|       -415|       -440|       -262|       6791|       6791|          0
	RTD|       -383|       -440|       -313|       5841|       6791|          0
	RTD|       -396|       -440|       -306|       1743|       6791|          0
	RTD|       -383|       -440|       -285|       7255|       7255|          0
	RTD|       -402|       -440|       -301|       1323|       7255|          0
	RTD|       -383|       -440|       -302|       7042|       7255|          0
	RTD|       -379|       -440|       -282|       1394|       7255|          0
	RTD|       -359|       -440|       -284|       1130|       7255|          0
	RTD|       -383|       -440|       -300|       7165|       7255|          0
	RTD|       -383|       -440|       -300|       7165|       7255|          0
	
	>>> S = 98.696, EXECTIME = 0.0287159
「overruns」が零であれば問題なく動いてるはずです。 以上でインストール完了です。





- 97661 -

研究室の横の倉庫 - Side Warehouse of Laboratory
Copyright(C), Side Warehouse, All rights reserved.