ART-Linux によるリアルタイム制御

なぜ ART-Linux なのか?


by(99年度、的塲橋本河田)
参考文献:インターフェース 1999年 11 月号からのうけうり。

当研究室では、I/O 制御の容易なパソコンに PC-UNIX を導入し、UNIX のネットワーク機能を付加することで、 制御システムをネットワークに組み込むことを目指している。ところが UNIX はマルチユーザ、マルチタスク の OS であるから、タイムシェアリングによって複数のプロセスが走り、このため計測プロセスが 正確に一定周期で動作する保証がない。このため PC-UNIX のひとつである Linux では RT-Linux という kernel パッチが 開発されている。ただし、RT-Linux では リアルタイムプロセスは カーネルモジュールの形でカーネルに ダイナミックリンクして実行される。従ってリアルタイムプロセスが死ぬと、カーネルそのものも落ちる危険性が高い。 また、他の通常プロセスとリアルタイムプロセスのデータのやりとりは RT-FIFO を通じて行われるが、 このプロセスは Linux カーネルによって管理されており、Linux カーネルのスケジューラにはこの プロセスに通信に必要な処理時間を確保する機能がない。さらにハードウエア割り込みハンドラ の実行順序を制御できない。これらの点から RT-Linux は大規模なリアルタイムアプリケーションの 開発には不十分とされている。

これらの問題を解決するため、電総研の石棉陽一氏によって ART-Linux が開発された。 ART-Linux を採用すると、既存のドライバを変更することなく、アプリケーション側にリアルタイム制御指令の コマンドを挿入することで、処理ループのリアルタイム性を確保できる。また Linux のシステムコールも すべてそのまま使用可能である。他のプロセスとの情報のやりとりも通常プロセスとまったく同様に行うことができる。 つまり通常の UNIX のプロセスとほぼ同様のプログラミングが可能となるのである。

現在、ART-Linux-0.999 は、Linux kernel 2.0.36 への差分パッチの形で配布されている。
http://www.etl.go.jp/etl/robotics/Projects/ART-Linux/

kernel 2.2.* 用のパッチ、および Redhat 系バイナリパッケージが上記 URL で配布されるようになった。


SST_Labo's Home Page