2017-02-26 8 views
0

私は組み込みソフトウェアのRTOSベースの設計の初心者です。ソフトウェアをタスクに分割する方法をいくつかお勧めします。親指のデザインルールは何ですか?私は多くの仕事をすることを恐れています。ソフトウェアの一部をタスクに分割しようとしましたが、同じ実行期間でいくつかのタスクがあることがわかりました。それは正しいのですか、同じ実行期間のタスクを共通のタスクに参加させる方が良いでしょうか?どんな提案も私にとって非常に貴重です。RTOSのタスク数

+0

最初にあまりにも文章がこの質問を広すぎる。私はそれらを取り除くか、言い直すことを避けるためにそれらを再言葉にします。それでもそれでも広すぎるかもしれません。 – Clifford

+0

https://en.wikipedia.org/wiki/Scheduling_%28computing%29 –

答えて

1

正解が1つもなく、一般的なガイドラインがすべての(または自分の)状況に当てはまるとは限りません。使用可能なすべてのユースケースをカバーするには、その件名に本を書くことが最善です。

それにもかかわらず、ここであなたが始めるためにちょうどいくつかのアイデアです:

各タスクは、メモリ(別々のスタック)を消費として、あなたは最小限にタスクの数を維持するために努力すべきです。 (全体の仕事はただ一つのタスクで可能であるならば - 。例えば、スーパーループ、マルチタスクのための必要はありません)

タスクにアプリケーションを打破するためには、小さい方の集まりと考えるが、ほとんど独立しアプリケーション。あなたの場合は可能ですか?そうでない場合は、マルチタスクがなければ問題ありません。

通常、ユーザーインターフェイスは、ユーザーの入力を収集し、結果/ステータスをデバイスのメイン処理よりもはるかに遅い速度で表示するジョブです。それを別のタスクとして持つことは、不必要な減速からメインタスクを軽減します。

実行期間はやや関係ありません。一方、実行期限は重要です。同じタスクに2つのジョブを順番に配置すると、ジョブが並行して実行された場合に逃してしまうことのない締め切りが失われるリスクがある場合は、それらを別々のタスクに分割します。

同じコードを複数回実行すると(たとえば、各シリアル通信ポートのユーザー端末など)、それぞれのインスタンスをそれぞれのタスクに分割することができます。

アプリをタスクに分割する方法が決定的な役割を果たしているだけではありません。明らかに、それが異なって行われることができなければ、あなたは選択肢がありません。しかし、あなたのハードウェアがあなた(例えば限られたRAM)を制限しないと仮定すれば、全体的な設計の簡素化、より良い応答性、コードの明瞭性などの理由から、必要以上に多くのタスクに分解することもできます。

+0

あなたの反応tonypdmtrありがとうございました。 – Steve