マルチタスクRTOSを実行したいAT90USB162AVRチップを持っているので、AVRチップで使用できるRTOSを評価しています。どのマルチタスクRTOSがAVRでサポートされていますか?多分QNX?(AVRマイクロチップ上でQNXカーネルを実行することは可能ですか?)
前もって感謝します。
AtmelAT90USB162は8ビットAVRRISCベースのマイクロコントローラーです-QNXはストレッチであり、AVRはBSPディレクトリにありません
MicriumはuC/OS-IIでAVRをサポートします
FreeRTOSはAVRもサポートしています
「RTOS」とは、先制的なマルチタスクという意味だと思いますか?(これは8ビットAVRなので)ファイルシステムやネットワークスタックなどは必要ないと思いますか?
小さな先制的なマルチタスクカーネルを探しているなら、Quantumプラットフォームをチェックしたいかもしれません-私はAVRやMSP430のような非常にリソースに制約のあるプラットフォームでそれを使用しました。同僚は、8ビット8051およびHC11バリアントでも使用しています。
QPのプリエンプティブカーネル(QK)は、実行から完了までのカーネルであり、スタック(RAM)の要件を減らし、コンテキストの切り替えにリソースをあまり消費しません(TCBがなく、保存と復元のコンテキストが少なくなります)。
「小さい」QP/Cバリアントと、「小さい」QP-nanoバリアントがあります。これらの用語は数字がないとまったく意味がないため、QP-nanoページにはカーネルタイプとその一般的なサイズの比較があります。例(最小値が提供されています):一般的なRTOS、10K ROM、10K RAM; QP / C-8K ROM、1K RAM; QP-nano-2K ROM、100バイトのRAM。
良い点は、すべてのコードが利用可能であるため、ダウンロードして試して、自分で確認できることです。
QNX - チャンスではありません! QNX は、MMU を備えた 32 ビット デバイス用の比較的大規模で洗練された OS であり、カーネル レベルのスケジューリングだけでなく、ファイル システム、フォールト トレラント ネットワーク、POSIX API、GUI なども提供します。その最も重要な機能は、メモリ保護のサポートです。各スレッドが実行されます。独自の仮想メモリ セグメント内にあるため、適切なハードウェア サポートを備えたデバイスでのみ実行されます。
OS に求める機能は何ですか? 8 ビット デバイスでは、基本的な優先順位に基づいたプリエンプティブ スケジューリングと IPC を期待するのが妥当です。ネットワーク、ファイルシステム、USB などの他のサービスは、通常、RTOS ベンダーからのアドオンであるか、サードパーティ コードから自分で統合する必要があります。
お金をかけたくない場合の明らかな選択肢は FreeRTOS です。APIレベルではかなり慣習的であっても、アーキテクチャ的にはいくつかの点で型にはまらないものの、それは有能です. ARM での私のテストでは、テストした他のカーネルと比較してコンテキスト スイッチ時間が遅かったのですが、AVR ではそうではない可能性があり、リアルタイムの応答時間が必要な場合にのみ問題になります。数マイクロ秒。AVR にはかなり大きなレジスタ セットがあるため、コンテキスト スイッチは通常、いずれの場合もコストがかかります。
Atmel はhttp://www.atmel.com/products/AVR/thirdparty.asp#で RTOS を含むサードパーティ サポートのリストを持っています。彼らは以下をリストします:
CMX-Tiny+ (dsPIC 上)、embOS (ARM 上)、FreeRTOS (ARM 上)、および uC/OS-II の個人的な経験があります。それらはすべて有能であり、uC-OS-II には、各優先度レベルで 1 つのタスクのみを許可するという小さな制限があります (ラウンドロビン スケジューリングはありません)。私が所有している embOS の場合、サードパーティのファイル システムと USB コードの統合に成功しましたが、ベンダーにはこれらの独自のアドオンもあります。