問題タブ [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.

0 投票する
1 に答える
10259 参照

c - FreeRTOS configTICK_RATE_HZ

FreeRTOSのバージョン5.4でMSP430f5438を使用しています。

私は理解できない面白い問題を抱えています。

基本的に、configTICK_RATE_HZを別の値に設定すると、LEDの点滅が速くなったり遅くなったりします。同じレートを維持する必要があります。configTICK_RATE_HZを高く設定すると点滅が遅くなり、TICK_RATEを低く設定すると点滅が速くなります。

vTaskDelayUntil(&xLastFlashTime、xFlashRate); configTICK_RATE_HZが何であっても、LEDは1秒に1回だけ点滅するようになっています。xFlashRateをステップスルーしてチェックし、確認しました。その常に=configTICK_RATE_HZに。コード:

configtick_rate_hzを1000に設定すると、1秒を超える周期でLEDが点滅し、ティックレートを200未満に設定すると、1秒よりはるかに短い周期でLEDが点滅します。

configTICK_RATE_HZは、LEDの点滅時間に影響を与えないようにする必要があります。

より多くの情報が必要であり、役立つために必要なコードスニペットをすぐに提供できることを理解しています。

0 投票する
4 に答える
5175 参照

embedded - 利用可能なFreeRTOSインタプリタ言語ライブラリはありますか?

私はFreeRTOSを使用していくつかのデバイスのファームウェアを作成した会社で働いています。最近、私たちの新機能の要求は、ファームウェアエンジニアができる仕事の量を超えていますが、今のところ、新しい人を雇う余裕はありません。小さな変更を加える場合でも、ファームウェア担当者は非常に低いレベルで変更を加える必要があります。

私は、FreeRTOS用のある種のインタプリタ言語プロジェクトを探していました。これにより、より高いレベルで新しい機能を実装できるようになります。理想的には、すべての機能を自分で実装するのではなく、デバイスを一般的なコンピューターに近づけてドライバーを作成できるようにしたいと考えています。

Java、Python、または同様のバイトコードを解釈するFreeRTOSプロジェクトはありますか?

私はグーグルを見てきましたが、私自身はファームウェアエンジニアではないので、正しいキーワードを探しているかどうかわかりません。

みんな、ありがとう

0 投票する
1 に答える
1762 参照

c - スケジューラーの開始前 (または停止後) の IO の FreeRTOS キュー

オペレーティング システムのスケジューラがまだ開始されていない、実行されている、一時停止されている、または停止している可能性がある環境で、スレッド セーフな IO (デバッグ シリアル ポートに接続する printf など) を最適に実装する方法についてのアドバイスを探しています。墜落した。Newlib と FreeRTOS を使用しています。

現時点では、_write システム コール (Newlib) キュー文字を FreeRTOSキューに入れる (一見標準的な) FreeRTOS アプローチを行っています。FreeRTOS キューは、割り込みサービス ルーチンから空にされます (シリアル ポート ハードウェア FIFO をいっぱいにしてから、 FIFO エンプティ割り込み)。

これには、(少なくとも FreeRTOS では) スケジューラが実行されているときにのみキューを安全に使用でき、割り込みが無効になっているとデバッグ出力を出力できないという欠点があります (スケジューラが起動するまでのブート中、または致命的なエラーの後)。エラー状態 (正確に debug printf 出力が最も役立つ場所:-)。

_write システム コールでスケジューラおよび/または割り込みステータスをクエリし、スケジューラが実行されている場合はキューを使用し、割り込みが無効になっている場合はシリアル IO のブロッキング/ポーリングを使用するのが最善でしょうか? 私がまだ考えていないよりエレガントなアイデアはありますか?

ありがとう

0 投票する
3 に答える
1903 参照

msp430 - CCE を使用して MSP430 で FreeRTOS を取得するには?

Code Composer Essentials v3.1 を使用して、MSP430 プロセッサで FreeRTOS を実行したいと考えています。http://www.westmorelandengineering.com/toc.htmでこの例を見つけました。具体的には、一番上の FreeRTOS_Demo.zip を使用しています。CCE で開こうとすると、ワークスペースが「このバージョンの Code Composer では作成されていません」というエラーが表示されます。そのため、プロジェクトをインポートしようとすると、「次のエラーが原因でマネージド Make プロジェクトを読み取れませんでした: プロジェクト タイプ com.ti.ccstudio.managedbuild.ui.programTargetID が見つかりません。マネージド Make 機能は利用できません」というエラーが表示されます。このプロジェクトのために。」

私の問題は何なのか、プロジェクトをビルドするにはどうすればよいのか、それとも別の方法で進める必要があるのか​​ 疑問に思っていますか?

0 投票する
2 に答える
4558 参照

sqlite - FOpen*を使用したSQLiteVFS実装ガイドライン

FOpen、FRead、FWrite、FSeek、およびFCloseを使用して、Netburner組み込みデバイス(Windows以外)用のカスタムVFS(仮想ファイルシステム)を実装しようとしています。利用可能なVFSのFOpen*バージョンが見つからなかったことに驚きました。これにより、組み込みデバイスへの移植性が大幅に向上します。

SQLite用のVFSの作成に関する情報はhttp://sqlite.org/c3ref/vfs.htmlで見つかりまし たが、情報は非常に詳細であり、実装について他にも多くの質問があります。

Win、OS2、LinuxのSQLiteソースコードにVFSの例がいくつかありますが、コメントは多くなく、ソースコードのみが含まれています。

上記のリンクと例で提供されている情報を使用してカスタムVFSを作成することはできますが、そのようにすると何かを見逃してしまうと確信しています。

私の質問は次のとおりです。

  • 私が見逃しているSQLiteVFSに関するドキュメントは他にありますか?多分実装ガイド?
  • 利用可能なSQLiteVFSのFopenバージョンはありますか?
  • カスタムSQLiteVFSを作成した後、それをテストするために使用できる単体テストコードはありますか?
  • 共有したい提案、コメント、SQLiteVFSの実装に関する経験。
0 投票する
3 に答える
2109 参照

gcc - FreeRTOS と OpenOCD を使用した GCC の構成

これが可能であると確信していますが、どうすればよいかわかりません。私は一般的に GCC を使用して構築するのは非常に初めてで、FreeRTOS を使用したことはありませんが、OS を起動して TI ARM Cortex MCU で実行してみたいと思っていますが、少しひねりがあります。 Pascal で起動して実行します。私は興味がある:

  • これでも就職できるのでしょうか?そうでない場合、次の問題は一種の論点です。
  • Delphi 時代から、C ライブラリの関数にアクセスする機能を漠然と思い出しました。FreeRTOS で C ルーチンにアクセスできるかどうか疑問に思っています。
  • GCC バージョン (推奨) を使用すると、ターゲットで OpenOCD を使用してデバッグできますか? デバッグ シンボルがどのように機能するのか、多かれ少なかれ言語に依存しないのかどうかはよくわかりません (この場合はうまくいけば)。
  • 元のクエリの範囲外のボーナス質問として、x86 プロセッサ (開発用 PC など) で FreeRTOS をシミュレートして、開発中のデバッグを容易にすることはできますか? (もちろん、Pascal プログラムで..)

これを達成するためのドキュメントが見つからないので、ここの誰かが光を当てることができることを願っています! どのリソースも最も役に立ちます。私が言ったように、私はこの種の開発に非常に慣れていません。より良い代替案があると思われる場合は、提案も受け付けています。

参考までに、私の好みのホスト構成は次のようなものです。

  • Linux (Ubuntu/Debian)
  • 開発、単体テスト、できればシミュレーション / デバッグ用の Eclipse IDE
  • ターゲットデバッグ用の OpenOCD
  • ターゲット上の GNU Pascal + FreeRTOS
0 投票する
2 に答える
2438 参照

c - 多対1のゲートキーパータスクの同期

ゲートキーパータスクを使用して共有リソースにアクセスする設計に取り組んでいます。私が今持っている基本的な設計は、ゲートキーパータスクが受信している単一のキューと、それに要求を入れる複数のタスクです。

これはメモリが制限されたシステムであり、FreeRTOS(Cortex M3ポート)を使用しています。

問題は次のとおりです。これらの要求を非同期的に処理するのはかなり簡単です。要求元のタスクは要求をキューに入れ、ビジネス、ポーリング、処理、または他のイベントの待機を行います。これらのリクエストを同期的に処理するには、リクエストが処理されると、ゲートキーパーがそのリクエストを呼び出したタスクをウェイクアップできるように、リクエストするタスクがブロックするメカニズムが必要です。

私が考えることができる最も簡単な設計は、各リクエストにセマフォを含めることですが、メモリの制限とFreeRTOSのセマフォのサイズがかなり大きいことを考えると、これは実用的ではありません。

私が思いついたのは、タスクの一時停止とタスクの再開機能を使用してタスクを手動でブロックし、要求が完了したときにタスクを再開できるゲートキーパーにハンドルを渡すことです。ただし、サスペンド/レジュームにはいくつかの問題があり、私はそれらを避けたいと思っています。1回の再開呼び出しは、他の呼び出しによって何度中断されてもタスクをウェイクアップし、これにより望ましくない動作が発生する可能性があります。

一時停止/再開方法を示すためのいくつかの単純な疑似C。

当面使用する予定の回避策は、非同期呼び出しを使用し、各要求タスクに完全にブロッキングを実装することです。ゲートキーパーは、操作が完了すると、提供されたコールバックを実行します。その後、タスクのメインキューや特定のセマフォ、または必要なものにポストできます。リクエストのブロック呼び出しを行うことは本質的に便利な機能であるため、各リクエストタスクはこれを実装する必要はありません。

タスク固有のブロッキングを示すための疑似Cですが、これは各タスクに実装する必要があります。

おそらく最善の解決策は、ゲートキーパーとAPIにブロッキングを実装せず、各タスクにそれを処理させることです。ただし、これにより各タスクのフローが複雑になり、回避できると期待していました。ほとんどの場合、すべての呼び出しは、操作が終了するまでブロックする必要があります。

私が見逃しているいくつかの構造、または私がグーグルできるこのタイプの問題のより良い用語はありますか?私の検索では、このようなものは見つかりませんでした。

追記-ゲートキーパータスクの2つの理由:

  1. 大きなスタックスペースが必要です。この要件を各タスクに追加するのではなく、ゲートキーパーは、必要なすべてのメモリを備えた単一のスタックを持つことができます。

  2. リソースはCPUで常にアクセスできるとは限りません。CPU内のタスクだけでなく、CPU外のタスクも同期しています。

0 投票する
5 に答える
5561 参照

linux - freeRTOSと並列処理

これは簡単な質問です。freeRTOSは、「実際の」Linuxシステムと同じように、複数のプロセスで複数のスレッドを処理しますか?

0 投票する
8 に答える
12199 参照

c - 組み込みシステム用の小さな libc

ARM7 マイクロコントローラーの freertos と組み合わせて使用​​するための小さな libc を探しています。私は newlib を見てきましたが、私のニーズには少し複雑すぎます。Newlib はいくつかの関数 (printf() など) で malloc() を呼び出しますが、これは小さな組み込みリアルタイム システムには適していません。

私のアプリケーションに適合する、小型でポータブルなオープンソースの libc 実装を知っている人はいますか?

0 投票する
5 に答える
12900 参照

c - FreeRTOS タスクはコンテキスト切り替えではありません

PIC32MX スターター キットで PIC32 マイクロコントローラー用の FreeRTOS ポートを使用しています。タスクで遊んでいましたが、タスクはコンテキスト切り替えではありません。ここに私の主な構成設定があります:

これで、2 つの LED を点滅させる 2 つのタスクが定義されました。両方の優先度は 4 (最高) です。通常の操作では、LED は 100 ティックごとに交互に点滅します。しかし、これは起こりません。2 番目の LED が 100 ティック点滅し、制御が一般的な例外ハンドラに移ります。なぜこれが起こるのですか?予定は全くないようです。