リアルタイムリナックスについて
■ このスレッドは過去ログ倉庫に格納されています
0001wait_np
NGNG素朴な疑問やくだらない質問も受け付けます。
RT-Linux http://rtlinux.cs.nmt.edu
ART-Linux http://www.etl.go.jp/etl/robotics/Projects/ART-Linux
わかることは答えます。わからないことは皆さんが答えてください。
0611login:Penguin
04/12/12 15:43:50ID:T/1Dk1tfリルタイム化するハードがあるの?
0612login:Penguin
04/12/12 15:44:19ID:T/1Dk1tf○リアルタイム
0613login:Penguin
04/12/12 16:01:29ID:vRqjTsAW最悪何か起こったときにひっぱたいてもらわないとダメだし。
って、組み込みのことしらないんだけどね。
俺にとってのリアルタイムOSはCP/MとかMS-DOSだからなぁ。
って、その時代キャッシュなんてものなかったから、
完全に何クロック後に何が起こるか計算できたからなぁ。
0614login:Penguin
04/12/14 12:31:45ID:vlh4D4ylシステム性能が把握しやすいからヘタ打つことも少ないし。
Linux だとハードによるけど 300us 程度の周期までかな?
uITRON は知らないけど 10us 以下の周期でもいけるらしいね。
システムにぶら下がる機器で住み分けができるか・・・
0615login:Penguin
04/12/14 13:55:25ID:ax9NDlaAFreeDOSとか使ってる人、いない?
http://www.freedos.org/
0616login:Penguin
04/12/14 14:43:38ID:2JUeg5YdどちらもOSと名乗れるんだよな〜・・・
0617login:Penguin
04/12/14 16:17:33ID:zttHp0z1ただ、スケジューラーしか無いOSはリアルタイムモニタと名乗っていただけるとうれすい。
0618login:Penguin
04/12/14 23:37:10ID:2YAUPSHyネットワーク機能やビデオオーディオのバッファリングストリームもの
の方法論ができてきたからだよね。どれも大量にメモリを消費して
数秒後のリアルタイムを保障?している。
昔はリアルタイムといやステッピングモーター制御やDSP音瑞コ処理
だbチたからね。
0619login:Penguin
04/12/18 16:55:03ID:jkiG5ndg対象のRTタスク以外は全部切っておくなり、機能やOS周辺
アプリケーションが少ないOSを選べばいいだけかと。
それでもマルチタスクのOSでRT使いたいのは
RTタスクを動かしながら、
対象のOSで動くアプリなりを使いたいからだよね?
制御にかかる秒数だけが問題なら
それこそ昔のDOS使えばいいよw
0620login:Penguin
04/12/18 17:58:30ID:RN042meJDOSがリアルタイムとは思えないんだが。
0621login:Penguin
04/12/18 19:31:26ID:YxYHGDRQそんなん自力で割り込み処理すりゃいいことですがな。
仮想86モード使われると悲惨な事になるが。
0622login:Penguin
04/12/18 21:20:14ID:RN042meJそれはリアルタイムモニタ上でDOSが動いているんじゃないか?
0623login:Penguin
04/12/20 23:39:00ID:49G4I5qSスレの雰囲気が、インド人と中国人の会話みたいになってきたね。
やつら偉そうにぺらpらうわなにをあsふぃえdosあjkヵrtおdf
0624login:Penguin
04/12/20 23:52:54ID:h38vVjZ3宇宙人ハケーン
0625login:Penguin
04/12/20 23:55:09ID:/mVr0ipUなかなか楽しい雑談じゃないか。少なくとも偉そうには見えないな。
0626login:Penguin
04/12/21 01:13:07ID:EDLnrsgzttp://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:Penguin
04/12/21 21:37:43ID:FF12R4zy分からないから(?)なのだ。
0628login:Penguin
04/12/24 14:29:41ID:F0uSs1YOoutb(0x01,0xe000);
とやってみたのだが出力されない・・・・・
どんなことが考えられるでしょう?ハードウェアはwinで起動して動作しているので
大丈夫のはずなのですが・・・
そのプログラムのポートを0x378にするとちゃんとパラレルポートは動くのに・・・
0629628
04/12/24 16:16:37ID:YTtxlWWe入力ポートに出力してどーするよ・・・orz
0630login:Penguin
04/12/24 17:00:44ID:05AHm88x0631login:Penguin
04/12/25 01:29:20ID:T9CkB4s0NTT ドキュモから出資は受けるわ、末期症状かねー?
0632login:Penguin
04/12/25 11:53:57ID:XwefH9zM0633login:Penguin
05/01/02 13:45:22ID:Td7Z7+u1は勿論、インストール後も共有メモリ関連でトラブルが発生したり・・・。MLもその
話題で賑わっている。ユーザー空間でリアルタイム処理ができるので使っていたが、だんだん
困ったもんだ。
0634login:Penguin
05/01/06 14:31:02ID:nl5OWFXe0635login:Penguin
05/01/06 16:22:46ID:01EexCPC…もしかして、どこかで今でもサポートされてるとか?
0636login:Penguin
05/01/06 23:52:57ID:0pkCxqZXウインドリバーが買ったけどサポートされてるとはいえないだろうね。 前の会社でpSOS使ってて
3年前に新しいボードに移植したときロイヤルティーの交渉はウインドリバーとした。 もちろん
vxWorksに乗り換えることを進められたけどね。 まあうちはpSOSのソース全部もってたから
激しくカスタマイズしてたけど。 TCP/IPのスタックは全部入れ替えたし。
0637login:Penguin
05/01/07 02:55:46ID:BVFd2T3Yあれは便利だったよね。
0638login:Penguin
05/01/17 17:08:07ID:G+fKZhV/前に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:Penguin
05/01/17 20:13:35ID:YQWdmIN0rootの指定が間違っているとしか。
元のカーネルで起動して、'/'がどこにマウントされてるか確認すれ。
0640login:Penguin
05/01/18 20:37:56ID:14Fd0SurVideo4Linux2って入れれるの?
RTのパッチあててxconfigするときにVideo For Linuxはmにしてあるんだけど,
V4L2じゃないよね・・・SAA7130が使いたい。
V4L2のパッチあてたらRTのパッチ当てられないんだろうか。
0641login:Penguin
05/01/25 22:04:55ID:foVk5dKFhttp://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/
0642640
05/01/26 01:19:53ID:1sOh80vd0643login:Penguin
2005/03/31(木) 17:46:46ID:iCSW+ZhvCPU:Pentium4 3.80GHz、マザー:D915PBL(intel915P)、メモリ: DDR2SDRAM(1GB)、
OS:FedoraCore1のマシンに、kernel−2.4.20でRTLinux−3.2−pre2をインストールしました。
ためしに、1秒周期で処理を行うプログラムを作ったところ、10倍弱のスピードで処理してしまいます。
RTLinuxのモジュールを組み込んだ後におかしくなるらしく、
コンソールに普通に文字を打っても、同じ文字が連続して出力されたり
ダブルクリックを受け付けなかったりします。(かなり早くクリックすると受け付けます(笑))
モジュールを組み込んだ後におかしくなるので、rtl_timeが原因なのかと思っているのですが解決法が見当もつきません。
どなたか解決法が分かる方がいらっしゃいましたら、お教えください。
よろしくお願いします。
0644login:Penguin
2005/03/31(木) 23:39:31ID:XmoFPvDMサンプルプログラムは全部正しく動いているか確認した?
0645643
皇紀2665/04/01(金) 09:40:50ID:fmsCkflj返事が送れて申し訳ありません。
サンプルプログラムも10倍弱で動作しました(frank_app等)。
pthread_make_periodec_np()で設定した値の10倍弱の速度で動いているようなんです。
カーネルを2.4.21−pre5にするか、CPUをちょと遅いのに変えるかして
もう一度確認しようと思っています。
引き続き、アドバイスをよろしくお願いします。
0646login:Penguin
皇紀2665/04/01(金) 10:21:31ID:jevWBiCTハイパースレッディングとか大丈夫?
0647643
皇紀2665/04/01(金) 12:09:21ID:fmsCkfljBIOSで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/ymokernel config の CPU Frequency scaling はどうなってます?
もし、Enable ならはずしてみそ。
0650643
皇紀2665/04/01(金) 18:27:26ID:fmsCkfljアドバイスありがとうございます。
make xconfigでCPU Frequency scaling を探したのですが、
項目を見つけられませんでした。
カーネルのバージョンが古いのでしょうか?
ちなみに、Advanced Power Management ははずしてあります。
0651login:Penguin
皇紀2665/04/01(金) 20:40:27ID:nuH/ewQlゴメっ!
間違えた!
kernel 2.4系だったね。 2.6系とごっちゃになってた。
無視して下さい。
0653643
2005/04/05(火) 11:01:08ID:/MGTngYc手で測ってみた時間よりも6倍(10倍弱ではありませんでした)速い…。
でもコンソールでtime <プログラム名>で実行時間を出力してみると
手で測った時間と一緒…。
gethrtime()がおかしいんですけど、
ハードウェアに依存するのならばコンパイル時の設定がだめなのかな?
もっと調べてきます。
皆さん、お気づきの点がありましたらご教授ください。
0654login:Penguin
2005/06/17(金) 12:03:03ID:Lps3SCtt0655login:Penguin
2005/06/17(金) 12:35:52ID:IupBX9KJあるぢゃん。
0656login:Penguin
2005/06/17(金) 21:51:50ID:s86fZctEhttp://www.rtai.org/
0657login:Penguin
2005/06/19(日) 06:37:27ID:e1Wk+MAjGPL版ではRTLinuxはユーザー空間でのリアルタイム処理不可の為
RTAIかTimeSysで迷っています。RTAIはGPLしか無いようですが、
TimeSysのGPL版は使える物なのでしょうか?
0658login:Penguin
2005/06/19(日) 18:14:39ID:yoQtS2q/高精度タイマは使えません。
10ms以下のワンショットタイマ、インターバルタイマが欲しいので
あれば、TimeSysのGPL版ではダメです。Realtime版を購入する
必要があります。
プライオリティ付きのトップハーフ、ボトムハーフが必要なだけで、
高精度タイマは不要、ということであれば、GPL版でOKだと思います。
詳細は日新システムズのWebで。
http://www.co-nss.co.jp/products/realtime/realtime-info.html
メンバー(登録無料)専用ページにマニュアルやFAQがあります。
0659654
2005/06/19(日) 18:54:39ID:cA8/vIY7日本のページではこうでてくるのですが。
リンク先)FSMLabs Japan Products
■RTLinux/Free CD-ROMサービスは終了いたしました。
0660login:Penguin
2005/06/20(月) 20:22:40ID:TVWkVkRdhttp://www.rtlinuxfree.com/
0661657
2005/06/21(火) 15:58:33ID:LYzu+niD貴重なアドバイスありがとうございます。
色々調査した結果です。
1:RTLinux
文献、資料が他より多く、応答良いがGPLではユーザー空間でのリアルタイム処理不可。
0662657
2005/06/21(火) 16:11:22ID:LYzu+niD2:TimeSys
応答良いがGPLではソフトリアルタイムのみ。PROは高価。
3:RTAI
応答良いが文献、資料が少ない。
結局、貧乏人の私にはRTAIが一番良いと思われます。
RTAIはGPLのみなので差別化も無いし応答も良いし…
用途は機械制御タスクを数m秒毎、測定制御のタスクを数十μ秒毎に走らせたいのです。
GPLで最強なのは何でしょうか?
0663login:Penguin
2005/06/22(水) 00:15:02ID:GZ+0vGy+ユーザ空間でリアルタイム処理する必要ないし
RTLinuxでよくね?
0664login:Penguin
2005/06/22(水) 01:33:15ID:SuxfSrBVTimeSysの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
0665662
2005/06/22(水) 01:44:22ID:SKFxSYvVあれ?その通りです…が、逆にRT空間でPCIやLANやその他ドライバ等の
使用出来ない物が多いのでは?
0666login:Penguin
2005/06/22(水) 01:52:39ID:SuxfSrBV実現は難しいと思います。
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:Penguin
2005/06/22(水) 02:00:26ID:SuxfSrBVアプリケーションで実現できます。たぶん、オリジナルKernel2.6のPreemptible版も。
(clock_settimeだったか何だかのAPIで、定周期タイマを生成して、定周期スレッドを
動かす場合。TimeSysのGPL版には高精度タイマがないのでムリ。)
0668login:Penguin
2005/06/22(水) 02:36:45ID:SuxfSrBVclock_settimeとかはPOSIX APIなので、普通にPOSIXのタイマを使った
アプリを作るだけで、リアルタイム化される、というメリットがあります。
が、そのプロセス/スレッドを、pthread_setschedparam とかでSCHED_FIFO
にスケジューリングポリシーを設定、とかしないといけないので、RTLinux/RTAIで
専用APIを呼ぶのと大差ないかも。
ホントに数10μsの定周期処理で、1μsぐらいの時間の正確性が必要なら、
カーネル空間で動くボトムハーフやタスクレットとして実装(オリジナルKernel2.6の
Preemptible版/MontaVista/TimeSys)するか、RTLinux/RTAIのリアルタイムKernel上で
直接動くタスクを作る(できるかどうか知りませんが...)か、ということを検討する必要が
あるのでは。
0669665
2005/06/22(水) 02:45:41ID:SKFxSYvV>>667
>>668
あいがとうございます!
実際には100μs周期で測定して±10μsなら良いかな?と思っています。
Pen4の2GHz位で10μs周期で走れば良いのですが。
RTLinuxやTimeSysのPro版は100万位(定価)でとても買えません。
GPL版は性能、機能に差がありすぎて…なんか感じ悪いです。
しかしRTAIはGPL版しか無いので最高の物が使えます。
GPLではRTAIが一番と思いませんか?
0670665
2005/06/22(水) 03:03:55ID:SKFxSYvV何処かにありませんか?
0671login:Penguin
2005/06/22(水) 19:59:21ID:SuxfSrBV>RTLinuxやTimeSysのPro版は100万位(定価)でとても買えません。
RTLinuxは知りませんが、TimeSysのRealtime版(x86)を去年購入しましたが、そんなに高くないですよ。
1年ぐらい前に、急激に安くなりました。
と思いましたが、安くなったのはx86版だけでした。他のCPUは安くなかったですね...
0672login:Penguin
2005/06/22(水) 20:17:34ID:SuxfSrBV>GPLではRTAIが一番と思いませんか?
条件によって向き不向き(メリット・デメリット)があるので、一概には言えないですね。
個人的には、
数10μsのタイマ精度までは不要ということであれば、オリジナルKernel2.6を
Preemptibleにするだけで十分。
XIPやファイルサイズの小型化が必要なら、MontaVista。(めっちゃ高いけど)
CPUやネットワーク資源の予約(Reservation)が必要なら、TimeSysのReservation版。
という感じです。
お金が必要なMontaVistaやTimeSysのKernel2.6版も、ライセンスはGPLだと思いますよ。
GPLだからといって無償とは限らないですし、誰でも入手可能にしなければならないことも
ないですし。
(Kernel2.4ベースのTimeSysは、独自の「リソースカーネル」部分はGPLではありません。)
0673login:Penguin
2005/06/22(水) 20:20:31ID:SuxfSrBVRTAIの資料、ちょっとググってみましたが、結構あるのでは?
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:Penguin
2005/06/23(木) 11:03:31ID:fTnimKou>>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:Penguin
2005/06/23(木) 11:46:37ID:fTnimKou>お金が必要なMontaVistaやTimeSysのKernel2.6版も、ライセンスはGPLだと思いますよ。
>GPLだからといって無償とは限らないですし、誰でも入手可能にしなければならないことも
>ないですし。
そうですね、すみません。どうもGPL=Freeのイメージがあって…
並びにRTAI資料関係ありがとうございました。実験して見ます。
0676login:Penguin
2005/06/23(木) 19:25:24ID:ZK4I62Sw>Fedora4をDownloadしてPreemptibleにする(どうやるんだ?)
カーネルを再構築すればOK。make xconfigとかでconfig画面のどこかの
項目にPreemptionとか何とか出てくると思います。
ただし、もしかしたら安定版カーネルには、まだPreemptパッチが取り込まれて
いないかも。なのでFedora4のカーネルでOKかどうかは知りません。
開発版カーネルには入ってるはずなので、Fedora4のカーネルになければ、
オリジナルの開発版をダウンロードして再構築してみてください。
0677login:Penguin
2005/06/23(木) 19:45:50ID:ZK4I62Swプロセス(スレッド)のスケジューリングポリシーをSCHED_FIFO(2.6では名前が
かわっているかも)にするとか、clock_settimeとかでインターバルタイマを作る
とか、リアルタイム処理になるよう、プログラミングする必要はあります。
RTAIの場合でも、rt_XXXXとかでリアルタイムタスク/タイマ用のAPIを使わないと
リアルタイム処理できないので、そういう意味では同じようなもんですが。
0678login:Penguin
2005/06/24(金) 01:19:28ID:t6srfNQW2.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>>677
>>678
こんにちは。
Fedora4インストールしました。もしかしたらすごい応答良かったりして…なんて思ったのですが、
素のままでは上記Redhat7.2での実験と変わりませんでした。(タスク切換周期約100ms)
make xconfigでPreemptionらしきものが見つからない…どうしよう?
もし見つかればこの□にチェックすれば応答が良くなるのですか?
niceで優先度上げたタスクは100ms内できちんとパルスを出すのですが…
単純にタスク切換周期を100ms→1ms(出来れば100us)にする事は出来るのですか?
0680678
2005/06/24(金) 23:12:03ID:Ft2ITgAlこっちの方に知りたいことが書いてあった。
ttp://www.atmarkit.co.jp/flinux/embedded/rtos02/rtos02c.html
Real-Time Preemptionの結果が気になるところだけど、ユーザ空間で
1msなんてRTLinuxやRTAIでもお話にならないレベルですね。
素直に、マイクロカーネル上のリアルタイムタスクにするしかなさそう。
0681login:Penguin
2005/06/25(土) 10:48:21ID:XthhRdZ1>もし見つかればこの□にチェックすれば応答が良くなるのですか?
カーネルがプリエンプティブル(Preemptible)になっていない場合、システムコール発行などで
カーネル内に処理が移ると、そのカーネル内の処理が終わるまで、ユーザ空間のプロセス(スレッド)
は処理できません。カーネル全体をロックしているので「ジャイアントロック」とか「ビッグロック」
とか呼ばれています。このジャイアントロックは結構長い時間(数ms〜数10ms)かかるので、
いわゆる「応答時間」の性能はかなり悪くなります。
カーネルをプリエンプティブル にすると、カーネル全体をロックせず、クリティカルセクションだけ
をロックするようになるので、応答時間の性能が良くなります。ただし、ロックをクリティカルセクション
だけにするのは各種デバイスドライバが対応する必要があるので、使用するドライバがどのくらい
きちんとプリエンプティブルにしてくれているか次第、というところがあります。
DIOでパルス出力しているとのことですが、Interface社のDIOボード+Linux用ドライバなどを使っている
場合は、そのドライバがどうなっているか、というところにも依存します。
が、DIOでパルス出力するだけなら、あんまり気にする必要ないかもしれませんね。
0682login:Penguin
2005/06/25(土) 10:58:26ID:XthhRdZ1>niceで優先度上げたタスクは100ms内できちんとパルスを出すのですが…
niceじゃなくて、スケジューリングポリシーをRealtime(SCHED_FIFO)にした上で、
プライオリティを高くしておかないと、少し負荷がかかっただけで、周期を守れなくなりますよ。
それに、素のままのカーネルでは、インターバルタイマやウェイト/スリープAPIの周期を
10ms以下に設定しても設定通りにはなりません。カーネル内のタイマ周期が10msになって
いるため、それ以下の時間で制御できないためです。
素のカーネルで10ms以下のタイミングが必要なら、プリエンプティブルにするだけでなく、
カーネル内のタイマを1msに設定するなどのconfigも必要です。
0683658,664,676,681
2005/06/25(土) 11:08:10ID:XthhRdZ1>2.6ならPreemptionの項目は普通にあると思うけど、
>Real-Time Preemptionのパッチの話だったらまだじゃない?
なるほど。
TimeSysのプリエンプティブル化方法は、spin_lockに対して行われているので、
同じレベルにするには、少なくともこのReal-Time PreemptionのPREEMPT_RT
が必要なようですね。
0684658,664,676,681
2005/06/25(土) 11:39:43ID:XthhRdZ1>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,681
2005/06/25(土) 12:02:23ID:XthhRdZ1>最大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>Real-Time Preemptionの結果が気になるところだけど、ユーザ空間で
>1msなんてRTLinuxやRTAIでもお話にならないレベルですね。
>素直に、マイクロカーネル上のリアルタイムタスクにするしかなさそう。
そうですか…ユーザー空間での1ms周期はKernel2.6でもRTAIでもTimeSysでも無理なんですか…
やはりRTAIかTimeSysのRT空間使うしかないのかな?
TimeSysは少し違うみたいだけどユーザー空間でリアルタイムタスク走れて、1ms周期とか出来るんですか?
0687679です。
2005/06/25(土) 15:30:55ID:0dNC8emY>カーネルをプリエンプティブルにすると、カーネル全体をロックせず、
>クリティカルセクションだけをロックするようになるので、応答時間の性能が良くなります。
すみません。Fedora4で実験しているのですが、まだカーネルをプリエンプティブルにする方法が分からないのです…
DIOはPCIBIOSよりベースアドレスを取得して自前で制御しているのでドライバは使っていません。
0688679です。
2005/06/25(土) 15:41:19ID:0dNC8emY>素のカーネルで10ms以下のタイミングが必要なら、プリエンプティブルにするだけでなく、
>カーネル内のタイマを1msに設定するなどのconfigも必要です。
カーネル内のタイマを1msに設定するにはmake xconfig画面内の設定を変更するのでしょうか?
0689679です。
2005/06/25(土) 16:04:21ID:0dNC8emYTimeSysはRTAIより良いですか?
0690login:Penguin
2005/06/25(土) 18:59:09ID:Gw2fBEV5手元にあるのは rtlinux-3.1.tgz
環境は redhat9
tgzを展開するまではいいのですか
その先が分かりません
0691658,664,676,681
2005/06/25(土) 19:08:50ID:XthhRdZ1>そうですか…ユーザー空間での1ms周期はKernel2.6でもRTAIでもTimeSysでも無理なんですか…
685に書いたように、私には十分と思える精度がありますがねぇ。
RTAI:977μs周期プロセスのジッタが±約10μs。
TimeSys:1ms周期スレッドのジッタが±約20μs。
どちらも定周期で起動しているのはユーザ空間のプロセス・スレッドです。
0692login:Penguin
2005/06/25(土) 19:20:30ID:PUKsaVSFまずはドキュメントよく嫁
0693658,664,676,681
2005/06/25(土) 19:44:22ID:XthhRdZ1>すみません。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,681
2005/06/25(土) 20:08:41ID:XthhRdZ1>TimeSysはRTAIより良いですか?
条件によって、どちらが良いとは限らないです。
POSIX APIでリアルタイム処理したいならTimeSys。
RTAI専用APIでもいいからより高い応答性能が必要ならRTAI。
というところじゃないでしょうか。
まぁ、仕事で使うなら、それぞれのサポート費用とそのサポート部門の技術力や親切具合
(困ったときにどれぐらい助けてもらえるか)も考慮することになりますね。
ただし、どれぐらいサポートが充実しているかは、サポートを受けてみないとわからないのが
難点です。
0696login:Penguin
2005/06/26(日) 00:04:06ID:J+V8pQbRどのドキュメントでつか?
0697login:Penguin
2005/06/27(月) 18:07:08ID:3asqS1RKhttp://www.atmarkit.co.jp/flinux/embedded/rtos03/rtos03a.html
連載:LinuxによるRTOSの実現(3) リアルタイム機能をLinuxカーネル自身で実現するスタンドアロン方式。この方式の具体的な実装やリアルタイム性能を検証する
0698login:Penguin
2005/06/27(月) 23:25:06ID:ehfi2wtqRT→Linuxという経路でデータを周期的に転送する際に,
RTスレッドの方が実行周期が早いためLinux空間でデータを
FIFOから読み出すより早く次のデータが書き込まれにRT-FIFOから
あふれてしまいます.今のところRT-FIFOを作成する際にできる限り
大きな値で作成してごまかしていますがそれでも送れるデータの数に
限界があります.
mallocによるメモリの確保などと同じように大サイズのRT−FIFOを作る
方法は無いものでしょうか?
0699686です。
2005/06/28(火) 11:53:54ID:E3uAtiWc>RTAI:977μs周期プロセスのジッタが±約10μs。
>TimeSys:1ms周期スレッドのジッタが±約20μs。
>どちらも定周期で起動しているのはユーザ空間のプロセス・スレッドです。
これはユーザ空間のデータですか!いいですね!このケースだとRTAIが若干いいですね。
0700login:Penguin
2005/06/28(火) 15:12:59ID:mdDc5EUUARTカーネルで起動するとXが立ち上がりません。
こんな経験をされた方おりませんか?
0701688です。
2005/06/28(火) 15:31:38ID:E3uAtiWc>すみません。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>POSIX APIでリアルタイム処理したいならTimeSys。
>RTAI専用APIでもいいからより高い応答性能が必要ならRTAI。
的確な回答、大変ありがとうございます。
POSIX APIでリアルタイム処理したいんでTimeSysと言いたいんですが、
お金の問題があるからRTAIです。RTAI専用APIそんなに沢山ないですよね…
>仕事で使うなら、それぞれのサポート費用とそのサポート部門の技術力や親切具合
RTAIもFree版以外にPro版があるのですか?
それとも有料サポートだけですか?
0703login:Penguin
2005/06/30(木) 01:34:02ID:lB09O4veFIFOのサイズが大きければ溢れるのを回避できるという理屈がイマイチわかりませんが、
抜き取り処理がたまに遅れて、そのときに溢れてしまうってことなのかなぁ。
rtlinuxならmbuffでも使ってみたらどうでしょうか?
0704691,693,694
2005/07/01(金) 18:58:26ID:JIAkAdzD>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,694
2005/07/01(金) 19:33:40ID:JIAkAdzD>RTAIもFree版以外にPro版があるのですか?
>それとも有料サポートだけですか?
前は、Lineoがサポートしていたと思ったのですが、現在はよくわかりません。
6/29,30とESEC(組み込み開発技術展)に行ってたのですが、そこで見つけたElinOSというのが
RTAIをサポートしているようです。ただ、このRTAIがDIAPMで開発されているRTAIと同じ
なのかどうなのかは知りません。
http://www.4link.co.jp/products/elinos.html
趣味で使うならダウンロードしていじくっていればいいですが、仕事(製品に組み込む)となると、
何かトラブルが起きたときに自分でがんばるのかサポートを受けるのか、もし知的財産権の侵害が
発覚したときにどう対処するのか(サポートしてくれる会社とどう契約するのか)、などを考え
なければなりませんよね。
0706698
2005/07/01(金) 20:47:06ID:M2NWuUx+アドバイスありがとうございます.
さっそく試してみます.
0707login:Penguin
2005/07/02(土) 01:32:49ID:gL034C3R0708login:Penguin
2005/07/02(土) 16:57:38ID:TmLVCpln>>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>6/29,30とESEC(組み込み開発技術展)に行ってたのですが、そこで見つけたElinOSというのが
>RTAIをサポートしているようです。ただ、このRTAIがDIAPMで開発されているRTAIと同じ
>なのかどうなのかは知りません。
ElinOS知ってます。これいくら位するのですか?
0710704,705
2005/07/02(土) 21:03:09ID:anSVXzQL>100ms周期のタスクを作ったのではなく、1msの矩形波を出力するタスクを2本走らせてオシロで観測したら
なるほど。
でも、素のまま(Preemptibleでない)カーネルのままでも、
* mlockallでページアウト(スワップアウト)を禁止
* sched_setscheduler(pthread_attr_setschedpolicy)でスケジューリングポリシーをSCHED_FIFOにして、
かつ、プライオリティを高くする
とすることで、だいぶマシになると思います。
確かKernel 2.4.18で試したときは、このようにしたプロセスで、nanosleepで20msぐらいの定周期
は実現できたと思います。ただ、ちょっと他のプロセスを動かしただけで、10ms以上の遅延が発生して
しまいましたが。
>>709
>ElinOS知ってます。これいくら位するのですか?
値段は聞かなかったのでわかりません。聞いときゃ良かった...
0711login:Penguin
2005/07/03(日) 14:53:10ID:4SJDhJ7q■ このスレッドは過去ログ倉庫に格納されています