問題タブ [rtos]
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.
c++ - constvoid*からfloat配列への変換
私はmbedプラットフォームにrtosライブラリを使用しています。スレッドにジャンプして、一定の速度で特定の値をインクリメントし、終了したらスレッドを閉じることができるようにしたいと思います。問題は、mbedRTOSライブラリからスレッドを実装するメソッドがconst void *
引数を取ることしかできないことです。これは、float値の配列を送信する必要があることを除いて、大したことではありません。これらの値の1つは、インクリメントする必要のある値へのポインター(*joint
)であり、他の値は、単純にconst
範囲と速度を制御するものです。インクリメント。私はそれを制御していると思い、適切にキャストするためのコードをここに見つけましたが、それでも0の値を考え続けています://float (*vals)[4] = (float (*)[4])args;
これがコードで、スレッド作業に関与する2つの関数だけに切り詰められています。
私を正しい方向に向ける何かを前もってありがとう!
operating-system - PIC マイクロコントローラ オペレーティング システム
組み込みのブートローダーとユーザーが作成したカーネルを使用して、PIC マイクロコントローラー用のオペレーティング システムを作成できると聞きました。また、RTOS でなければならないと聞きました。
- これは本当ですか?実際に PIC 用のオペレーティング システム カーネル (C/C++ を使用) を作成できますか?
- 1に「はい」の場合、これの例はありますか?
- 1 に「はい」の場合、カーネルを作成するために何らかの種類のソフトウェアが必要ですか?
- PIC マイクロコントローラを製造しているのは Microchip 社だけですか?
- PIC マイクロコントローラは Mac でプログラムできますか?
ありがとう!
c - Micrium の uC/OS-III RTOS における Malloc
Micrium の uC/OS-III RTOS を使用しています。RTOS で malloc の戻り値を取得しようとしています。RTOS が開始される前に 99999 の malloc を実行すると (RAM に対して多すぎる)、null ポインターが返されます。これは想定どおりです。
RTOS の開始時およびタスク内でこれと同じ malloc を実行すると、予期しない null ポインターが返されません。ただし、この時点でシステムはフリーズします。
誰もこれについて説明がありますか?
前もって感謝します
編集:
情報については、ルネサスの RX62N マイクロコントローラーと GNURX コンパイラーを使用しています。
プログラムは実際にはフリーズしません。プログラムは、(NULL ポインターではなく) 有用なポインターを取得したと「考え」、実行を続けます。ある時点で、プログラムはそのプログラム カウンターを 00000000 に変更して停止します。そのため、例外に入らないため、キャッチできません。
ただし、RTOS が起動する前にmallocが呼び出される場合と、RTOS が起動される場合とでは、何かが異なります。違いは、 mallocの非常に深いアセンブリ コードにあります。
ある時点で、次の命令が実行されます
あまりにも多くの RAM を割り当てようとしている場合、BGTU.B命令は分岐せず、プログラムはADD命令を続行します。これは、RTOS を開始する前にmallocを実行すると完全に機能し、後で実行すると失敗します。
全体の状況が明確であることを願っています。できる限り説明しようとしました:P
前もって感謝します
c - 優先順位の逆転がどのように発生するのか理解できません
HPT->最も優先度の高いタスク。
MPT->中優先度タスク
LPT->低優先度タスク
こんにちは友人、私は多くのウェブサイトから優先順位の逆転を読みました(例えばhttp://www.embeddedheaven.com/priority-inversion-2.htm)。しかし、なぜHPTがLPTをプリエンプトできないのか知りたいのですが。セクション3.3UnboundedInversionを読むと、LPTがリソースを取得したかどうか、同時にHPTの準備ができているが、LPTのためにブロックされているかどうかがわかります。ただし、MPTの準備ができている場合は、LPTをプリエンプトし、それ自体を実行します。次に、LPTはMPTが終了するまで待機する必要があります。MPTが終了すると、LPTが再開されます。そして、LPTが終了すると、HPTが開始します。だから私の質問は、なぜHPTがLPTまたはMPTをプリエンプトできないのですか?
c - Micriμm μC/OS-III RTOS の割り当てと解放
RenesasのRX62NでMicriumのμC/OS-III RTOSを使用しています。
データを動的に割り当てて解放する必要があるシステムを構築しました。関数malloc()およびfree()が RTOS でうまく機能しないことがわかりました。ただし、RTOS にはこのためのカスタム関数があります。Mem_HeapAlloc ()関数。この関数は、RTOS で作成された'heap' の一部のメモリを割り当てます。問題は、おそらくすべてがヒーププールに入るために、無料の機能がないことです。
RTOSではプールを作ることも可能です。このプールの問題は、含まれているすべてのブロックが同じサイズである必要があることです。さまざまなサイズを割り当てて解放しているため、これは良い解決策ではありません。
メモリ RTOS 機能について説明しているドキュメントを見つけました。ここでは、 第 4 章で機能について説明しています。
この問題を解決する方法を知っている人はいますか?
私たちがすでに持っていたいくつかの解決策
- すべてのブロック サイズを最大の割り当てと同じにします。 最小割り当てと最大割り当てが大きく異なるため、多くのオーバーヘッドがあります。
- フリーはしないでください。 これは解決策ではありません。メモリ リークが発生します。
誰かが私たちを助けてくれることを願っています。何か不明な点があれば、私に聞いてください
前もって感謝します
c - タイプ定義されていない構造体への型キャスト
基本的に、RTOSの別のスレッドからデータを取得しています。このデータはボード上のピンです。すべてのIOポートは、iodefine.hファイルの構造体/ユニオンにあります。たとえば、Micriumがどのようにそれを作ったかについてはこれを参照してください:
あなたが私に尋ねれば非常に賢い方法。したがって、このピンをPortandPinと呼ばれる構造体の2文字として保存します。
このようにピンを使用したいと思います:
ステッピングモーターは構造体です。この方法でのみ、次のようなエラーが発生します
構造体または共用体ではないものでのメンバー「DR」の要求
新しい変数を作成せずに、ステッピングモーター-> PulsePort-> DR.BYTEを使用するにはどうすればよいですか?誰かが私を助けてくれることを願っています!
c - LWIP + RTOS-netconnがスレッドを永久にブロックしないようにする方法は?
LwIPまたは関数が呼び出されると、RTOSを使用している場合、スレッドをブロックし、タイムアウトになるまで、または永久に接続を待機します。これは、の設定によって異なります 。タイムアウト期間はに等しくなります。netconn_accept()
netconn_recv()
LWIP_SO_RCVTIME0
SYS_ARCH_TIMEOUT
コアではLwIPスタックの一部を含む0xffffffffSYS_ARCH_TIMEOUT
として定義されているため、変更されることはないと思います。
実際、接続が確立されているかどうかを確認したいのですが、そうでない場合はスレッドを続行します。ただし、を呼び出すと、スレッドがブロックされ、そこで永久に(または非常に長い時間)待機します...さまざまな状況でさまざまなタイムアウトが必要になるためnetconn_accept()
、の定義値を変更したくありません...SYS_ARCH_TIMEOUT
それを行うための良い方法は何ですか?ありがとう。
linux - LinuxベースのアプリケーションをuC/OS-IIプラットフォームに移植する
Linux以外のプラットフォームであるuC/OS-IIRTOSにHiawathaWebサーバーを実装することを計画しています。
Linuxに依存するAPIをRTOSプラットフォームに移植するための支援が必要です。
LinuxをRTOSに移植するために使用できるビルドライブラリがすでにある場合は、教えてください。
前もって感謝します
c - プリエンプションが優先順位の逆転を解決しないのはなぜですか?
プリエンプションが優先順位の逆転の問題を解決しない理由を知りたいですか?
プリエンプティブ カーネルがある場合。では、なぜ優先順位の逆転問題が解決しないのでしょうか?
operating-system - OSはコンテキストスイッチングをどのように処理しますか?
私が理解できるように、すべてのOSには、いくつかのタスクを実行し、他のタスクを一時停止する必要があるかどうかを定期的にチェックするためのメカニズムが必要です。
1つの方法は、ある種のタイマーであり、その有効期限が切れると、OSはタスクを実行/一時停止する必要があるかどうかをチェックします。
一般的に、おそらくある種のISRであるARMシステムについて言います。
私の本当の質問は、これを視覚化することしかできず、どこかでそれを見ることができなかったということです。プリエンプション/スケジューリングを処理するコードを実際に見ることができる、無料/オープンのRTOSコードを指すことができますか?