トップページlinux
981コメント337KB

リアルタイムリナックスについて

■ このスレッドは過去ログ倉庫に格納されています
0001wait_npNGNG
リアルタイムリナックス(RT-Linux)について語り合うスレです。
素朴な疑問やくだらない質問も受け付けます。

RT-Linux  http://rtlinux.cs.nmt.edu
ART-Linux http://www.etl.go.jp/etl/robotics/Projects/ART-Linux

わかることは答えます。わからないことは皆さんが答えてください。
0002名無しさん@お腹いっぱい。NGNG
他のLinuxと何が違うの?
0003名無しさん@お腹いっぱい。NGNG
>>2
ここ嫁。
http://www.etl.go.jp/etl/robotics/Projects/ART-Linux/PressDoc990426.html
0004名無しさん@お腹いっぱい。NGNG
RT-Linuxをつかうと、例えば正確に100マイクロ秒周期で
スレッドを動作させたりできるようになります。
普通のLinuxだとスケジューラがあまり時間に細かくないので
10ms周期くらいが限界です。
0005名無しさん@お腹いっぱい。NGNG
>>3
1009。

ハード制御以外での使い道って、例えばどんなの?
0006名無しさん@お腹いっぱい。NGNG
>>4
1009
0007名無しさん@お腹いっぱい。NGNG
ビープ音で音階が作れます。
0008名無しさん@お腹いっぱい。NGNG
>>8
1009
0009名無しさん@お腹いっぱい。NGNG
>>12
1009
0010名無しさん@お腹いっぱい。NGNG
ハード制御以外での使い道は・・・あまりありません。

パラレルポートに電球をくっつけて高速で点滅させて
振ると文字が浮き出る棒とかを作ると結構楽しいです。
0011名無しさん@お腹いっぱい。NGNG
>>7
1009
今年、二番目にウケました。

>>10
ハードの評価環境は高くつくので、ソレは名案だと思います。
0012名無しさん@お腹いっぱい。NGNG
age
0013名無しさん@お腹いっぱい。NGNG
RTLINUXで正確に何n秒かウェイトしたいときは
どうすばいいの?

正確な周期は作れるけどその都度周期が変更できるわけじゃ
ないから任意の時間のウェイトがつくれないで困り
001413NGNG
待ち時間を正確に作れないので、
待ち時間を必要とする処理はスレッドにして
そのなかで実行するようにしました

待ち時間の変更は取りうる値の最大公約数で
周期を設定してカウントして待つようにしました

なんか、スレッドがいっぱいあるとCPUがもったいない・・・
0015名無しさん@お腹いっぱい。NGNG
AD・DAボードでロボット制御。
ディジタル制御理論を実現するのに使います〜
0016名無しさん@お腹いっぱい。NGNG
スレッド間の待ち合わせってどうやってる?

セマフォって無いよね?
0017名無しさん@お腹いっぱい。NGNG
>>15
ロボット制御ってそんなにリアルタイム性が要求されるものなの?
0018名無しさん@お腹いっぱい。NGNG
>>17
学生時代に二足歩行ロボットの研究に少々携わっていました。
世間でいわれる全てのロボットには該当しないと思いますが、ある程度進化した二足歩行ロボットではリアルタイム性が必要なようです。

前進歩行=下半身での前進駆動+上半身での姿勢制御(本当はもっと細かいですけど)
とすれば、スピードが上がるにつれて、リアルタイム性が重要になるようで、これが実現されないと、どちらかの方向に倒れてしまいます。
顕著な例では、メモリーが足りないWindowsOSでコレをやると、スワップしている間にバタンです。
0019名無しさん@お腹いっぱい。NGNG
組み込み系にGPLは厳しそう。
0020名無しさん@お腹いっぱい。NGNG
>>19
問題なし
ソースを見せろといわれたら見せればいいだけだもん
0021名無しさん@お腹いっぱい。NGNG
ARTって最近どうなの?Interfaceの特集で興味もったんだけど、とてもおっかける
ヒマがなくて
0022名無しさん@お腹いっぱい。NGNG
>>21
2.2.19までは対応しているみたいね
2.4.xはまだらしい
0023名無しさん@お腹いっぱい。NGNG
RTOSを下に動かしておいて、その 1 process として Linux
が動くとかいう arch になっているんだっけ?

あれ? これは Java + ITRON な JBlend だったかな?
0024名無しさん@お腹いっぱい。NGNG
>>23
おおざっぱに言ってそんな感じです。
カーネルをぶっ飛ばしてもRTのタスクはピンピンしてます。
その頑丈さにはかなりビビリます。
0025名無しさん@お腹いっぱい。NGNG
>>23
大体そんな感じですね。Emblixという組み込みLinuxの団体では、
Linux on ITRONやってますよ。要注目。
0026名無しさん@お腹いっぱい。NGNG
>>25
http://www.emblix.org/
のことね。日本の団体じゃん。
0027名無しさん@お腹いっぱい。NGNG
>>25
Emblix は中島先生ですな。RT-Mach はどうしたんじゃ〜。

さすがに中島先生本人を突っつくのはアレだから、東京生活にも
さすがに慣れたであろう会津くんでもつっついてみるか…
0028名無しさん@お腹いっぱい。NGNG
TimeSysのリアルタイムLinuxはグッドです。
0029名無しさん@お腹いっぱい。NGNG
>>17
モータとか制御するには、制御部分のリアルタイム性が重要になるんよ。
昔は(今でも)、DSPとか専用のハード+組み込みOS(orプログラム)でやってたけど、
Linuxだと開発が楽だし、黙っててもマルチプロセスなんで、
制御+ネットワーク、高度な判断等々同時にさせる場合には楽だよね。
でも、実際販売されている機器に応用されている例はまだ少ないかも。

速さだけでいえば、DSPにはまだかなわんだろうな。>RT-Linux

>>4
100μでループまわせる?
どんな処理させてるの?
0030名無しさん@お腹いっぱい。NGNG
>>29
とある調歩同期式の変な機械と通信するのに使いました
なんか部品が増えるのはいやーんとか言われて
しかたなくそこらにあった汎用I/Oボードを使う羽目に。
でも9600bpsくらいはよゆうでしたよ
0031名無しさん@お腹いっぱい。NGNG
RealTime age!!
0032名無しさん@お腹いっぱい。NGNG
最近はやりのワンボードマイコンではRT化不能?age
0033名無しさん@お腹いっぱい。NGNG
誰かTimeSys使っている人いませんか?
New YorkのLinux Worldで大きく出展してたらしいんですが、、、
RT-Linuxとはアーキテクチャがかなり違うってのは
HPで見たんですが、実際に割り込み応答時間は
どれくらいでしょうか?
0034名無しさん@お腹いっぱい。NGNG
Hard Hat Linux はどうよ?
0035名無しさん@お腹いっぱい。NGNG
>>34
お金のかかるのはちょっと・・・
0036名無しさんNGNG
UNIX 系でリアルタイムってのがむしろ無謀。
そういう設計じゃないじゃん。元々。
0037名無しさん@お腹いっぱい。NGNG
>>36
でもコーディングがラクだからね・・・
Linuxの資産が動いて、なおかつそこそこのリアルタイム性が
確保できれば、少しシアワセだと思わない?
0038名無しさん@お腹いっぱい。NGNG
>>37
うん。ホントのハードリアルタイムが必要な処理ってそれほど多く
ないでしょ?ただ、速い奴はほとんどLinux上のシステムコールとの
連絡が作りこまれていないので、自分で書かなきゃいけないけど、
それでもフツーのリアルタイムと比べたらゼンゼン便利
0039名無しさん@お腹いっぱい。NGNG
>>36
ほとんどのUNIX系リアルタイムOSってリアルタイムモニタ
上のタスクあるいはVMとしてUNIXが走るようになってるから
別にUNIXがリアルタイムに向かなくてもそんなに問題ないよん。
0040名無しさん@お尻おっぱい。 NGNG
>>39
RT-Linuxはたしかにそんな感じ。
RTスレッドの中でシステムコール呼べないし。
ART-Linuxは、たしかスケジューラをいじくりたおしてリアルタイムに
してたような気がするから、きついね。遅いし。
0041名無しさん@お腹いっぱい。NGNG
同じ優先度のタスクがキューにたまっていたとき、最初にサービスを受けるタスクはキューの先頭のタスク?
0042名無しさん@お尻おっぱい。 NGNG
>>41
.  ∧_∧
 (◎ω◎) キュー
っていうくらいだから、先にたまった方からだろうね
0043質問クンNGNG
たとえば、同じ優先度のタスクABとそれよりも優先度の高いタスクCの三つがあったとする。
タスクAが実行中に、タスクCが待ち状態から解放されてタスクCにサービスが移った。
そのとき割込みがかかり、タスクBが起動された。・・・がまだタスクCがサービス中。
しばらくしてタスクCが待ち状態になった。
すると次にサービスを受けるのは誰?
もし、タスクAがなんらかの無限ループに入ってしまっていたら
タスクBは永遠にサービスが受けられないのか?
0044名無しさん@お腹いっぱい。NGNG
>43
ラウンドロビンだっけかそりゃOSの教科書にでとるじゃろ
0045名無しさん@お腹いっぱい。NGNG
>>43
realtime の場合は OS も app も「最長応答時間の保証」が
されていることが大前提ってことを考えるといいかも。

realtime 云々なしなら、単なるスケジューリング方法の問題
なので、>>44 がいうように素直に OS の教科書を読もう。
0046login:PenguinNGNG
優良
0047お勉強中NGNG
ボードメーカーの営業系です。
売りもんが組込み用途なので、最近RT-Linuxも関わってくるようになりました。
今はEmblixにも加わっているディストリビュータのセミナーに関連品展示で顔を
出していますが、Linuxの検討から入るお客さんはOSもハードもヤスークすませたい
という要求が強くて商売的にはまだまだ…という感じです。
6UのCompactPCIボード(って分かりますか?)との組み合わせではまだかな…。
0048名無しさん@お尻おっぱい。 NGNG
>>47
ちょっと薄っぺらいだけで、アーキテクチャは普通のパソコンと
大差ないんじゃないですか?
x86系のアーキテクチャなら問題ないと。
0049login:Penguin NGNG
>>43
どのような場合にも、無限ループに入らないように
設計されているOSもあれば、デッドロックするOSも
あります。その辺はOSの選定時にしっかり調査しましょう。
0050login:PenguinNGNG
>>49
う〜〜ん??なにを言いたいのかわからんぞ・・・・??
無限ループのどこが悪いんだ??スケジューラのメイン関数って
たいてい無限ループだが・・・
0051login:PenguinNGNG
>>49
デッドロックって調査で簡単にわかるもんなのか?
選定すんのはそういう基準じゃないだろうと思うがどうよ。
0052login:Penguin NGNG
>>51
RTOSでデッドロック回避なんて小生意気な機能があるなら、
カタログレベルで堂々と書いてあるよ
つかコスト、デカスギだろ
0053login:Penguin NGNG
http://www.tanpopo.sakura.ne.jp/~joseph/kijirusi/index.html
0054login:PenguinNGNG
>>47
こんなところで聞くなよ。
真面目に答えてもらえないぞ。
0055login:PenguinNGNG
リアルタイムリナックスって、どこがいいのかな?
やりたいことはRTOSで何でもできると思うんだけど。
Linuxの上で動く ってのがそんなに重要なの?
0056名無し三行広告NGNG
>>55
逆、RTOS上でLinuxが動くの。
シビアな部分をRTOS上で実装し、そうでない部分はLinux上に実装できる
組み込み機器なのにGUIやネットワーク接続が必要になると有難味が実感できる
0057名無しさん@揚げ足NGNG
今日、有明でやってるDWHの展示会逝ったんだけど、隣で組み込みのも併催してたのね。
ちょい覗いたら、もうLinux一色。すげー
何処もかしこもペンギンマークやPlatで売ってるぬいぐるみだらけだったよ。
いったい何事なんでしょう?

※このレスは、揚げ足捕ってません。スマソ
0058login:PenguinNGNG
>>57
今日最終日、これからわたしも行ってきます。
結構混んでるみたいだね
0059NGNG
最近RTLINUXホームページにある
Rt-linux-Version 3.0 (final) の
finalっていうのはどういう意味なんでしょうか(爆

もう開発しないって事?
開発する必要が無いって事?

カーネル逝ってもちゃんと制御ができてるのが大好きなのに!
0060名無しさん@揚げ足 NGNG
>>58
暑さで死にそうになるぞ
水分補給はこまめに
0061login:PenguinNGNG
>>59
3.0 は最終バージョン(もうリリースしてもいっか) ってことでしょ。
0062login:PenguinNGNG
RT-LinuxとART-Linuxどっち使うか迷ってるんですけどどっちがいいんですか?
ARTのほうがプログラム組みやすそうですけどRT-linuxと比べて劣る点とかあるんですか?
誰か教えてください。
0063login:PenguinNGNG
>>62
ARTの方が一般には楽なんだけど、あっちは要求スペックが
むっちゃくちゃ高くなるんで要注意。
タスク切り替えのオーバーヘッドがRTよりもすごく大きいからね。

RTはデバイスドライバとして書かなければいけない、というのが
敷居を高くしている気がするけど、たいしたことはないね
0064login:PenguinNGNG
>>62
RTならドライバを書いたことのある人なら簡単に勉強できる
ドライバも難しいものじゃないし

なにより、ARTは利用人口が少ないので情報を集めるのが
つらいというのが一番の問題
0065FreeBSDNGNG
Linux使ってるからだ、ヴァカ。
FreeBSDにしろ
0066login:PenguinNGNG
>>65
BSD系のリアルタイムもどうなってるか興味ある。
ぜひ実情を教えてほしいな。
0067login:PenguinNGNG
リアルタイムなんて完璧なOSであるBSDには不要だ。
0068wait_npNGNG
http://www.jp.netbsd.org/ja/Changes/#fsmlabs-rtlbsd

一応、こんなのがありますね。
RT-LinuxをNetBSDで動くようにしたもののようです。
0069login:PenguinNGNG
それはNetBSDが不完全だから必要なのだ。
FreeBSDではそんなものは不要だ。
007059NGNG
>>61
そういう意味ならうれしいです。
もろにkernel依存してるから続けてもらいたいです。
0071login:PenguinNGNG
>> 63,64 さん
62です。
ありがとうございます。確かに、ARTの方が重くなるようです。
でも、そんな大した事やるわけじゃないんで楽なARTの方を使う事にしました。
0072login:FreePascalNGNG
>>71
興味本位で聞くんですが、どれぐらいの CPU で試されましたか?
検索しても必須スペック書いてるページにぶつかんなかったんで。
0073login:PenguinNGNG
71です。
セレロン700Mhzでやりました。
試しにプリンタポートをon-offするプログラムを作ってみたんですが、200usecか20usec(どっちか忘れた。たぶん20usec)ぐらいの周期まで作れました。
ちなみにPentiumの200Mhzで同じプログラムを走らせた場合、数msecくらいが限界だったと記憶しています。
あんまり小さい周期を指定するとフリーズしちゃいます。
0074login:FreePascalNGNG
まあ msec で制御できればセンサーロガーとか、普通のBOXモノはOKですね…。
やっぱりチャレンジしとくべきかな。
0075wait_npNGNG
>>73
えーと、自分がむかしRT-Linuxで遊んでたときは
Pentiumの200Mhzで20usecくらいの周期が限界でしたね。
ARTの方は使ったことがないので参考になりました。
今は速いCPUがあるから無理してRTの方使うことも無いのかな・・・
0076hydrodynamicsNGNG
「RTLinuxリアルタイム処理プログラミングハンドブック」
を購入しました。この本を参考にして、AD・DAボードのリアルタイム
制御プログラムを作ろうと思っています。interface社の方ではRT-Linux用の
ドライバは供給してないようなのですが、ボードの組み込みは初心者にもできるのでしょうか?
0077login:PenguinNGNG
>>76
AD/DAボードっつってもIOアドレスとか仕様とかがわかるなら
比較的ラクショーかと
多分IOアドレスはオンボードのジャンパで設定できたりとか?
0078login:PenguinNGNG
>>76
Interface社のホームページからI/Oアドレス公開資料を
DLできますよ。簡単なドライバならすぐ作れます。
0079hydrodynamicsNGNG
>>77、78ありがとうございます。
interface社はLinux汎用ドライバは供給しているのですが、
これをRTLinuxで用いることは可能なのでしょうか?
0080login:FreePascalNGNG
>>79
UNIX スレッドで動かすって意味でなら、いけるでしょ。
でもそれで作ったシステムはリアルタイムでない AD/DA になるでしょうね。
低速動作ならそれでもいいはずですがー(だったら win でもいいのか…鬱)。
0081hydrodynamicsNGNG
>>80ありがとうございます
私は1msec程度のリアルタイム制御を必要としています。ご指摘の通り、
winではタイマーの動作保証が限界でも10msec程度らしいです。
(>80によればLinuxもその程度みたいですね)だから、RTLinuxを選択しました。
RTLinuxはあくまでもLinuxの拡張機能かと思っていたので、ドライバもLinux用で
利用できるのかと思っていました。しかし、RT用のドライバが必要みたいですね。
0082login:PenguinNGNG
>>81
普通デバイスドライバはユーザープロセスからシステムコールで
利用するから、openとかcloseとかあるけど、RTLinuxは
モジュールとして動作するから先にA/D変換のモジュールをロード
して作った関数をシンボルテーブルに登録しておけばリアルタイムタスクから
使用できます。A/D変換のモジュールのほうにはinit_module,cleanup_module,
ボード初期化,A/D変換の関数を書いておけばいいはずです。
Interface社が公開してるドライバはRTLinuxでは使えません。
0083login:FreePascalNGNG
>>81
機構的には本格的なリアルタイムシステムっすよね。昔の RT-Linux 本に AD コンバータの例が出てたような気がしますけど…。

初歩的な愚考かもしれないですが、nice を上げることでカーネルよりも実行優先度を上げる方法がありますよね。
リアルタイム性の高いタスクがひとつで、自前で時間管理するなら、1msec はこの方法でも行けるかも…やっつけ仕事に限りますが。
0084login:PenguinNGNG
>>83
おれの卒論の実験それでやった...
0085login:PenguinNGNG
HZ を上げてカーネル作り直して、sched_setscheduler() で適当に設定、とか。
ギリギリの精度が必要でない限り、これでもそれなりのものには。
0086login:PenguinNGNG
>>81
ART-Linuxならinterfaceで公開しているドライバそのまま使えるんですけど、やっぱりRT-Linuxがいい?
0087login:FreePascalNGNG
>>81
いや、話の流れの根底にはソレ(ART-Linux)があると思うよ。
ただ「1msec ならね…」てこと。
0088login:FreePascalNGNG
最近口調分裂気味
く〜
0089hydrodynamicsNGNG
アドバイスありがとうございます。
ART-Linuxでもかまわないのですが、本や資料はあるのでしょうか?
interfaceのHPで「RTLinuxリアルタイム処理プログラミングハンドブック」
が紹介されていたので、これに飛びつきました。しかし、ART-Linuxの方が楽に
制御できるのであれば、そちらでもかまいません。いったいどちらの方法が楽なのでしょうか?
私は、Linuxは初心者なのでなるべく簡単な方法でやりたいと思っています。
良かったらアドバイスをお願いします。
0090pci-cardNGNG
>82
便乗質問お願いします。
interfaceのISA-AD&DAボードのモジュール&制御してました。
今度、PCIカードのAD&DAボードを使おうと思います。

前にLinuxのドライバをDLしたときにモジュールのソースがあったので
これをRTLinuxのカーネルでコンパイルすれば使えるのかと思っておりましたが、
使えないのですか?
できれば組み込むまでの詳細を教えていただけるとありがたいのですが、
お願いします。

>89
「RTLinuxリアルタイム処理プログラミングハンドブック」 って青い本?、緑の本?
緑の本だったらPCI版のボードのモジュールが乗っていると思います。
青の本だったらISA版のADボードのモジュールの例が載っていましたが、
interfaceのボードではなかったような気がしますが簡単にできました。
0091hydrodynamicsNGNG
>90
緑の本です。簡単にできたと言うのは心強いです。これで頑張ってみます。
0092login:PenguinNGNG
>>1の、ART-Linuxのページ、繋がらなくなっちゃったね。
どこかに引っ越したんだろうか??
0093wait_npNGNG
>>92
つながらないっすね。かわりに
http://www.movingeye.co.jp/~you1/art-linux/download.html
ARTのカーネル

google Linuxでちゃんと検索すればでてくるかな?
009492NGNG
>>93
TNX!!
これで2.2.19向けのパッチが手に入ります。
009590NGNG
>91
モジュールを作るのは早かったけれども、RT-linux-Ver1.2自体は
安定して動かせるようになるまで1ヶ月ぐらいかかりました....。
それより前にlinuxの設定などでさらにもう2ヶ月追加...(爆

>93
ART-linuxってkernel-2.0.36のところで開発が
終わったのかと思ってました。
ちゃんとあったんですね新しいkernel版が!
いただきます。
0096login:PenguinNGNG
2.4に対応されないと今後取り残されるのでは?
0097login:FreePascalNGNG
取り残されてもいいでしょ。
むしろ枯れてる方が信頼できるよ。
0098login:PenguinNGNG
>>97
できないよ。
0099login:FreePascalNGNG
>>98
立場の違いがあるだろうから、一応どうして信頼できないか聞いておきたい。
オレは AD/DA なんかの単純な箱モノ装置に使うのを想定してるから、枯れてるのを選びたいのよ。
単純な作業させるだけでもダメかいな?
0100login:PenguinNGNG
>>99
枯れてるから。枯れっくすかこわるい。
0101login:PenguinNGNG
>>100
枯れてるっつーのはこの業界じゃ誉め言葉なんだよ
■ このスレッドは過去ログ倉庫に格納されています