リアルタイムリナックスについて
■ このスレッドは過去ログ倉庫に格納されています
0001wait_np
NGNG素朴な疑問やくだらない質問も受け付けます。
RT-Linux http://rtlinux.cs.nmt.edu
ART-Linux http://www.etl.go.jp/etl/robotics/Projects/ART-Linux
わかることは答えます。わからないことは皆さんが答えてください。
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:4SJDhJ7q0712login:Penguin
2005/07/19(火) 17:06:43ID:5AykE01BTimeSysにしろRTLinuxにしろElinOSにしろ商用版は似た様な価格です。
個人では無理ですね。
0713login:Penguin
2005/07/20(水) 21:37:14ID:COp3cVuMその金額には、単にOSだけではなく、サポートも含まれていると思います。
自分でKernel2.6やRTAIのフリー版などを使った場合は、100万円出さなくて
済むかわりに、いろいろな調査や設定などで「時間」や「手間」など、
個人の場合は直接お金として表われてこない「コスト」がかかるかもしれません。
それから、今のTimeSysはどうなのか知りませんが、2年ぐらい前は100万円も
出さずに買えるケースがありましたよ。
Pentium用の基本セットなら、$875で買えました。日本でもそれに
準じた金額でした。
http://web.archive.org/web/20031008120542/http://www.timesys.com/
商用版だからといって高いとは限りませんよ。
0714login:Penguin
2005/07/20(水) 23:31:30ID:0vP2x2nPおお!いいじゃないですか!$875なら。
x86(PC-AT)しか使わないのでいけるかも?
RTAIのフリー版しか選択の余地無しと思っていましたが。
日新はそんなこといってなかったのに…
今はいくらなんだろ?
ありがとうございました。
0715login:Penguin
2005/07/22(金) 07:27:20ID:F28odBSTユーザープロセスのスケジューリングポリシーや優先度は
sched_setscheduler() で設定できるけど、
ドライバなんかで生成した Kernel Thread のそれは
どうやったら設定できるのかな。
sched.c::sched_setscheduler() を直接呼ぶの?
pthread API は使えるわけ無いし、ググってもほとんど情報がない。。。
0716login:Penguin
2005/07/23(土) 18:29:54ID:dRSqAEeOpidを持つスレッドであれば、schedのsetscheduler関係のものが使えるのでは?
試してみればいかがでしょう?
タスクレットとかだと、普通のKernel 2.4では優先度とかを設定するのは
無理なような気がします。
Kernel 2.6のO(1)スケジューラとか、MontaVista、TimeSys、RTAIとかだと
タスクレットに対しても優先度とかを設定できるんですかねぇ?
0717login:Penguin
2005/07/24(日) 08:17:20ID:2uHKuXyjもともとは、ユーザープロセスのほうで SCHED_FIFO とかにしても
Kernel Thread の影響で全体のスケジューリングにどういう影響が
あるかを調べてます。
kernel/sched.c とか kthread.c を見てる限りではプロセスと
同じ扱いみたいだからできそうなんだけど、時間の都合で
まだ試せてないんです。
あと sched_yield() はユーザープロセスオンリー?な気もして
引き続き調べ中。 ちなみに 2.6.11 でつ。
0718login:Penguin
2005/07/24(日) 10:55:19ID:aAm3ZTIwカーネルスレッドがSCHED_OTHER(2.6では名前変わったんでしたっけ?)なら
SCHED_FIFO/SCHED_RRスレッドのスケジューリングには影響ないでしょう。
SCHED_FIFOのスレッドが影響を受けてしまったら、SCHED_FIFOの意味が
薄れてしまいますよね。プライオリティの設定にもよる気がしますが。
それからカーネルスレッド内のクリティカルセクションが長いとユーザプロセス
に影響が出てしまいますが、どうスケジューリングされるのかということだけ測定
するのであれば、そういう条件はあまり関係ないかもしれませんね。
あと、sched_yield()のようにCPUをあけ渡してスケジューリングしたいのなら、
カーネルモードではschedule()を呼べばいいと思います。
0719login:Penguin
2005/07/24(日) 10:58:30ID:aAm3ZTIw優先度を設定したいんですね。
SCHED_FIFOにすれば、ユーザモードでもカーネルモードでも関係ない
ような...
0720login:Penguin
2005/07/24(日) 22:14:29ID:2uHKuXyjさんくす。
ユーザープロセスも Kernel Thread との間に越えられない壁はなくて、
Kernel Thread が全部 SCHED_OTHER(SCHED_NORMAL)なら問題なさそう
ってことでつね。
# どやって調べようか。。。うーむ
ちなみに、以下調べたことチラシの裏書き。
FIFO/RR は静的優先度1-99 で、OTHER は 0。 OTHER は OTHER の中で別に
動的優先度(NICE値)を持っており、各プロセスに平等にCPU が行き渡るように
スケジューラが動的優先度を随時調整している。
静的優先度と動的優先度は、変数としては同じところに保持されていて、優先度の参照の際には
スケジューリングポリシーを参照してオフセットを足して使い分けている。
(静的[0..MAX_RT_PRIO-1]、動的[MAX_RT_PRIO..MAX_RT_PRIO+40])
コード的に動的優先度の数(-20〜20の40個)より静的優先度の数(0〜99 の100個)の方が
大きい前提で比較を行っている if 文がありそうなので、sched.h の MAX_USER_RT_PRIO を
いじるときは注意。
sched_setscheduler() などでスケジューリングポリシーを設定するときに
FIFO/RR なら OTHER から CPU を奪って FIFO/RR にタスクスイッチする。
優先度の判定もしていて、優先度が current より高ければ、同様にタスクスイッチ
する。
0721login:Penguin
2005/08/06(土) 03:14:59ID:TACiXhq1Fedora4使ってる人いますか?
0722login:Penguin
2005/08/10(水) 01:16:20ID:IMW3UDZu> sched.c::sched_setscheduler() を直接呼ぶの?
CPU migration thread なんかの kernel thread は、
pid を 0 にして sched_setscheduler() で、
呼び出した thread 自身のスケジューリング設定をやってるね。
あと、sched_yield() したければ、schedule() でも良いかもしれんが、
yield() ってのも有る。これだと、set_current_state() とかでの
前準備しなくて良いのでは。
0723login:Penguin
2005/10/08(土) 13:46:20ID:ng3C5EQG0724松井→サントスは必要なかった
2005/10/08(土) 21:54:34ID:vgSIfNSb0725YAHOO出品情報でし
2005/10/10(月) 14:36:38ID:9ddrRvAC開始¥3300ですので、よろしければ入札してみてくだせ!
Linux CUI環境に最適!
http://page13.auctions.yahoo.co.jp/jp/auction/r20112912
0726login:Penguin
2005/11/02(水) 21:57:24ID:OP6gpXTW新製品「Turbolinux FUJI」発表
2005年11月25日より販売開始
ターボリナックス株式会社
同新製品は、2003年10月にリリースされ、リナックスOS分野で前人未踏の
52週(1年間)連続売上第一位(BCN調べ)を記録し、
数年来国内売上シェア第一位を誇るターボリナックスの
基幹デスクトップ製品「Turbolinux 10 Desktop」(以下10D)
の後継製品にあたり、 国産OSならではの完成された日本語環境はもちろん、
10Dで提唱したWindowsとの互換性をさらに強め、安全性、 安定性に優れた
デスクトップ環境を提供します。Windows環境との共存の強化により、Linux
とWindowsの優位性を融合した ハイブリッド・デスクトップリナックスOSとして、
企業、官公庁、自治体、教育機関などへの導入をより一層スムーズなものとします。
FUJIではOS本体とプラグインという新しいビジネスモデルを展開します。
これにより、ユーザーは基幹OSであるFUJIを入手すれば、
用途に応じてプラグインを足すだけで自分だけに特化したOSを利用することが可能となります。
現時点において、ビジネスユース向けプラグイン、 ホームユース向けプラグインやURLフィル
タリングソフトなど、セキュリティ関連プラグインの提供を予定していますが、都度ユーザー
ニーズを 市場から汲み取り、タイムリーに新しいプラグインを提供することがFUJIの価値を高
めるものと考えています。なお、FUJI発売と同時に プラグイン第一弾としてサイバーリンク社
の「PowerDVD for Linux」が決定しており、これら各種プラグインは新ツール"Turboプラス"経
由で提供し、 ユーザーは簡単に購入、ダウンロード、インストールができるようになります。
http://www.turbolinux.co.jp/cgi-bin/newsrelease/index.cgi?date2=20050920033408&mode=syosai
0727login:Penguin
2005/11/04(金) 23:40:35ID:3YE2b6zqちっともリアルタイムじゃねーべナ。
プラグインのスケジューラで自作の奴とか試したエロイ人はおらんのか?
0728login:Penguin
2005/11/24(木) 03:25:01ID:bxMMMkbfEPSON から出ているポータブルストレージP-2000には、イーソルという会社のµITRON4.0準拠OS
が搭載されているようです。
…そこで、本体のHDD(40GB)を例えば160GBの物に換装する事は可能でしょうか?
120GBへの換装の成功例は有ります。
137GBの壁は現在のハードでも有るのでしょうか?
0729login:Penguin
2005/11/24(木) 04:14:56ID:Cn8YF6mC0730割込ハンドラ@優先順位
2005/11/24(木) 11:43:07ID:b7no7JmMrtl_request_irq(irq, handler)関数で登録した割込ハンドラの
優先順位はどうなるのでしょうか?
私の環境では、割込ハンドラ関数実行中に、SCHED_FIFOで生成した
別のスレッドがレディー状態になると、そのスレッドにCPUの使用権が
移てしまいます。
割込ハンドラ関数を最優先に処理させる為の方法はあるのでしょうか?
0731割込ハンドラ@優先順位
2005/11/25(金) 09:12:08ID:PGju3YQA割込みハンドラの処理が間違っていました。
割込み処理の中で,関数 pthread_wakeup_np() を使って,
スレッドを起動しようとしていたのですが,
この関数を使うと,ただちに(割込み処理の途中で)
スレッドが実行されていました。
スレッドを起動する処理に,関数 pthread_kill() を使うと,
割込み処理が終了した後で,スレッドが実行されるようになりました。
【変更前】割込みハンドラ
unsigned int intr_handler(unsigned int irq, struct pt_regs *regs)
{
:
pthread_wakeup_np(thread_id);
:
return 0;
}
【変更後】割込みハンドラ
unsigned int intr_handler(unsigned int irq, struct pt_regs *regs)
{
:
pthread_kill(thread_id, RTL_SIGNAL_WAKEUP);
:
rtl_schedule();
return 0;
}
0732login:Penguin
2005/12/02(金) 20:30:55ID:X1Af1hb4スレ違いだが、P2000側のドライバが 48bit LBA なんて
対応して無いだろ。 やめとけ。
0734login:Penguin
2005/12/27(火) 00:35:29ID:Odg3gsORどんなOSですか?かなりいいOSとは聞くのですが、情報は
ありませんか?教えて下さい
0735login:Penguin
2005/12/27(火) 00:42:18ID:Odg3gsORどんなOSですか?かなりいいOSとは聞くのですが、情報は
ありませんか?教えて下さい
0736login:Penguin
2005/12/27(火) 13:55:55ID:1SQYWINhまず、あなたの社名と営業所名を書いて下さい。
話はそれからです。
0737login:Penguin
2005/12/27(火) 18:50:13ID:etMJ9ITSVxWorkってかなり開発環境がいいって聞いているのですが・・
情報を教えて下さい。
0738login:Penguin
2005/12/27(火) 19:38:55ID:4xI3gVfp会員制クラブみたいな感じ。あと小口もあまり対応しないはず。
ここはペンギン板なので他の方を代弁しますね。
かえれ。
0739login:Penguin
2005/12/28(水) 00:13:50ID:FBPxkGUIVIA C3プロセッサは相性わるいんかな?
insmodしてもrmmodすると落ちる…
RT-Linux3.2-pre3ってどこに落ちてる?
ART-Linuxってどうよ?ダウソするのに氏名やら住所,使用目的をメールせないかんのけど…
わけわかんね。
0740login:Penguin
2005/12/28(水) 01:43:15ID:ERfm6VHA0741login:Penguin
2005/12/28(水) 22:32:04ID:4bTtfVys0742login:Penguin
2005/12/30(金) 14:33:20ID:khrfGdI6本家(FSMlabs)からRTLinux Freeのdownloadへ行けばOKじゃないんですか?
RTLinuxFree - fsmlabs.com
http://www.fsmlabs.com/rtlinuxfree.html
Home - www.rtlinuxfree.com
http://www.rtlinuxfree.com/
1年前は、pre2がDLできてたけど、流石に今はpre3じゃないかなぁ?
最近試してないんで知らないけど。;-)
0743login:Penguin
2006/01/04(水) 16:00:17ID:GCA5+gu6www.rtlinuxfree.comのrtlinux-3.2-rc1.tgzを落とせばいいんですよね?
これ落としてビルドしたけど,やっぱ止まる…(ToT)
configurationが問題かな?
CPUのタイプやら,その他のオプションをいろいろ変えているけど,なかなか…
ちなみに,カーネルは2.4.20,RedHat9です。カーネルはkernel.orgから落としました。
RTのdoc読むとkgccを使ってますよね?gccではダメなんですか?
あと,gccって,このカーネルではこのgccのバージョンじゃないとダメ!ってありますか?
0744login:Penguin
2006/01/04(水) 16:18:31ID:o2qi2kX+持っているぞ。必要なら教えて。
0745login:Penguin
2006/01/05(木) 16:01:52ID:hDtsW4j7↓これでしょ?
ttp://www.cqpub.co.jp/interface/contents/2005/200503.htm
●「VxWorks」を使ったRTOS技術の基礎と応用(第11回,最終回)
組み込みシステムのデバッグ(後編)――ビジュアライゼーション・ツール
0746login:Penguin
2006/01/05(木) 17:26:40ID:+yMnItYH可能なのでしょうか?
pthread_make_periodic_np(pthread_self(),gethrtime(),X*1000*1000);
そのスレッドの最後でXを返すことでスレッドの次の実行周期を
変更できると考えていたのですが上手くいかないので
どなたかわかる方教えていただけませんか?
0747login:Penguin
2006/01/05(木) 18:50:11ID:xmEkQvVD営業的に説明が難しくて・・・・。
何かご存知のことがあれば教えて下さい。
よろしkお願いします。
0748login:Penguin
2006/01/08(日) 17:50:13ID:Ga3TjZNrRH9のgcc(3.2でしたっけ?)で無問題と思います。
少なくとも、pre2, pre3で試した時は、RTLinuxのレグレッションテストを通りました。
kgccを使う必要があったのは、RH7.X/8.X系の時の話で、9.0では問題に突き当たった
経験は無かったです。
> configurationが問題かな?
そうですね、変にチューニングしようとすると、おかしな状態になるケースが多いはずです。
基本方針としては、
・変なチューニングを施さない
(最適化させるのは、最低ラインのビルドが成功してから徐々に変える)
・エラーが出たら、大抵の場合特定のモジュールのビルドに失敗しているのでビルド対象から外す
(Gイーサとか、Gイーサとか、Gイーサとか…(笑))
ってな感じかな?
0749login:Penguin
2006/01/11(水) 13:32:29ID:Wn8rLbzA遅くなってすいませんm(_ _)m
んじゃ,gccを使用する場合は
CC=$(CROSS_COMPILE)gcc
から
CC=$(CROSS_COMPILE)kgcc
にする必要はないってことですね?
CPUの問題と思って色々種類を変えてビルドしてたんですが,やっぱり変化無しで…
やっと起動した〜!と思ったら,その後のレギュレッションでフリズったり(ToT)
泣く泣くハードリセットかけて再起動して…
とりあえずネットワーク機能は切ってビルドしてみます。
早速,試してみます。
ありがとうございました
0750login:Penguin
2006/02/05(日) 22:19:43ID:nKb5tm0A普通の Linux は動かしてるベンダーあるみたいなんだが。
0751login:Penguin
2006/02/06(月) 11:19:43ID:6e2aa/2o出来るとは思うが。
リアルタイムスケジューラーを二階建てにする意味があるのか?
■ このスレッドは過去ログ倉庫に格納されています