特定の順序でいくつかの操作を実行する特定のタスク ルーチンがあり、これらの操作はいくつかの揮発性変数を処理します。これらの揮発性変数を非同期的に更新する特定の割り込みがあります。したがって、このような割り込みが発生した場合、タスク ルーチンは再起動する必要があります。通常、FreeRTOS はタスクを再開しますが、これにより誤った派生値が生成されるため、ルーチンを再起動する必要があります。また、割り込みを逃してはならないため、クリティカル セクションの下にタスク ルーチンを保持することもできません。
これを達成できる FreeRTOS の方法はありますか? vtaskRestart API のように。タスクを削除して再作成することもできましたが、これによりメモリ管理が複雑になるため、避けたいと考えています。現在、私の唯一のオプションは、フラグのルーチンにチェックを追加して、コンテキスト スイッチが発生したかどうかを確認し、発生した場合は再起動し、そうでない場合は続行することです。
グーグルはこれに関する手がかりを見つけられませんでした。人々はそのような問題に直面したことがないように思われるか、この設計が貧弱である可能性があります. FreeRTOS フォーラムでは、タスクの再起動を求めた人はほとんどいなかったようです。フリート+タスク+再起動でstackOverflowの結果が出ませんでした。したがって、これはこのタグの組み合わせを使用した最初の投稿になる可能性があります ;)
これが FreeRTOS で直接可能かどうか教えてください。