問題タブ [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.
c++ - FreeRTOS の Arduino MEGA 2560 Rev3 (ATmega2560) への移植
現在、Arduino プラットフォームにFreeRTOSベースのプログラムを実装しています。
このプロジェクトにArduino MEGA 2560 Rev3 (ATmega2560 ベース)を使用したいのですが、動作するport.cファイルが見つかりませんでした。
誰かが作業中の port.c を共有してもらえますか?
Eclipse IDE、WinAVR、AVR Plugin、Arduino Lib、FreeRTOS 7.6.0 (最終的には v8.0.0 に切り替えます)、および C++ をメインのプログラミング言語として使用しています。
ありがとう。
編集:
ATmega2560 用の FreeRTOS スタティック ライブラリを生成するavrfreertosに出会いましたが、プロジェクトをそれにリンクすると、次のエラーが発生します。
編集:
リンクの問題の修正を見つけました
arm - 小型 ARM マイクロコントローラ用の RTOS カーネル間の定量化可能な違い
マイクロコントローラー用に利用できるさまざまな RTOS があります。特に、ARM Cortex M プロセッサをサポートする RTOS を探しています。また、クローズド ソース ソリューションには興味がありません。
Web サイトやメーリング リストから各 RTOS の相対的なメリットを比較しようとすると、ほとんどの場合同等の機能があり、同じことを行うように見えるため、かなり難しいように思えます。実際の違いは、それぞれの RTOS をいくつかのタスクに使用してみないと明らかになりません。
これはやや主観的な質問であり、おそらく答えるのが難しいことは承知していますが、実際にいくつかの異なる RTOS を試して、それぞれの相対的なメリットについて意見をまとめた人がたくさんいるはずです。
特に FreeRTOS、ChibiOS、Coocox CoOS に興味がありますが、他の選択肢も大歓迎です。
例: ChibiOS では、ISR は任意のシステム関数を呼び出すことができるように見えますが、これらの呼び出しはchSysLockFromIsr()
/でラップする必要がchSysUnlockFromIsr()
あり、コードはそれらのセクションでプリエンプトできません。CoOS では、呼び出し可能な関数は、、isr_
などで
始まる関数のみですが、これらの関数は内部でサービス リクエスト キューを使用するため、ほとんどのリクエストがプリエンプト可能です。isr_PostSem()
isr_PostMail()
isr_PostQueueMail()
isr_SetFlag()
c++ - 従来の組み込みアプリをリアルタイム アプリケーションに制限する方法に関するアドバイス
私は「レガシー」組み込みシステム アプリケーションを引き継いでいますが、完全にレガシーではありません。最初に懸念しているのは、開発中のある時点で、アプリの時間的制約が要件で失われてしまったことです。プロジェクトの。今は、それをリファクタリングして、意図したとおりにリアルタイムにすることが私の仕事です。
このプロジェクトは、C および C++ で ATMEL UC3 用に作成されています。FreeRTOS 上で実行され、6 つのタスクがあります。外部デバイスを管理するための 5 と、メイン プログラムとして優先度が最も低く、タスクが最も重い別のものがあります。私が最初に行ったのは、メイン タスクにかかる時間を測定することでした。ときどきデッド ラインから外れたのは当然のことでした。そのため、完全なタスクは数サイクルで実行されました。
この場合に取るべき主なポイントは何ですか?
あなたならどうしますか?すべての実行パスの流れをたどって命令を数え、次に最悪の実行パスを取り、チップの周波数でリアルタイム実行を行う必要があることを私は知っています。それは理論的には、少し簡単にするためのツール、トリック、または手順はありますか?
更新しました:
機密上の理由により、ソースを共有することはできません。さらに、私はさらに深く掘り下げてきましたが、主な遅延は明らかにキューのサイズによって生成されていることがわかりました。ほとんどのキューは、2 つまたは 3 つのメッセージを保持するために作成されます。ここでさらに情報を提供するには、いくつかのテストを行う必要があります。理論的には、キューがいっぱいになると、メッセージ用の空き領域が再びできるまで、残りのプロセスは送信できなくなります。その後、プロセスが中断され、連続して再スケジュールが行われます。私の考えは、キューのサイズを 10 に増やして、パフォーマンスとタイミングが改善されるかどうかを確認することです。
UPDATED 2 暗闇の中にいるときに非常に役立つ提案から始めて、「理解」というツールに出くわしました。これは無料ではありませんが、分析と文字を取得するのに役立ちます. また、複雑な関数の char フローも表示されるため、フローの実行の最長パスを確認できます。
avr - Arduino Uno (ATmega328p) と FreeRTOS を使用する Atmel AVR Studio 6
みなさん、こんにちは。
Atmel AVR Studio 6 で ATmega328p を使用する Arduino Uno を使用して、freeRTOS の使用を開始したいと考えています。
私はWindows 7で作業しています。
私はこのチュートリアルに入りました:
http://www.jayconsystems.com/tutorial/atmerpt1/
これは、ATmega328p で動作するように Atmel AVR Studio 6 をインストールして準備する方法を説明しています。
ステップ 5A で何をすべきかを理解できませんでした。これは、次のことを行うように指示しています。
[ツール] -> [外部ツール...] に移動して、次の設定で新しいツールを作成します。
タイトル: シリアルプログラム
コマンド: C:\arduino-1.0.1\hardware\tools\avr\bin\avrdude.exe
(arduino のインストール フォルダーと一致するように変更し、avrdude.exe を見つけます)
-CC:\arduino-1.0.1\hardware\tools\avr\etc\avrdude.conf -patmega328p -carduino -P\.\COM3 -b57600 -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName). hex":i // *
注: avrdude.exe がコンピューターの次の場所にインストールされています。
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe
だから私の質問は:
1) 行*で、 -CC は何を意味しますか? 引数または初期ディレクトリ ([外部ツール] ダイアログ ボックス内) 内にある必要がありますか?
2) 言及されているように、avrdude.conf へのパス (実際に私の場合) は X86 フォルダーを通過するため、そこに入力する必要がある行はどのようにする必要がありますか (二重引用符について言及されているため)?
3) これらの問題をすべて解決した後、AVR Studio 6 には freeRTOS を開始するための「単純な汎用テンプレート」プロジェクトがどのように/どこに/ありますか?
このチュートリアル (別のボードを使用しています) に出くわしました。別のボード (私の ATmega328p) を使用していますが、「従う」ことはできますか?
事前に感謝します。
男。
c - arm-none-eabi でのヘッダー ファイルのチェックなし
コマンド ウィンドウでエラーが発生しました。下記を参照してください!
Sourcery_2011_09_ARM_EABI を使用しています。しかし、このファイルにはヘッダー ファイル名 check.h がありません。
ファイル lwip_unittests.c で:
ファイル check.h が必要ですが、これはどこで入手できますか?
また、sourcery_2011_09_ARM_EABI ファイルに check.h が実装されている場合、動作しますか?
または、sourcery_2011_09_ARM_EABI に実装されている、check.h を tree-check.h または別の名前に変更する必要がありますか?