トップページ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

わかることは答えます。わからないことは皆さんが答えてください。
0611login:Penguin04/12/12 15:43:50ID:T/1Dk1tf
>>610
リルタイム化するハードがあるの?
0612login:Penguin04/12/12 15:44:19ID:T/1Dk1tf
×リルタイム
○リアルタイム
0613login:Penguin04/12/12 16:01:29ID:vRqjTsAW
ハードウェア面から見ると、ウォッチドッグタイマは必須だよなぁ。
最悪何か起こったときにひっぱたいてもらわないとダメだし。
って、組み込みのことしらないんだけどね。

俺にとってのリアルタイムOSはCP/MとかMS-DOSだからなぁ。
って、その時代キャッシュなんてものなかったから、
完全に何クロック後に何が起こるか計算できたからなぁ。
0614login:Penguin04/12/14 12:31:45ID:vlh4D4yl
MS-DOS は手軽で最強のリアルタイムOS だったね。
システム性能が把握しやすいからヘタ打つことも少ないし。

Linux だとハードによるけど 300us 程度の周期までかな?
uITRON は知らないけど 10us 以下の周期でもいけるらしいね。
システムにぶら下がる機器で住み分けができるか・・・
0615login:Penguin04/12/14 13:55:25ID:ax9NDlaA
>>614 「リアルタイムOS(笑)」くらいにしておいてくれ。

FreeDOSとか使ってる人、いない?
http://www.freedos.org/
0616login:Penguin04/12/14 14:43:38ID:2JUeg5Yd
スケジューラの無いOSとスケジューラしか無いOS。
どちらもOSと名乗れるんだよな〜・・・
0617login:Penguin04/12/14 16:17:33ID:zttHp0z1
まあ資源を管理する事が出来ればOSと名乗ってもいいんでないかと。

ただ、スケジューラーしか無いOSはリアルタイムモニタと名乗っていただけるとうれすい。
0618login:Penguin04/12/14 23:37:10ID:2YAUPSHy
組み込み≠リアルタイムってのは
ネットワーク機能やビデオオーディオのバッファリングストリームもの
の方法論ができてきたからだよね。どれも大量にメモリを消費して
数秒後のリアルタイムを保障?している。
昔はリアルタイムといやステッピングモーター制御やDSP音瑞コ処理
だbチたからね。
0619login:Penguin04/12/18 16:55:03ID:jkiG5ndg
リアルタイム処理をマルチタスクのOS上で走らせるだけなら
対象のRTタスク以外は全部切っておくなり、機能やOS周辺
アプリケーションが少ないOSを選べばいいだけかと。

それでもマルチタスクのOSでRT使いたいのは
RTタスクを動かしながら、
対象のOSで動くアプリなりを使いたいからだよね?

制御にかかる秒数だけが問題なら
それこそ昔のDOS使えばいいよw
0620login:Penguin04/12/18 17:58:30ID:RN042meJ
DOSに割り込み処理時間の最大値の規定ってあったっけ?
DOSがリアルタイムとは思えないんだが。
0621login:Penguin04/12/18 19:31:26ID:YxYHGDRQ
>>620
そんなん自力で割り込み処理すりゃいいことですがな。
仮想86モード使われると悲惨な事になるが。
0622login:Penguin04/12/18 21:20:14ID:RN042meJ
>>621
それはリアルタイムモニタ上でDOSが動いているんじゃないか?
0623login:Penguin04/12/20 23:39:00ID:49G4I5qS
  
スレの雰囲気が、インド人と中国人の会話みたいになってきたね。
やつら偉そうにぺらpらうわなにをあsふぃえdosあjkヵrtおdf
  
0624login:Penguin04/12/20 23:52:54ID:h38vVjZ3
>>623
宇宙人ハケーン
0625login:Penguin04/12/20 23:55:09ID:/mVr0ipU
ハードリアルタイム(?)からハードウェアの話になったりして、
なかなか楽しい雑談じゃないか。少なくとも偉そうには見えないな。
0626login:Penguin04/12/21 01:13:07ID:EDLnrsgz
ハードリアルタイムぐらいググれよ…
ttp://homepage3.nifty.com/ryuz/oo/chapt06.html
ttp://www.kumikomi.net/article/explanation/2001/05rtos/12.html

あと、もうちょっと具体的に触れているものだと
ttp://www.microsoft.com/japan/windows/embedded/community/experto/july2002/nframpton.asp
ttp://www.microsoft.com/japan/windows/embedded/community/experto/july2002/nframpton.asp
ttp://www.sakamura-lab.org/TRON/ITRON/DOC/mst97-rt3-ohp.pdf
ttp://www.sakamura-lab.org/TRON/ITRON/DOC/seminar97-ohp.pdf

本だと
ttp://www.cqpub.co.jp/hanbai/books/33/33261.htm
0627login:Penguin04/12/21 21:37:43ID:FF12R4zy
>>625は、>>610の「ハードなやつ」がハードリアルタイムを言っているのか
分からないから(?)なのだ。
0628login:Penguin04/12/24 14:29:41ID:F0uSs1YO
DIOボードを制御しようとしてlspciでIOポート調べて(0xe000だった。)
outb(0x01,0xe000);
とやってみたのだが出力されない・・・・・
どんなことが考えられるでしょう?ハードウェアはwinで起動して動作しているので
大丈夫のはずなのですが・・・

そのプログラムのポートを0x378にするとちゃんとパラレルポートは動くのに・・・
062962804/12/24 16:16:37ID:YTtxlWWe
うわっ!大ポカでした!
入力ポートに出力してどーするよ・・・orz
0630login:Penguin04/12/24 17:00:44ID:05AHm88x
がんがれ・・・・ボソ
0631login:Penguin04/12/25 01:29:20ID:T9CkB4s0
Monta がハードリアルタイムに手を出すとな。
NTT ドキュモから出資は受けるわ、末期症状かねー?
0632login:Penguin04/12/25 11:53:57ID:XwefH9zM
門多ビスタはすでに坂村先生とこでT-Linux開発済んでるよ
0633login:Penguin05/01/02 13:45:22ID:Td7Z7+u1
RTAI使っているけど、3.0になってから面倒になってきたな。インストール時のトラブル
は勿論、インストール後も共有メモリ関連でトラブルが発生したり・・・。MLもその
話題で賑わっている。ユーザー空間でリアルタイム処理ができるので使っていたが、だんだん
困ったもんだ。
0634login:Penguin05/01/06 14:31:02ID:nl5OWFXe
pSOSお勧め
0635login:Penguin05/01/06 16:22:46ID:01EexCPC
>>634 もうないって(w

…もしかして、どこかで今でもサポートされてるとか?
0636login:Penguin05/01/06 23:52:57ID:0pkCxqZX
>>635
ウインドリバーが買ったけどサポートされてるとはいえないだろうね。 前の会社でpSOS使ってて
3年前に新しいボードに移植したときロイヤルティーの交渉はウインドリバーとした。 もちろん
vxWorksに乗り換えることを進められたけどね。 まあうちはpSOSのソース全部もってたから
激しくカスタマイズしてたけど。 TCP/IPのスタックは全部入れ替えたし。
0637login:Penguin05/01/07 02:55:46ID:BVFd2T3Y
S-OSかと思った。
あれは便利だったよね。
0638login:Penguin05/01/17 17:08:07ID:G+fKZhV/
Pentium4 1.5GHzでRedhat Linux 9.0のマシンにRTLinux入れようとしているんですがうまくいきません。
前にAthlon2000+のマシンに入れたときはうまくいったんですが。

ttp://yama-tabi.net/blog/archives/2004/12/rtlinuxfree_1.html
を参考にインストールを進めたんですが、make xconfigの設定が分からなかったので
GUIの画面で/usr/src/linux-2.4.20-8/configs/kernel-2.4.20-i686.configをロードして
インストールを進めるとエラーも出ずにdepmod -aまでいき、GRUBの設定を書き換えて
再起動するとKernel Panicが。root=LABEL=/でエラーがでていたのでroot=/dev/hda2にすると
そのエラーは回避できましたが今度は
Warning unable to open an initial console.
Kernel panic: No init found. Try passing init=option to kernel
といわれてしまいました。init=/bin/bashとかつけてもうまくいきません。

どなたか原因わかりませんか?ファイルシステムはext2です。
0639login:Penguin05/01/17 20:13:35ID:YQWdmIN0
>>638
rootの指定が間違っているとしか。
元のカーネルで起動して、'/'がどこにマウントされてるか確認すれ。
0640login:Penguin05/01/18 20:37:56ID:14Fd0Sur
Vine Linux 2.6にkernel2.4.20おとしてきてRTLinux入れたんだけど、
Video4Linux2って入れれるの?
RTのパッチあててxconfigするときにVideo For Linuxはmにしてあるんだけど,
V4L2じゃないよね・・・SAA7130が使いたい。

V4L2のパッチあてたらRTのパッチ当てられないんだろうか。
0641login:Penguin05/01/25 22:04:55ID:foVk5dKF
RT-Linuxで作った楽器ぽいage
http://linux.slashdot.org/article.pl?sid=05/01/21/012244&tid=141&tid=106
http://namm.harmony-central.com/WNAMM05/Content/Korg/PR/OASYS-studio.html
http://www.korg.co.jp/OASYS/
064264005/01/26 01:19:53ID:1sOh80vd
Linuxでビデオ スレで聞いてみます。
0643login:Penguin2005/03/31(木) 17:46:46ID:iCSW+Zhv
質問があります。
CPU:Pentium4 3.80GHz、マザー:D915PBL(intel915P)、メモリ: DDR2SDRAM(1GB)、
OS:FedoraCore1のマシンに、kernel−2.4.20でRTLinux−3.2−pre2をインストールしました。

ためしに、1秒周期で処理を行うプログラムを作ったところ、10倍弱のスピードで処理してしまいます。
RTLinuxのモジュールを組み込んだ後におかしくなるらしく、
コンソールに普通に文字を打っても、同じ文字が連続して出力されたり
ダブルクリックを受け付けなかったりします。(かなり早くクリックすると受け付けます(笑))

モジュールを組み込んだ後におかしくなるので、rtl_timeが原因なのかと思っているのですが解決法が見当もつきません。
どなたか解決法が分かる方がいらっしゃいましたら、お教えください。
よろしくお願いします。
0644login:Penguin2005/03/31(木) 23:39:31ID:XmoFPvDM
>>643
サンプルプログラムは全部正しく動いているか確認した?
0645643皇紀2665/04/01(金) 09:40:50ID:fmsCkflj
>>644
返事が送れて申し訳ありません。
サンプルプログラムも10倍弱で動作しました(frank_app等)。
pthread_make_periodec_np()で設定した値の10倍弱の速度で動いているようなんです。

カーネルを2.4.21−pre5にするか、CPUをちょと遅いのに変えるかして
もう一度確認しようと思っています。
引き続き、アドバイスをよろしくお願いします。
0646login:Penguin皇紀2665/04/01(金) 10:21:31ID:jevWBiCT
>>645
ハイパースレッディングとか大丈夫?
0647643皇紀2665/04/01(金) 12:09:21ID:fmsCkflj
>>646
BIOSでHyper-Threading Technology [Disable]と設定しました。
カーネルのコンパイル時の設定でハイパースッレディング関係で
気をつけることはあるのでしょうか?

コンパイル時の設定では
・プロセッサータイプが"PenV"になっていたので"Pen4"に変更。
・ネットワークドライバの変更。
の2点をいじりました。

また、RTLinux-3.2-pre3を手に入れ、kernel-2.4.22でインストール
したのですが、症状は同じでした。orz
皆さん、アドバイスありがとうございます。
引き続きよろしくお願いします。
0648643皇紀2665/04/01(金) 16:09:05ID:fmsCkflj
コンソールに普通に文字を打っても、同じ文字が連続して出力されたり
ダブルクリックを受け付けなかったりする点ですが、
rtl-schedを読み込んだときにそのような症状になります。
リアルタイム処理が設定値の10倍弱で処理される点も、rtl-schedが
原因だと考えているのですが…。色々調べて、また報告します。
よろしくお願いします。
0649login:Penguin皇紀2665/04/01(金) 16:55:28ID:lbab/ymo
Pen4 でも RTLinux でもないんだが気になったので・・・
kernel config の CPU Frequency scaling はどうなってます?
もし、Enable ならはずしてみそ。
0650643皇紀2665/04/01(金) 18:27:26ID:fmsCkflj
>>649
アドバイスありがとうございます。
make xconfigでCPU Frequency scaling を探したのですが、
項目を見つけられませんでした。
カーネルのバージョンが古いのでしょうか?
ちなみに、Advanced Power Management ははずしてあります。
0651login:Penguin皇紀2665/04/01(金) 20:40:27ID:nuH/ewQl
>>650
ゴメっ!
間違えた!
kernel 2.4系だったね。 2.6系とごっちゃになってた。
無視して下さい。
0652643皇紀2665/04/02(土) 00:00:03ID:uRVBHFv3
>>651
2.6系だったんですか(^^;)
いえいえ、ありがとうございます。
勉強になりました。
06536432005/04/05(火) 11:01:08ID:/MGTngYc
gethrtime()を表示させてみたんですけど、
手で測ってみた時間よりも6倍(10倍弱ではありませんでした)速い…。
でもコンソールでtime <プログラム名>で実行時間を出力してみると
手で測った時間と一緒…。

gethrtime()がおかしいんですけど、
ハードウェアに依存するのならばコンパイル時の設定がだめなのかな?
もっと調べてきます。
皆さん、お気づきの点がありましたらご教授ください。
0654login:Penguin2005/06/17(金) 12:03:03ID:Lps3SCtt
RTLinuxがてにはいりません。こまりました。
0655login:Penguin2005/06/17(金) 12:35:52ID:IupBX9KJ
http://www.fsmlabs.com/rtlinuxfree.html
あるぢゃん。
0656login:Penguin2005/06/17(金) 21:51:50ID:s86fZctE
ぢつは RTAI が欲しいだけだったりして
http://www.rtai.org/
0657login:Penguin2005/06/19(日) 06:37:27ID:e1Wk+MAj
RTLinuxとRTAIとTimeSysで迷っているのですが、
GPL版ではRTLinuxはユーザー空間でのリアルタイム処理不可の為
RTAIかTimeSysで迷っています。RTAIはGPLしか無いようですが、
TimeSysのGPL版は使える物なのでしょうか?
0658login:Penguin2005/06/19(日) 18:14:39ID:yoQtS2q/
TimeSysのGPL版は、プリエンプティブルカーネルではありますが、
高精度タイマは使えません。
10ms以下のワンショットタイマ、インターバルタイマが欲しいので
あれば、TimeSysのGPL版ではダメです。Realtime版を購入する
必要があります。
プライオリティ付きのトップハーフ、ボトムハーフが必要なだけで、
高精度タイマは不要、ということであれば、GPL版でOKだと思います。
詳細は日新システムズのWebで。
http://www.co-nss.co.jp/products/realtime/realtime-info.html
メンバー(登録無料)専用ページにマニュアルやFAQがあります。
06596542005/06/19(日) 18:54:39ID:cA8/vIY7
http://www.fsmlabs.co.jp/fsmj/products/rtlinuxfree.html

日本のページではこうでてくるのですが。

リンク先)FSMLabs Japan Products


■RTLinux/Free CD-ROMサービスは終了いたしました。
0660login:Penguin2005/06/20(月) 20:22:40ID:TVWkVkRd
RTLinux Free版は、ここからダウロードできるのでは。
http://www.rtlinuxfree.com/
06616572005/06/21(火) 15:58:33ID:LYzu+niD
>>658
貴重なアドバイスありがとうございます。
色々調査した結果です。
1:RTLinux
 文献、資料が他より多く、応答良いがGPLではユーザー空間でのリアルタイム処理不可。
06626572005/06/21(火) 16:11:22ID:LYzu+niD
661:続き

2:TimeSys
 応答良いがGPLではソフトリアルタイムのみ。PROは高価。
3:RTAI
 応答良いが文献、資料が少ない。

結局、貧乏人の私にはRTAIが一番良いと思われます。
RTAIはGPLのみなので差別化も無いし応答も良いし…
用途は機械制御タスクを数m秒毎、測定制御のタスクを数十μ秒毎に走らせたいのです。

GPLで最強なのは何でしょうか?
0663login:Penguin2005/06/22(水) 00:15:02ID:GZ+0vGy+
>>662
ユーザ空間でリアルタイム処理する必要ないし
RTLinuxでよくね?
0664login:Penguin2005/06/22(水) 01:33:15ID:SuxfSrBV
>>662
TimeSysのRealtime版は、かなり安いと思います。デスクトップパソコン1台よりも
安いハズ。Reservation版の値段は知りません。

そもそも根本的に、リアルタイム化している実現方法が、TimeSys/MontaVista/オリジナルKernel2.6と、
RTLinux/RTAIでは違います。
Linux上のアプリケーションをリアルタイムで処理したいなら、TimeSys/MontaVista/オリジナルKernelです。
RTLinux/RTAIは、独自のリアルタイムカーネル上でLinuxを動かす方式なので、Linux上の
アプリケーションはリアルタイム処理できません。リアルタイム処理が必要なものは、Linuxの
アプリではなく、独自のリアルタイムカーネル上で動くように作る必要があります。
↓このへん参照。
http://www.atmarkit.co.jp/flinux/embedded/rtos01/rtos01a.html
06656622005/06/22(水) 01:44:22ID:SKFxSYvV
>>663
あれ?その通りです…が、逆にRT空間でPCIやLANやその他ドライバ等の
使用出来ない物が多いのでは?
0666login:Penguin2005/06/22(水) 01:52:39ID:SuxfSrBV
で、数10μs間隔の定周期処理を実現するとなると、OSの機能に頼るのでは、
実現は難しいと思います。
http://www.atmarkit.co.jp/flinux/embedded/rtos02/rtos02c.html
ここにオリジナルKernel/RTLinux/RTAIでの測定結果が出ています。
このオリジナルKernelは、"Preemptible"を無効にした状態なので、
リアルタイム処理できない状態です。Preemptibleなら、もっと性能はいいハズ。

RTAIが一番性能がいい結果になっていますが、それでも977μs周期処理が、
負荷をかけていない状態(hackbenchなし)でも最大で5μs程度ずれています。
なので、例えば、正確に10μs周期が必要でも、5μs〜15μsの周期になります。
まぁ、90μs周期で、85μs〜95μsになる、というのであればいいのかもしれませんが...
どこまで、時間の正確性が必要なのか、というところにかかっていると思います。
0667login:Penguin2005/06/22(水) 02:00:26ID:SuxfSrBV
TimeSys Realtime版では、上記測定結果のRTLinuxと同じぐらいの性能を、ユーザ空間で動く
アプリケーションで実現できます。たぶん、オリジナルKernel2.6のPreemptible版も。
(clock_settimeだったか何だかのAPIで、定周期タイマを生成して、定周期スレッドを
動かす場合。TimeSysのGPL版には高精度タイマがないのでムリ。)
0668login:Penguin2005/06/22(水) 02:36:45ID:SuxfSrBV
RTLinuxやRTAIでは、専用のAPI(システムコール)を必要とするのに対して、
clock_settimeとかはPOSIX APIなので、普通にPOSIXのタイマを使った
アプリを作るだけで、リアルタイム化される、というメリットがあります。

が、そのプロセス/スレッドを、pthread_setschedparam とかでSCHED_FIFO
にスケジューリングポリシーを設定、とかしないといけないので、RTLinux/RTAIで
専用APIを呼ぶのと大差ないかも。

ホントに数10μsの定周期処理で、1μsぐらいの時間の正確性が必要なら、
カーネル空間で動くボトムハーフやタスクレットとして実装(オリジナルKernel2.6の
Preemptible版/MontaVista/TimeSys)するか、RTLinux/RTAIのリアルタイムKernel上で
直接動くタスクを作る(できるかどうか知りませんが...)か、ということを検討する必要が
あるのでは。
06696652005/06/22(水) 02:45:41ID:SKFxSYvV
>>666
>>667
>>668
あいがとうございます!
実際には100μs周期で測定して±10μsなら良いかな?と思っています。
Pen4の2GHz位で10μs周期で走れば良いのですが。
RTLinuxやTimeSysのPro版は100万位(定価)でとても買えません。
GPL版は性能、機能に差がありすぎて…なんか感じ悪いです。
しかしRTAIはGPL版しか無いので最高の物が使えます。
GPLではRTAIが一番と思いませんか?
06706652005/06/22(水) 03:03:55ID:SKFxSYvV
RTAIの文献、資料等ぜんぜん見つからないのですが、
何処かにありませんか?
0671login:Penguin2005/06/22(水) 19:59:21ID:SuxfSrBV
>>669
>RTLinuxやTimeSysのPro版は100万位(定価)でとても買えません。
RTLinuxは知りませんが、TimeSysのRealtime版(x86)を去年購入しましたが、そんなに高くないですよ。
1年ぐらい前に、急激に安くなりました。
と思いましたが、安くなったのはx86版だけでした。他のCPUは安くなかったですね...
0672login:Penguin2005/06/22(水) 20:17:34ID:SuxfSrBV
>>669
>GPLではRTAIが一番と思いませんか?
条件によって向き不向き(メリット・デメリット)があるので、一概には言えないですね。

個人的には、
数10μsのタイマ精度までは不要ということであれば、オリジナルKernel2.6を
Preemptibleにするだけで十分。
XIPやファイルサイズの小型化が必要なら、MontaVista。(めっちゃ高いけど)
CPUやネットワーク資源の予約(Reservation)が必要なら、TimeSysのReservation版。
という感じです。

お金が必要なMontaVistaやTimeSysのKernel2.6版も、ライセンスはGPLだと思いますよ。
GPLだからといって無償とは限らないですし、誰でも入手可能にしなければならないことも
ないですし。
(Kernel2.4ベースのTimeSysは、独自の「リソースカーネル」部分はGPLではありません。)
0673login:Penguin2005/06/22(水) 20:20:31ID:SuxfSrBV
>>670
RTAIの資料、ちょっとググってみましたが、結構あるのでは?
http://www.misnet.co.jp/tech/info/linux/bluecat.html
http://www.aero.polimi.it/~rtai/

RTAIのwebにもドキュメントはありますし。
http://www.rtai.org/modules.php?name=Content&pa=showpage&pid=6
0674login:Penguin2005/06/23(木) 11:03:31ID:fTnimKou
>>671
>>672
>>673
毎度お世話になります。

>安くなったのはx86版だけでした。
そうですか!私は市販のPC-ATパソコンを使用したいのですが、x86版で使えますよね?
早速、日新システムズに確認してみます。(でも、やはり数十万はしますよね…)

>数10μsのタイマ精度までは不要ということであれば、オリジナルKernel2.6を
>Preemptibleにするだけで十分。
これでいければ一番ですね!Fedora4をDownloadしてPreemptibleにする(どうやるんだ?)ばいいのですね。
数10μsの精度…微妙です。数100μずれるとちょっときついかな?
今はPCにDIOボード2枚入れて1msの矩形波を出力するタスクを2本走らせてオシロで観測しています。
最初Redhat7.2で確認したらマウス使うだけで波形がビョ〜ンと伸びてビックリ!(あたりまえですが…)
タスク切換周期は100ms位でした。
0675login:Penguin2005/06/23(木) 11:46:37ID:fTnimKou
↑つづき
>お金が必要なMontaVistaやTimeSysのKernel2.6版も、ライセンスはGPLだと思いますよ。
>GPLだからといって無償とは限らないですし、誰でも入手可能にしなければならないことも
>ないですし。
そうですね、すみません。どうもGPL=Freeのイメージがあって…
並びにRTAI資料関係ありがとうございました。実験して見ます。
0676login:Penguin2005/06/23(木) 19:25:24ID:ZK4I62Sw
>>674
>Fedora4をDownloadしてPreemptibleにする(どうやるんだ?)
カーネルを再構築すればOK。make xconfigとかでconfig画面のどこかの
項目にPreemptionとか何とか出てくると思います。
ただし、もしかしたら安定版カーネルには、まだPreemptパッチが取り込まれて
いないかも。なのでFedora4のカーネルでOKかどうかは知りません。
開発版カーネルには入ってるはずなので、Fedora4のカーネルになければ、
オリジナルの開発版をダウンロードして再構築してみてください。
0677login:Penguin2005/06/23(木) 19:45:50ID:ZK4I62Sw
念のため補足しておきますと、いくらカーネルがPreemptibleになっているといっても、
プロセス(スレッド)のスケジューリングポリシーをSCHED_FIFO(2.6では名前が
かわっているかも)にするとか、clock_settimeとかでインターバルタイマを作る
とか、リアルタイム処理になるよう、プログラミングする必要はあります。

RTAIの場合でも、rt_XXXXとかでリアルタイムタスク/タイマ用のAPIを使わないと
リアルタイム処理できないので、そういう意味では同じようなもんですが。
0678login:Penguin2005/06/24(金) 01:19:28ID:t6srfNQW
>>677-678
2.6ならPreemptionの項目は普通にあると思うけど、
Real-Time Preemptionのパッチの話だったらまだじゃない?
この辺に少し載ってるね。
ttp://www.atmarkit.co.jp/flinux/rensai/watch2005/watch06b.html

674では無いですが、MontaVistaのサイトみたら1m以下で応答する
ように頑張るみたいな事が書いてあったけど、素の2.6で1msの矩形波を
出力できる程のものなんでしょうか?
0679674です。2005/06/24(金) 18:31:52ID:k2LLaTXj
>>676
>>677
>>678
こんにちは。
Fedora4インストールしました。もしかしたらすごい応答良かったりして…なんて思ったのですが、
素のままでは上記Redhat7.2での実験と変わりませんでした。(タスク切換周期約100ms)
make xconfigでPreemptionらしきものが見つからない…どうしよう?
もし見つかればこの□にチェックすれば応答が良くなるのですか?

niceで優先度上げたタスクは100ms内できちんとパルスを出すのですが…
単純にタスク切換周期を100ms→1ms(出来れば100us)にする事は出来るのですか?
06806782005/06/24(金) 23:12:03ID:Ft2ITgAl
>>679
こっちの方に知りたいことが書いてあった。
 ttp://www.atmarkit.co.jp/flinux/embedded/rtos02/rtos02c.html

Real-Time Preemptionの結果が気になるところだけど、ユーザ空間で
1msなんてRTLinuxやRTAIでもお話にならないレベルですね。

素直に、マイクロカーネル上のリアルタイムタスクにするしかなさそう。
0681login:Penguin2005/06/25(土) 10:48:21ID:XthhRdZ1
>>679
>もし見つかればこの□にチェックすれば応答が良くなるのですか?
カーネルがプリエンプティブル(Preemptible)になっていない場合、システムコール発行などで
カーネル内に処理が移ると、そのカーネル内の処理が終わるまで、ユーザ空間のプロセス(スレッド)
は処理できません。カーネル全体をロックしているので「ジャイアントロック」とか「ビッグロック」
とか呼ばれています。このジャイアントロックは結構長い時間(数ms〜数10ms)かかるので、
いわゆる「応答時間」の性能はかなり悪くなります。
カーネルをプリエンプティブル にすると、カーネル全体をロックせず、クリティカルセクションだけ
をロックするようになるので、応答時間の性能が良くなります。ただし、ロックをクリティカルセクション
だけにするのは各種デバイスドライバが対応する必要があるので、使用するドライバがどのくらい
きちんとプリエンプティブルにしてくれているか次第、というところがあります。
DIOでパルス出力しているとのことですが、Interface社のDIOボード+Linux用ドライバなどを使っている
場合は、そのドライバがどうなっているか、というところにも依存します。
が、DIOでパルス出力するだけなら、あんまり気にする必要ないかもしれませんね。
0682login:Penguin2005/06/25(土) 10:58:26ID:XthhRdZ1
>>679
>niceで優先度上げたタスクは100ms内できちんとパルスを出すのですが…
niceじゃなくて、スケジューリングポリシーをRealtime(SCHED_FIFO)にした上で、
プライオリティを高くしておかないと、少し負荷がかかっただけで、周期を守れなくなりますよ。

それに、素のままのカーネルでは、インターバルタイマやウェイト/スリープAPIの周期を
10ms以下に設定しても設定通りにはなりません。カーネル内のタイマ周期が10msになって
いるため、それ以下の時間で制御できないためです。
素のカーネルで10ms以下のタイミングが必要なら、プリエンプティブルにするだけでなく、
カーネル内のタイマを1msに設定するなどのconfigも必要です。
0683658,664,676,6812005/06/25(土) 11:08:10ID:XthhRdZ1
>>679
>2.6ならPreemptionの項目は普通にあると思うけど、
>Real-Time Preemptionのパッチの話だったらまだじゃない?
なるほど。
TimeSysのプリエンプティブル化方法は、spin_lockに対して行われているので、
同じレベルにするには、少なくともこのReal-Time PreemptionのPREEMPT_RT
が必要なようですね。
0684658,664,676,6812005/06/25(土) 11:39:43ID:XthhRdZ1
>>680
>Real-Time Preemptionの結果が気になるところだけど、ユーザ空間で
>1msなんてRTLinuxやRTAIでもお話にならないレベルですね。
そのweb記事では、約977μs(記事中に977msと記述されている部分がありますが、
"ms"ではなく"μs"の間違いですね)の定周期割込みが、RTAIでは負荷がかかっても
最大2μs程度しか時間のゆらぎは発生していません。
この数値が、必要としている精度とどのくらい差があるかというところですが...
約1ms周期で2μsのゆらぎなら、私の場合は、十分使えるレベルです。
まぁ、1μs以下の精度が必要なのであればダメですが、その記事では、PentiumMを400MHzに
固定しての結果なので、Pentium4の3.6GHzとかならもっといい性能を出せるかもしれませんね。
0685658,664,676,6812005/06/25(土) 12:02:23ID:XthhRdZ1
>>684
>最大2μs程度しか時間のゆらぎは発生していません。
間違えました。
最大10μsぐらいありますね。それでも私の場合は十分ですが。

この、
 ttp://www.atmarkit.co.jp/flinux/embedded/rtos02/rtos02c.html
の測定方法とは違いますが、「Embedded UNIX Vol.3(CQ出版)」の「TimeSys Linuxの
全貌」という記事に、同じようなジッタの測定結果が出ています。
CPUに50%の負荷をかけた状態で、定周期スレッド(1,2,3,4,5msと変化させて5回測定)が起動する毎に
時間を測定し、そのゆらぎがどのぐらになるか、を測定しています。
最小の1ms周期で、最大19μsという結果です。
Embedded UNIX Vol.3の記事では、測定に使用したCPUやプラットフォームが書かれていませんし、
測定方法が違うので、@ITの記事と比較するのは問題ありそうですが、このTimeSysの数値はRTLinuxと
同じぐらいの数値です。
0686679です。2005/06/25(土) 15:15:41ID:0dNC8emY
>>680
>Real-Time Preemptionの結果が気になるところだけど、ユーザ空間で
>1msなんてRTLinuxやRTAIでもお話にならないレベルですね。
>素直に、マイクロカーネル上のリアルタイムタスクにするしかなさそう。
そうですか…ユーザー空間での1ms周期はKernel2.6でもRTAIでもTimeSysでも無理なんですか…
やはりRTAIかTimeSysのRT空間使うしかないのかな?
TimeSysは少し違うみたいだけどユーザー空間でリアルタイムタスク走れて、1ms周期とか出来るんですか?
0687679です。2005/06/25(土) 15:30:55ID:0dNC8emY
>>681
>カーネルをプリエンプティブルにすると、カーネル全体をロックせず、
>クリティカルセクションだけをロックするようになるので、応答時間の性能が良くなります。
すみません。Fedora4で実験しているのですが、まだカーネルをプリエンプティブルにする方法が分からないのです…
DIOはPCIBIOSよりベースアドレスを取得して自前で制御しているのでドライバは使っていません。
0688679です。2005/06/25(土) 15:41:19ID:0dNC8emY
>>682
>素のカーネルで10ms以下のタイミングが必要なら、プリエンプティブルにするだけでなく、
>カーネル内のタイマを1msに設定するなどのconfigも必要です。
カーネル内のタイマを1msに設定するにはmake xconfig画面内の設定を変更するのでしょうか?
0689679です。2005/06/25(土) 16:04:21ID:0dNC8emY
>>683
TimeSysはRTAIより良いですか?
0690login:Penguin2005/06/25(土) 18:59:09ID:Gw2fBEV5
RTLinuxのインスコの仕方教えてください

手元にあるのは rtlinux-3.1.tgz
環境は redhat9

tgzを展開するまではいいのですか
その先が分かりません
0691658,664,676,6812005/06/25(土) 19:08:50ID:XthhRdZ1
>>686
>そうですか…ユーザー空間での1ms周期はKernel2.6でもRTAIでもTimeSysでも無理なんですか…
685に書いたように、私には十分と思える精度がありますがねぇ。
RTAI:977μs周期プロセスのジッタが±約10μs。
TimeSys:1ms周期スレッドのジッタが±約20μs。
どちらも定周期で起動しているのはユーザ空間のプロセス・スレッドです。
0692login:Penguin2005/06/25(土) 19:20:30ID:PUKsaVSF
>>690
まずはドキュメントよく嫁
0693658,664,676,6812005/06/25(土) 19:44:22ID:XthhRdZ1
>>687
>すみません。Fedora4で実験しているのですが、まだカーネルをプリエンプティブルにする方法が分からないのです…
ググると、Fedora4ではないですが、こういうところがヒットしますよ。
http://www.jacklab.net/index.php?option=com_content&task=blogcategory&id=236&Itemid=221&lang=en_EN

>>688
>カーネル内のタイマを1msに設定するにはmake xconfig画面内の設定を変更するのでしょうか?
どうやら、kernel2.6ではdefaultで1msになっているようです。
http://www.lifeflow.jp/diary/index.php?p=114
0694658,664,676,6812005/06/25(土) 20:08:41ID:XthhRdZ1
>>689
>TimeSysはRTAIより良いですか?
条件によって、どちらが良いとは限らないです。

POSIX APIでリアルタイム処理したいならTimeSys。
RTAI専用APIでもいいからより高い応答性能が必要ならRTAI。
というところじゃないでしょうか。
まぁ、仕事で使うなら、それぞれのサポート費用とそのサポート部門の技術力や親切具合
(困ったときにどれぐらい助けてもらえるか)も考慮することになりますね。
ただし、どれぐらいサポートが充実しているかは、サポートを受けてみないとわからないのが
難点です。
06956802005/06/25(土) 21:58:49ID:ICmmxqmv
>>684
> "ms"ではなく"μs"の間違いですね

お陰で1000倍も読み違えるところでした。ご指摘多謝。
0696login:Penguin2005/06/26(日) 00:04:06ID:J+V8pQbR
>>692
どのドキュメントでつか?
0697login:Penguin2005/06/27(月) 18:07:08ID:3asqS1RK
スタンドアロン方式とリアルタイム性能
http://www.atmarkit.co.jp/flinux/embedded/rtos03/rtos03a.html
連載:LinuxによるRTOSの実現(3) リアルタイム機能をLinuxカーネル自身で実現するスタンドアロン方式。この方式の具体的な実装やリアルタイム性能を検証する
0698login:Penguin2005/06/27(月) 23:25:06ID:ehfi2wtq
RT-FIFOについて質問なのです.
RT→Linuxという経路でデータを周期的に転送する際に,
RTスレッドの方が実行周期が早いためLinux空間でデータを
FIFOから読み出すより早く次のデータが書き込まれにRT-FIFOから
あふれてしまいます.今のところRT-FIFOを作成する際にできる限り
大きな値で作成してごまかしていますがそれでも送れるデータの数に
限界があります.
mallocによるメモリの確保などと同じように大サイズのRT−FIFOを作る
方法は無いものでしょうか?
0699686です。2005/06/28(火) 11:53:54ID:E3uAtiWc
>>691
>RTAI:977μs周期プロセスのジッタが±約10μs。
>TimeSys:1ms周期スレッドのジッタが±約20μs。
>どちらも定周期で起動しているのはユーザ空間のプロセス・スレッドです。
これはユーザ空間のデータですか!いいですね!このケースだとRTAIが若干いいですね。
0700login:Penguin2005/06/28(火) 15:12:59ID:mdDc5EUU
vine linux 2.6r4にART-linux カーネルをインストールしました。
ARTカーネルで起動するとXが立ち上がりません。
こんな経験をされた方おりませんか?
0701688です。2005/06/28(火) 15:31:38ID:E3uAtiWc
>>693
>すみません。Fedora4で実験しているのですが、まだカーネルをプリエンプティブルにする方法が分からないのです…
>ググると、Fedora4ではないですが、こういうところがヒットしますよ。
>http://www.jacklab.net/index.php?option=com_content&task=blogcategory&id=236&Itemid=221&lang=en_EN
ありがとうございます。英語か…
>どうやら、kernel2.6ではdefaultで1msになっているようです。
>http://www.lifeflow.jp/diary/index.php?p=114
Fedora4(kernel2.6.11)でも確認しました。HZ 1000
USER_HZ 100 は何でしょう?
HZ 1000 なのにタスクが100ms周期なのは?
0702689です。2005/06/28(火) 15:49:25ID:E3uAtiWc
>>694
>POSIX APIでリアルタイム処理したいならTimeSys。
>RTAI専用APIでもいいからより高い応答性能が必要ならRTAI。
的確な回答、大変ありがとうございます。
POSIX APIでリアルタイム処理したいんでTimeSysと言いたいんですが、
お金の問題があるからRTAIです。RTAI専用APIそんなに沢山ないですよね…

>仕事で使うなら、それぞれのサポート費用とそのサポート部門の技術力や親切具合
RTAIもFree版以外にPro版があるのですか?
それとも有料サポートだけですか?
0703login:Penguin2005/06/30(木) 01:34:02ID:lB09O4ve
>>698
FIFOのサイズが大きければ溢れるのを回避できるという理屈がイマイチわかりませんが、
抜き取り処理がたまに遅れて、そのときに溢れてしまうってことなのかなぁ。

rtlinuxならmbuffでも使ってみたらどうでしょうか?
0704691,693,6942005/07/01(金) 18:58:26ID:JIAkAdzD
>>701
>USER_HZ 100 は何でしょう?
元の100Hz用のdefineを残す、という意図でしょうか。よくわかりません。

>HZ 1000 なのにタスクが100ms周期なのは?
???このHzはカーネル内部のタイマの精度のことですよ?
nanosleepなどでwaitする時、以前は10ms以下にしても働いていなかったのが、
1msまでは働くようになった、ということです。どうやって100ms周期タスクを作ってますか?

ただ、オリジナルの2.6のままではあまり正確性はないかもしれません。
http://www.atmarkit.co.jp/flinux/embedded/rtos03/rtos03a.html
↑ここにあるように、Real-Time Preemptionパッチをあてれば、かなりいい感じになるようです。
0705691,693,6942005/07/01(金) 19:33:40ID:JIAkAdzD
>>702
>RTAIもFree版以外にPro版があるのですか?
>それとも有料サポートだけですか?
前は、Lineoがサポートしていたと思ったのですが、現在はよくわかりません。

6/29,30とESEC(組み込み開発技術展)に行ってたのですが、そこで見つけたElinOSというのが
RTAIをサポートしているようです。ただ、このRTAIがDIAPMで開発されているRTAIと同じ
なのかどうなのかは知りません。
http://www.4link.co.jp/products/elinos.html

趣味で使うならダウンロードしていじくっていればいいですが、仕事(製品に組み込む)となると、
何かトラブルが起きたときに自分でがんばるのかサポートを受けるのか、もし知的財産権の侵害が
発覚したときにどう対処するのか(サポートしてくれる会社とどう契約するのか)、などを考え
なければなりませんよね。
07066982005/07/01(金) 20:47:06ID:M2NWuUx+
>>703
アドバイスありがとうございます.
さっそく試してみます.
0707login:Penguin2005/07/02(土) 01:32:49ID:gL034C3R
オセロとか
0708login:Penguin2005/07/02(土) 16:57:38ID:TmLVCpln
>>704

>>HZ 1000 なのにタスクが100ms周期なのは?
>???このHzはカーネル内部のタイマの精度のことですよ?
ありがとうございます。やはり内部タイマでしたか…

>どうやって100ms周期タスクを作ってますか?
100ms周期のタスクを作ったのではなく、1msの矩形波を出力するタスクを2本走らせてオシロで観測したら
周期が100msだったのです。

>http://www.atmarkit.co.jp/flinux/embedded/rtos03/rtos03a.html
>↑ここにあるように、Real-Time Preemptionパッチをあてれば、かなりいい感じになるようです。
おお、新しくなってる!ありがとうございます。
0709702です。2005/07/02(土) 17:02:03ID:TmLVCpln
>>705

>6/29,30とESEC(組み込み開発技術展)に行ってたのですが、そこで見つけたElinOSというのが
>RTAIをサポートしているようです。ただ、このRTAIがDIAPMで開発されているRTAIと同じ
>なのかどうなのかは知りません。
ElinOS知ってます。これいくら位するのですか?
0710704,7052005/07/02(土) 21:03:09ID:anSVXzQL
>>708
>100ms周期のタスクを作ったのではなく、1msの矩形波を出力するタスクを2本走らせてオシロで観測したら
なるほど。
でも、素のまま(Preemptibleでない)カーネルのままでも、
* mlockallでページアウト(スワップアウト)を禁止
* sched_setscheduler(pthread_attr_setschedpolicy)でスケジューリングポリシーをSCHED_FIFOにして、
かつ、プライオリティを高くする
とすることで、だいぶマシになると思います。
確かKernel 2.4.18で試したときは、このようにしたプロセスで、nanosleepで20msぐらいの定周期
は実現できたと思います。ただ、ちょっと他のプロセスを動かしただけで、10ms以上の遅延が発生して
しまいましたが。

>>709
>ElinOS知ってます。これいくら位するのですか?
値段は聞かなかったのでわかりません。聞いときゃ良かった...
0711login:Penguin2005/07/03(日) 14:53:10ID:4SJDhJ7q
うまくいかなくて思い余って、定周期で割り込みを発生するだけのH/W作ったなぁ。
■ このスレッドは過去ログ倉庫に格納されています