問題タブ [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.
microcontroller - Atmega32 で実行する Windows XP 上に構築された FreeRTOS
私は FreeRTOS をダウンロードし、このように PCB 上のマイクロコントローラー ( ATMega32 ) に配置したいと考えています (最初はブレッドボードで行います) 。どうすればこれを達成できますか?
ありがとう
ubuntu - x86用のFreeRTOSの構築
私はオンラインで、外部デバイス用にWindows上でFreeRTOSを構築することが可能であると読みました。ubuntuでx86用にビルドできますか?
ありがとう
operating-system - FreeRTOS コンテキスト切り替え中に MSP430 CRC レジスタを保存できますか?
MSP430F5418 と FreeRTOS 7 をミディアム データ モデルで使用しています。
FreeRTOS コンテキスト スイッチで MSP CRC レジスタを保存したいと考えています。porttext.s43 を次のように編集しました。
セーブ コンテキスト マクロで、15 個のレジスタをスタックにプッシュした後、CRC レジスタをプッシュします。(CRCDI は保存する MSP レジスタです)
復元コンテキスト マクロでは、15 個のレジスタをポップする直前に CRC をポップしました。
機能しているはずですが、そうではありません。プログラム制御は場所を認識しません。
誰にもアイデアはありますか?
c - C でタスク制御ブロック スタックを初期化する方法
特定のタスクの初期プログラム カウンターをタスク自身のスタックに入れたい。これは、スタック コンテキストを復元してタスクの実行を開始できるようにするためです。
誰かが良いリソースを持っているか、Cでこれを行う方法を知っていますか?
これまでのところ、特定のタスクのスタックを malloc しました。
アセンブリで見つけた例を次に示します。
下位バイトが最初に TASK2 のスタックにプッシュされ、その後に上位バイトがプッシュされます。
c - 別のスレッドの va_list を使用する
小さな組み込みシステムで FreeRTOS (newlib) を使用していますが、printf とファミリが大量のスタック スペースを浪費していることに気付きました。多くのタスクがあり、それぞれのスタックを printf() 呼び出しをサポートするのに十分な大きさにするのに十分な RAM がありません。これを回避するために、大きなスタックを持ち、他のタスクに代わってすべての printf() を実行する「printf サーバー」タスクの作成に取り組んでいます。
だから私の質問は、va_list を他のスレッド (タスク) に転送する適切な方法は何ですか? 以下の例では、ガベージ パラメータが生成されます。
これがどのように機能するかについての簡単な言葉: task_printf() は、そのパラメーターを静的変数にプロットし、server_task に実際の印刷を実行するように通知します。server_task が完了すると、クライアントに続行するように通知します。
c - 宣言されていない可変クロスCリンカーまたはコンパイラ
独自のMakefileとリンカーファイルを使用してfreeRTOSを実行しようとしています。問題は、3つのファイルでプロジェクトをコンパイルしようとしているときです。
task.c-問題のある行:
ファイル内のマクロportALT_GEN_RUN_TIME_COUNTER_VALUE()
FreeRTOSConfig.h
そして最後に、私がコンパイルしようとしている私のmain.c魔女:
エラー前のコンパイラーの処置:
私の意見では、変数ulTIM6_OverflowCountはグローバルであり、ファイルtask.cに表示されます。これはfreeRTOSプロジェクトの例であり、ほとんどすべてのコードを削除しましたが、IAR専用であり、makefileはありません。ファイルをCortexM3の優れたチュートリアルから取得し、すべてのINCおよびSRCディレクトリを追加するオプションがあり、リンカーもこのプロジェクトから取得します。私の質問は、エラーを検索する必要がある場所です:リンカーで?コンパイラ?またはプロジェクトで?(chibiOSプロジェクトからの)別のリンカーを使用すると、エラーは発生しませんが、破損したelfファイルを取得しました。リンカがmain.cフィールドを認識しなかった可能性はありますか?または、いくつかのファイルを含めるのを忘れましたか?私はこの問題のデバッグに一日中費やしましたが、今はいくつかの新しいアイデアまたはプロンプトが必要です。
どうもありがとう。
c - FreeRTOS の使用中にコードの移植性を維持するにはどうすればよいですか
アプリケーションで FreeRTOS をどのように使用すればよいか悩んでいます。簡単なシナリオを提案させてください。メインと、ハードウェア固有のコードを持つモジュールがあるとします。このコードは、システムまたはセンサー内の特定のモーターを制御するためのものです...定義された役割を持つハードウェアのビット。module.c 内に という関数がありますModuleNameTask
。main
を使用してタスクを作成し、xTaskCreate
を渡しModuleNameTask
ます。myModuleNameTask
は main.c ではなく module.c で定義されているため、 のような関数を使用するには、module.c 内に FreeRTOS のビットを含める必要がありますvTaskDelay
。私はこれらのファイルを module.c 内に含めているという事実が好きではありません。移植性がなくなったと感じているからです。
それで、これをどのように処理しますか?それをmodule.cから削除しModuleNameTask
て、main.cに配置する必要がありますか? または、FreeRTOS のビットを module.c に含めなければならないという事実を受け入れるだけです。何かアドバイス?
c++ - FreeRTOS を GCC でコンパイルし、アプリ コードを G++ でコンパイルする
Cortex M4F を搭載した Stellaris Launchpad ボードを持っています。ボード上で FreeRTOS を独自の C++ コードで使用したいと考えています。ただし、FreeRTOS は C で記述されているため、G++ ではコンパイルできません。私はもう試した。
gcc
FreeRTOS を でコンパイルし、次にアプリケーション コードを でコンパイルg++
し、リンカーを使用してそれらをまとめる必要があることをどこかで読みました。これは理にかなっていますが、この動作を Makefile に入れる方法に本当に苦労しています。この Makefileを見つけて、さらに混乱しました。
現在、私は Stellaris のデモで FreeRTOS の例と共に配布されている Makefile を使用していますが、それは C コード用にのみ設定されています。この質問は、私が求めているものと同様のことを求めていますが、FreeRTOS を GCC でコンパイルし、残りのコードを G++ でコンパイルする方法について頭を悩ませることはできません。
FreeRTOS はコードをextern "C" { }
ディレクティブでラップしているようですが、FreeRTOS コードベースのコンパイル時に G++ を使用しようとしても失敗します。
SO に大量のコードを投稿するのは好きではありませんが、情報が多ければ多いほど良いと思います。Stellaris のデモには共通のmakedefs
ファイルがあります。
上記のファイルは、Makefile
それ自体に含まれています (以下)。
私のディレクトリ構造の一部は次のとおりです。
FreeRTOS を GCC でコンパイルしてから C++ プロジェクト コードにリンクする必要があると言うのが正しい場合、現在の Makefile を変更してそれを行うにはどうすればよいですか? 他のプロジェクトで再利用できるように、かなり汎用的なソリューションが必要ですが、C/C++ ビルド プロセスや Makefile についてはよく知らないため、この (長い) 質問をします。「私のためにこれをしてください」という質問をしているように聞こえたくない/意味がありませんが、GoogleやSOで検索しても、これを行う方法が本当にわかりません。
c - RTOSデータロガーの例
Cortex M0(LPC11U14)でデータロガーを開発しようとしていますが、FreeRTOSなどのリアルタイムOSを使用して、データをSDに書き込む優先度の低いタスクを1つ、またはそれ以上にすることを考えていました。 -センサーデータをフェッチする優先タイマー。
リファレンスデザインとして役立つコード例を知っている人はいますか?タスク/タイマーを作成する方法は知っていますが、タイマーから書き込みタスクにデータを渡す効率的な方法に興味があります。そして、コードベースとして機能する優れたデータロガープロジェクトがすでに存在する場合、私は車輪の再発明をためらっていますか?
c - FreeRTOS taskGetTickCount() をポーリングできませんか?
私は、a) FreeRTOS の taskGetTickCount() 関数が機能する方法を誤解しているか、b) 私たちの移植で何かが正しくないかのいずれかだと思います。
xTaskGetCount() の出力を表示しているデバッグがあります。vTaskDelayUntil() を実行するたびに、更新されて最新のように見えます。しかし、スピン待機を行って、それが増加するのを待っていると、決して増加しません。割り込みが発生したと思い、その値をインクリメントしました。しかし、私は現時点で 1 つのタスクしか実行していないので、再スケジュールをチェックせず、tickCount が更新されないのは賢明でしょうか? FreeRTOS のティック カウントがどのように機能するかを教えてくれる人なら誰でも、私は大いに感謝します。
編集:サンプルフラグメント:
これは、ティック = 1 ミリ秒のときに暗示された 25 ミリ秒をはるかに超えて、永遠にスピンします。出力には、同じ値が何度も何度もリストされます。ただし、ループの最後に vTaskDelay() を追加すると、正常に増加し、最終的にドロップアウトします。