問題タブ [freertos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
real-time - ヒューマノイド ロボットに適した RTOS とは?
私たちは大学でスポンサー付きの研究プロジェクトとして中型 (高さ 4.5 フィート) の人型ロボットを開発している学生です。ロボットが実行できる必要がある主なタスクには、動き回る (前後左右)、走る、物を拾うなどがあります。ロボットを制御するために、ハードリアルタイム オペレーティング システムを使用することを検討しています。ただし、組み込みシステムやオペレーティング システムのバックグラウンドがほとんどなく、この分野には不慣れであり、さまざまなオプションが利用可能であるため、どれが適切な選択になるかわかりません。私たちは以下に遭遇しました(括弧内はそれらに対する私たちの現在の印象です):
- RTLinux (現在は死んでおり、カーネル 2.4.x、gcc 2.95 (ビルドが非常に難しい)、ドキュメントはほとんどまたはまったくありません)
- FreeRTOS (優れたコミュニティとドキュメント、人気があり、多くのアーキテクチャに移植されています)
- uc-OS II (小型、クリーンコア、軽量)
- RTAI (Linux ベース)
いくつか質問があります:
- このプロジェクトに適したオプションはどれですか? これは少し主観的に聞こえるかもしれませんが、アドバイスをいただければ幸いです。重要な情報が不足していると思われる場合は、その点を指摘してください。
- Linux カーネル用のCONFIG_PREEMPT_RT パッチと呼ばれるものに出くわしました。これはカーネルにハード リアルタイム機能を付与します。Debian ベースのディストリビューションで利用できる、このパッチが適用されたコンパイル済みのカーネルもあります。それだけで私たちの要件を満たすことができますか?
- オペレーティング システム全般についての知識はほとんどありません。まずそれらについて学ぶ必要がありますか。「はい」の場合、このテーマの短い入門書として適切なものは何ですか?
更新:信じられないほど詳細な回答をありがとうございます。これが間違った方法であることは明らかです。知識や漠然とした要件なしで飛び込むことは、確かに悪いことです. 座って、必要なものを正確にチョークアウトする必要があります。それが十分に進んだら、適切な OS を見つけようとします。それがどのように機能するか見てみましょう。MicroC OS II: The Real Time Kernel の第 2 章も読むつもりです。
semaphore - FreeRTOS の過剰なスタック オーバーフロー
FreeRTOS を使用して ATMega323_WinAVR にプロデューサー/コンシューマー アルゴリズムを実装しようとしています。デバッグ時に AVR Studio 4 で次のエラーが発生します。
AVR Simulator: Excessive stack overflow, stop sim
スタック ポインターは次の行で停止します。
このエラーが表示されるのはなぜですか?
ありがとう!
c - PIC32、フリー RTOS クロック (ミリ秒)
RTOS を実行している PIC32MX460F512L があり、コード内の 2 つのポイント間のミリ秒の差を取得する方法を探しています。
以下のコードはティック時間を取得しますが、ミリ秒単位の時間は取得しません。
私の質問は
無料の RTOSで、現在の相対時間をミリ秒単位で取得する方法はありますか?
embedded - blackfin bf561 FreeRTOSの実装は、タスクのロード時に実行時に失敗します
私はコードからBlackfinBF561coreBFreeRTOSに実装しました:
http://www.freertos.org/index.html?http://interactive.freertos.org/forums/79366-analog-devices
gccを使用してelf実行可能ファイルとしてベアメタルに変換しました。
私は近くにいますが、理解できないランタイムエラーがあります。スケジューラーが開始して最初のタスクをトリガーしようとすると、メモリーポインターが失われ、最初のスタックは開始されません。代わりに、最初のタスク内で関数を開始し、関数を終了すると失われます。
これは対応するデバッグログです。
これは私がアナログデバイスフォーラムで始めた議論です:
embedded - MSP430F5418でのRTC割り込みの問題
IAREW5.10でMSP430F5418を使用しています。
私のプロジェクトでは、オペレーティングシステムとしてFreeRTOS7.0を使用しています。
シーンリオを考えてみましょう。
- 1分間の割り込みでRTCをアラームモードに設定します。
- 2つのタスクを作成します。
- 1分間の割り込みが到着したら、タスク1でタスク2に要求を送信します。
- 4つのメッセージを含むタスク1へのタスク2の応答。
- メッセージを受信している間、タスク1は0x7FFF回ループする単純な関数を呼び出します。
ここでは、4回目のリクエスト後、1分経過しなくてもすぐにRTC割り込みが発生します。
TIが提供する回避策コードをRTC操作に使用しています。
誰かがこの予期しない動作が発生する理由を教えてもらえますか?
ありがとうございました、
ハリ
stack-overflow - FreeRTOS で ISR からセマフォを提供した後にスタック オーバーフローが発生する
xSemaphoreGiveFromISR
FreeRTOS の関数と付随するportEND_SWITCHING_ISR
マクロを使用して、I2C トランザクションの終了を処理する割り込み内からセマフォを提供しようとしています。
そのたびに、プログラムのアプリケーション スタック オーバーフロー フック関数に行き着きます。動作中のバージョンからの唯一の変更点は、この行を ISR に追加したことです。スタックのサイズを 2 倍にしましたが、8192
役に立ち16384
ませんでした。
落とし穴が私に何をもたらしているかについて考えている人はいますか?
私のconfigCHECK_FOR_STACK_OVERFLOW
価値は1です。
java - FreeRTOS で Java を使用していますか?
FreeRTOS で Java を使用できますか?
もしそうなら、私が始めるのに役立つ良い URL はありますか?
どのような問題が発生する可能性がありますか?
c - 構造体データを指している場合の bf561 COREB FreeRTOS 実装でのランタイム エラー
通常、関数にパラメーターとして渡される構造データにアクセスしようとすると、いくつかの関数で実行時エラーが発生します。
問題の最初の例は次のとおりです。
ここで、pxQueue は構造体です。
と:
ここで、pxQueue は構造体です。
と:
実行時エラーは次のとおりです。
同様に、次の関数にも同じ問題があります。
pxItemToRemove->pxPrevious は読み取れますが、pxItemToRemove->pxNext->pxPrevious は読み取れません
その構造は次のとおりです。
実行時エラーは次のとおりです。
前もって感謝します。
ウィリアム
gdb を使用してさらにデバッグすると、pxQueue があります。
本当に奇妙です。構造体のすべてのパラメーターが同じ値を持っています: 0xadadadad
さらにデバッグして、セマフォの作成をキュー作成関数のキュー オブジェクトとして見ると、通常の値が得られます。
ありがとう、
ウィリアム
list - FreeRTOS が vListInsert 関数のセマフォの for ループに無限に留まる
FreeRTOS の vListInsert の for ループでコードがスタックする理由を理解しようとしています。gcc ツールチェーン コンパイラを使用して bfin561 coreb 用の FreeRTOS を実装しています。
ここに私が持っている手がかりがあります:
この方法でセマフォを初期化します。
次に、タスク関数で:
上記のコードでは、2 番目の while( xSemaphoreTake( sem, portMAX_DELAY ) != pdTRUE ); で問題が発生します。ライン。
コードをデバッグすると、次のことに行き詰まりました。
freeRTOS から:
私が持っているデバッグメッセージの出力:
このforループにとどまります。
freeRTOS をよく知っている人なら、何が起こるか教えてくれますか? クラッシュする特定の理由について、FreeRTOS コードの for ループ関数の上にいくつかのコメントがありますが、そうではないようです。
ありがとう、
ウィリアム
network-programming - LwIP - netconn API - プロセスがブロックされている間に TCP パケットを送信しますか?
FreeRTOS + LwIPを使用して、イーサネット ベースのベッドサイド ナース コール デバイスを開発しています。いくつかの例とドキュメントを読んだ後、LwIP のnetconn APIを使用して TCP でデータを送受信したいと考えています。なぜなら、私は BSD スタイルの API に慣れておらず、生の API は難しいかもしれないからです。
netconn_accept()
リモートホストからの接続要求が到着するまでプロセスをブロックするnetconn_recv()
機能と、データが到着するのを待っている間もプロセスをブロックする機能は知っています...これらの機能は両方ともプロセスをブロックします。サーバーに適していますただし、データを受信するには、患者がボタンを押したときにナースセンターへの「呼び出し」をトリガーする必要があるクライアントとしても機能する必要があります。では、リモート ホストからの接続を待機している (プロセスをブロックしている) 間に、TCP パケットの送信を開始するにはどうすればよいでしょうか?
SIP (Session Initiation Protocol) を使用して通話を開始する必要があるため、TCP を送信する必要があります。これは医療機器であるため、信頼できるはずです。どうもありがとうございました
@Kyle Heironimus 、@werewindle 私はあなたが LwIP の経験を持っていることを知っているので、あなたを私の質問に追加します。