【Toppers】組込みOSのスレがないじゃないか【freeRTOS】
- 1 :774ワット発電中さん:2019/08/29(木) 19:37:37.17 ID:1mQYwlMH.net
- お前らみんなベアメタルなの?
freeRTOSがフリーなRTOSの一般名詞だと思ってたんだが、アマゾンの組込みOSだと知って衝撃を受けた。
つか、10年くらい前からやってるtoppersなんか遥か彼方に追い越した感があるけど、どうなってんだろうな。
今日、試しにcubeIDEでSWを押すとLEDの点滅間隔が変わるだけのソフトをfreeRTOSを使って動くのを作ってみたんだが
結構簡単だな。
- 95 :774ワット発電中さん:2021/09/05(日) 06:02:50 ID:cNkVgkSW.net
- >>91
その通りで実際にはLINUX(ラズパイ)で困らないように思えてしまう。
RTOSの基礎的なタスク処理のしくみはともかく、FreeRTOSの売りはApplication
Protocolsで、HTTPSやMQTTまで無償だ。
メーカー製の有償RTOSですら暗号通信までサポートしているものはほとんどない。
けど現行のFreeRTOSは情報が少なく、自分が選んだMPUで自分が構築した
プロジェクトにHTTPSを組み込むのは一苦労で、その苦労が報われるかという話。
LINUXなら楽勝なのに。
- 96 :774ワット発電中さん:2021/09/05(日) 09:13:07 ID:nb7ib3F8.net
- >>95
それならRTOSを選択するのが間違いでは?
RTOSはリアルタイム性確保が主目的で、通信系はそれを邪魔する
- 97 :774ワット発電中さん:2021/09/05(日) 09:55:33 ID:H09Ao42F.net
- >>95
ラズパイ & Linuxを使えるアプリで、ラズパイ & Linux で困らないのは当たり前。
それとも、ラズパイ & Linuxを使えるアプリで、それ以外を使うケースとの比較なんだろうか。
とはいえ、ラズパイ & Linux以外を使うことを求められるのは、
処理能力的にラズパイ & Linuxを使えるとしてもそのほかの条件で、
結果として、実はそれがラズパイ & Linuxを使えないアプリだからでは。
- 98 :774ワット発電中さん:2021/09/05(日) 10:01:01 ID:OpGfIpZC.net
- 禅問答かな?
- 99 :774ワット発電中さん:2021/09/05(日) 10:30:27 ID:cNkVgkSW.net
- >>96
なんで?
ネット通信はDMA転送だから、通信タスクの優先順位は低くて何も問題ないよ。
- 100 :774ワット発電中さん:2021/09/05(日) 12:38:46 ID:Qxk8oP9Z.net
- >>89
それ比べちゃうのかよw
- 101 :774ワット発電中さん:2021/09/05(日) 12:55:44 ID:GzrbXWqs.net
- LinuxやWindowsはリアルタイム処理は出来ない
- 102 :774ワット発電中さん:2021/09/05(日) 12:59:17 ID:GzrbXWqs.net
- 小規模環境、省リソース、少コスト
リアルタイム処理
起動時間
信頼性
この辺が特徴
世の中の多くの製品で使われている
この辺が不要ならRTOSを考える必要はない
- 103 :774ワット発電中さん:2021/09/05(日) 13:31:35 ID:GzrbXWqs.net
- >>95
通信が100ms遅れても良い
起動に1分かかっても良い
電力を1W使っても良い
信頼性はそれほど重要じゃない
簡単にTCP/IP通信したい
なら素直にWindowsやLinuxを使ってください
- 104 :774ワット発電中さん:2021/09/05(日) 14:08:54 ID:nb7ib3F8.net
- >>99
なんで?
リアルタイム処理優先している間にバッファオーバーフローしても通信出来るとでも?
- 105 :774ワット発電中さん:2021/09/05(日) 14:18:52 ID:nb7ib3F8.net
- >>103
まぁ、実際にはそんな大ナタにしなくてもWIZnet社のIC:W5500でも載せれば問題解決なんだけどね。
- 106 :774ワット発電中さん:2021/09/05(日) 14:19:33 ID:ur4Nd0wn.net
- 少なくともTCP/IP 通信ならパケット損失しても大きな問題にはならない。
- 107 :774ワット発電中さん:2021/09/05(日) 14:32:55 ID:GzrbXWqs.net
- 100us以内に応答して結果を出力
こういうオーダーなのがリアルタイム処理
CPUを長時間(100msオーダー)占有するような処理は
(RTOS的には)リアルタイム処理ではない
優先度の高い処理でCPUが長時間占有するなら
それはCPUの選択や要件が間違ってる
- 108 :774ワット発電中さん:2021/09/05(日) 14:38:22 ID:H09Ao42F.net
- それぞれの処理を延々とやっているように見えて、占有させてないわけだし。
- 109 :774ワット発電中さん:2021/09/05(日) 16:58:42 ID:g3fRPxjP.net
- Linux動かすならそこそこのターゲットかなとおもうけど
そこで応答性の保証が仮に数桁ちがったとして困らんという話
別に汎用PC上で稼働させるわけじゃなし
- 110 :774ワット発電中さん:2021/09/05(日) 17:31:20 ID:GzrbXWqs.net
- お前が困るとか困らないとかどうでも良い
- 111 :774ワット発電中さん:2021/09/05(日) 18:42:27 ID:nm6wM6BX.net
- まぁ 長い事、教科書はオブジェクト単位をタスクとして扱ってきたからな。 100msディスパッチが応答速度と勘違いするやからが一杯。
タスクはオブジェクトのイベントポーリングを包含するだけのものと変化してきた最近はまともなRTOS設計が増えてきた。
オブジェクトの中にタスクがある。
これも、クリーン・アーキテクチャー、SOLID原則が言われ始めたおかげなのかもしれない。
- 112 :774ワット発電中さん:2021/09/05(日) 20:18:21 ID:hGWrDVGr.net
- なんか変なのが来た
- 113 :774ワット発電中さん:2021/09/06(月) 07:00:33 ID:4EEN8Gxv.net
- 携帯端末の定義なんかも20世紀からさんざん変わっており、通信機能が必須に
なったのも最近のことだ。
AmazonはRTOSにに暗号通信機能が必須と言っている。
- 114 :774ワット発電中さん:2021/09/06(月) 19:26:50 ID:2gjVDDi3.net
- そりゃAWS使わせるためにFreeRTOS買ったんだから
そう言うだろうよ
- 115 :774ワット発電中さん:2022/01/24(月) 20:54:45 ID:i0ZnMALX.net
- まだあんまり調べられてないけど FreeRTOS
RL78 FreeRTOSの利用手順(割り込み)
https://qiita.com/shirokumaneko/items/e4b05cd06a257ee85eed
上記の記事見ると、割込みからカーネルに戻らずにreti (RL78の割込みからのリターン命令)
で終わってる。 つまり ITRONで言うところの「遅延ディスパッチ」ってやんないんやね。
その辺のところは、
Chapter 4 割り込み管理(Interrupt Management) (FreeRTOS チュートリアル日本語訳)
https://qiita.com/azuki_bar/items/7f31eb80e8b6b2eff17f
に書いてあるけど、次のtimetickまでタスクスイッチは待たされるみたい。
あと
遅延ディスパッチについては、以下のTRONのサイトで解説がある
https://www.tron.org/ja/page-722/rtos10/
- 116 :774ワット発電中さん:2022/01/24(月) 21:21:43 ID:JoozqHxu.net
- vPortYieldFromISR()
- 117 :774ワット発電中さん:2022/01/24(月) 21:57:28 ID:i0ZnMALX.net
- >>116
vPortYieldFromISR() でいくらカーネルオブジェクトを変更しても、
retiで元のタスクに一旦戻るから、次にカーネルに来るまでタスクは切り替わらない。
- 118 :115:2022/01/25(火) 07:28:30 ID:/xDxqh8Z.net
- 今インターフェース2021年4月号みてるが、p49 図4解りやすく書いてるね。
設計思想として、どうなんだろうって思うね。
特に小さい遅いマイコンの場合はtime tickを長くして負荷を減らすようにするのが定石だけどね。
実際、5MHhzのマイコンの場合は
10msをtimetickにしてたし、
そうなるとタスク起動は、10ms待たされることになる。
それなら、割り込み使ってタスク起動なんて遅いだけだと思うね
- 119 :774ワット発電中さん:2022/01/25(火) 20:28:38 ID:mC7u77Xn.net
- >>117
個人のブログじゃなくて公式の資料読んだ方がいい
YieldFromISRはコンテキストスイッチを起こす
- 120 :774ワット発電中さん:2022/01/26(水) 06:20:52 ID:WEeLKiNm.net
- 実際に動かしてみるまでわからん
- 121 :115:2022/01/26(水) 07:18:21 ID:eE6tc79r.net
- >>119
https://qiita.com/azuki_bar/items/7f31eb80e8b6b2eff17f
これ公式の翻訳だが
そう書いてるんだな
- 122 :115:2022/01/26(水) 07:25:02 ID:eE6tc79r.net
- http://w3c.digital-rc.sub.jp/?eid=47#gsc.tab=0
このサイトに実験結果が書かれている。タスクディスパッチはtime tickの1ms周期でしかしないという結論だよ
- 123 :115:2022/01/29(土) 12:41:35 ID:hfceT+wV.net
- 全面的に俺の間違い、勘違いでした。すまなかった。
実際ソースを見た。 raspberry-piの個人が実装したソースなんだが
ちゃんとFreeRTOSが入っていて、その割り込みから戻るときに
ちゃんと、ullPortYieldRequiredを見て切り替えてる
Exit_IRQ_No_Context_Switch に飛べばタスク切り替えずに割り込みされたもとに
もどり、分岐しなければスケジューラに行くという流れになってる。
https://github.com/eggman/FreeRTOS-raspi3/blob/master/FreeRTOS/Source/portable/GCC/ARM_CA53_64_RaspberryPi3/portASM.S
LINE;281
/* Is a context switch required? */
LDR X0, ullPortYieldRequiredConst
LDR X1, [X0]
CMP X1, #0
B.EQ Exit_IRQ_No_Context_Switch
単純に言い訳すれば、
qiitaのRL78のサイトの記載がよろしくないんだろうと思う。
実際ソース見て、どや顔するつもりが逆になったという話でした。
- 124 :774ワット発電中さん:2022/01/29(土) 19:16:28 ID:DpeQuK04.net
- だから個人ブログじゃなくて公式見ろと
自分で挙げた >121 を読んでも理解できないようでは仕方ないけど
- 125 :774ワット発電中さん:2022/01/30(日) 13:30:20 ID:Vdfzdc36.net
- https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/portable/GCC/ARM_CA53_64_BIT/portASM.S
LINE:343
/* Is a context switch required? */
LDR X0, ullPortYieldRequiredConst
LDR X1, [X0]
CMP X1, #0
B.EQ Exit_IRQ_No_Context_Switch
公式でも同じ。 個人がこんなカーネルのコアな部分さわるとかないからね。
- 126 :774ワット発電中さん:2023/10/17(火) 08:27:43.23 ID:7dnnrmQi.net
- バカなっ・・・あいつ赤信号なのに・・・・・轢かれたぞっ!!
- 127 :774ワット発電中さん:2024/02/07(水) 14:14:55.34 ID:XDEE0bP5.net
- RTOSについて検索しても「FreeRTOSでTCP/IP」みたいな記事ばかり出てくる
・RTOSっていっぱいあるけど何がどう違うの?
・○○みたいなのを作りたいのだけどどのRTOSが適しているの?
みたいな疑問は全く解消されない
- 128 :774ワット発電中さん:2024/02/07(水) 18:09:17.96 ID:K89Njg+d.net
- RTOSはDOSやUnix系OSに慣れた人には最初取っ付き難い
昔ベアメタル環境のプログラミングしてたら感覚的に理解出来るだろうが
- 129 :774ワット発電中さん:2024/02/07(水) 18:22:11.61 ID:BM1DrTGR.net
- RTOS本来の恩恵で考えれば、どれ使っても同じだとおもう。
ペリフェラルをコントロールするライブラリが充実してるとか簡単に見つかるとか、書籍やWEBが多くて調べやすいとか
重要なのはそのあたり。そういう差じゃないだろうか?
ディスパッチさえ書ければだいたいの制御は事足りると個人的に思う
- 130 :127:2024/02/07(水) 23:28:29.80 ID:XDEE0bP5.net
- レスサンクス。どちらかと言えばベアメタルでゴリゴリ書く方だけどRTOSの説明を読んでもピンとこない
・よくある解説だとタスクA/タスクB/タスクCみたいな例が示されるけど3個くらいならハードウェア割り込みベースのタスク管理と大差あるとは思えない
もっと大規模なシステムなら恩恵があるのかもしれないがそのような解説は見つからない
・リアルタイム制御と説明されるがどのくらい時間精度を実現できるのかという情報はあまり見かけない
極端だがソフトウェアUART(usオーダー)やソフトウェアUSB(nsオーダー)といったタスクをマルチタスク動作させられるのか?
あとデバイスドライバは高速応答が発生しがち
・RTOSを利用したシステムを実装するうえでRTOS下にない処理(便宜上タスクと呼ぶ)の取り扱い
すべてのタスクをRTOS下に置けないというケースは現実的にあると思われる。例えば割り込み後最速でDMAを起動する必要があるなど
最近のマイコンはCPUを介さずにあれこれ出来たりするけどそのような機能の扱い方。またそのような動作は大なり小なりRTOSの動作を乱す
・移植性が高いと説明されることがあるが各RTOSでどう違うのか
一部のCPUがもつ高速にコンテキストスイッチを実行する機能を利用できるような改造をしやすいかなど
- 131 :774ワット発電中さん:2024/02/08(木) 01:15:00.18 ID:nF+IFror.net
- 余談かもしれないが
リアルタイムOSのリアルタイムの定義はその仕様書のオーダーによるんだ。
仕様書に一分以内に完了することと書かれていたらほぼどんな書き方でもマイコンでもリアルタイム制御を実現できるし、その条件を満たせばリアルタイム。
逆にレーザー距離計を作るとして光の波長を捉えようとしてもリアルタイムで光波をカウントできるマイコンやFPGA、OSはこの世に無い。
車のブレーキであればmsecで制御を返せばよくて、人間の反射はもっと遅いからリアルタイム制御と言える。
どんな案件でどこまでをリアルタイムと定義するかによる。
タスクはいいよ
仮にLED100個の点滅をmsec単位でユーザーが起動後それぞれ自由に変更できるシステムを構築するとしたらどう?
マルチタスク無いと相当大変な工夫が必要じゃない?
たとえタスクなしでそのシステムが完成しても、顧客から仕様変更でUARTをはさみたいと言ってきたらイチから見直さないといけなくなる地獄
タスクいらないという人もいるのも事実なのでこれ以上は言わないけど。
- 132 :774ワット発電中さん:2024/02/08(木) 01:56:50.89 ID:nF+IFror.net
- DMAはCPUから独立して働くとおもうので、CPU上のRTOSを乱すとしても影響は小さい?、詳しい人が以下にあほバカ言いながらレスするだろう。
注意しないといけないのがDMA先のメモリ参照とCPUの参照先がデッドロックを起こすかもしれないのでミューテックス・セマフォを使わないとだめだと思う。
移植性はなんとも
- 133 :127:2024/02/10(土) 13:17:27.45 ID:ztyh9MAD.net
- >LED100個の点滅をmsec単位でユーザーが起動後それぞれ自由に変更できるシステムを構築するとしたらどう?
100個のLEDを完全独立制御するのは特殊ケースだろう。一般的にはダイナミック駆動で点灯することになると思われる
となると割り込みによる入力&処理タスクとタイマ&DMAによる波形生成タスクの2分割かな
後者はCPUに依存しないからCPUの仕事は前者のみ。これにUARTによる通信機能を追加しても割り込みで十分対応できるはず
というかもっと実践的な例示をしてほしい
例えばハイエンドマイコンに液晶パネル、オーディオアンプ、スピーカー、SDRAM、フラッシュメモリを外付けして動画を再生すると仮定する
外付けのフラッシュメモリやSDRAMは遅いからメモリは2〜3層の階層構造をもち、必要に応じて先読みやバッファする
ソフトウェアが行うべき主な仕事は
・フラッシュメモリ読み出し
・読み出しバッファ制御
・ファイルシステム制御
・スプリッタ
・ビデオデコード
・オーディオデコード
・ビデオレンダリング
・オーディオレンダリング
・ビデオ/オーディオ同期制御
・フレームバッファ制御
・オーディオバッファ制御
・液晶パネル制御
・オーディオ出力
・UI入力
あたりかな?リアルタイム制御はmsオーダーだしRTOSを応用するシステムとしては緩めか
でこれらの仕事をどのようにタスクに分割してどのようなタスクの実行条件を設定し効率的に動作させるか?って問題
ITRON系の本を読んでもこのような実践的な解説は出てこないし、FreeRTOSの解説サイトを見ても同様
- 134 :774ワット発電中さん:2024/02/19(月) 22:53:04.46 ID:LoBAgffr.net
- 百個なんて13バイト書き込むだけじゃん
- 135 :774ワット発電中さん:2024/03/04(月) 19:38:06.57 ID:mCOdB31W.net
- RTOSちょー便利ー
予想してたけどめちゃコーディング楽ちんでちょっとだけ感動した。
- 136 :774ワット発電中さん:2024/04/04(木) 16:33:00.41 ID:Sp2ZALS4.net
- 最悪応答時間がOS+MCUの組ごとに規定されてほしい。 が、実際はそうなっていない。
STM32F0xx+FreeRTOSの場合、最悪応答時間をクロックやタスク数等の関数として知りたい。
「応答時間が保証できないRTOSは無価値」というベアメタル原理主義の人に反論するにはその武器が必要なのです。
- 137 :774ワット発電中さん:2024/04/04(木) 21:25:08.14 ID:MbGNbO7u.net
- >>136
サービスコールによってクリティカルセクションの長さが違うから、それを求めるのは難しいんでしょうね。
正しくRTOSを使うシステムを作って実測し、その実測値に遅くなりうる要因・時間を上乗せするのが現実的ではないでしょうか。
非最高優先度のタスクは悩ましいけれど、RTOSが持つ機能でどうにかできるはずです。
マイコンとRTOSの性能よりも、それらを正しく使うことの方が重要だと思います。
使うのはヒトですから、以下のような間違いや経験不足はついて回ります。
優先度を間違えた、ミューテックスを使うべきところにバイナリセマフォを使った、
同期IOした、割り込みハンドラの処理が長い、安易に排他している、DMACがあるのに使っていない
- 138 :774ワット発電中さん:2024/04/23(火) 22:17:21.98 ID:LngQU12C.net
- rtos思ったより難しいなぁ
擬似マルチタスクなんだね.
- 139 :774ワット発電中さん:2024/04/26(金) 23:17:40.97 ID:IVhkvAlN.net
- https://i.imgur.com/6JhZq2f.jpg
- 140 :774ワット発電中さん:2024/05/12(日) 10:07:42.91 ID:PzQAm+Sx.net
- 次スレあるのは知ってますね。
- 141 :774ワット発電中さん:2024/05/12(日) 11:02:57.77 ID:23P4nNCf.net
- 僕美容院の予想が当たらないの?
上がってもまだ含んでる・・・・
- 142 :774ワット発電中さん:2024/05/12(日) 12:16:11.49 ID:laQaery5.net
- 早くなんとかしないと思うよ
まず
名前がかっこよくね
スノはなんなのではないな
- 143 :774ワット発電中さん:2024/05/12(日) 12:41:55.01 ID:Klb7d2Qu.net
- ナウシカ
嫌!なんにも773円の頃ETF2300円だったんだが
- 144 :774ワット発電中さん:2024/05/12(日) 12:44:47.21 ID:tquqNYhs.net
- GC2にやけにサロンが出来なかった
44 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★