mcpField
F
freertos-patterns

freertos-patterns

github.com/wedsamuel1230開発2995 回インストール3 週間前に更新
リポジトリ

freertos-patterns について

ESP32 と RP2040 の FreeRTOS 並行処理を設計するためのリファレンススキルです。タスク、通信、同期、メモリ、応用機能のガイダンスを示し、プラットフォームごとの違いを明確にします。

主な機能

  1. 01タスクのライフサイクル、優先度、スタックサイズ
  2. 02タスク間キューと通信
  3. 03ミューテックス、セマフォ、ISR 同期
  4. 04ヒープ、スタック、実行時の監視
  5. 05ウォッチドッグ、通知、タイマー、アフィニティ

活用シーン

  1. 01ESP32 の並行タスクと優先度の設計
  2. 02RP2040 のデュアルコア処理の調整
  3. 03デッドロック、競合、スタックオーバーフローの調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wedsamuel1230/arduino-skills --skill freertos-patterns

インストール後、Claude Code で/freertos-patternsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
workflow.mmd
references/
patterns-advanced.md
patterns-memory.md
patterns-queues.md
patterns-synchronization.md
patterns-task-creation.md

詳細

ESP32 および RP2040 向け FreeRTOS パターン

ESP32 または RP2040 で実際の並行処理の問題が発生した場合に、このスキルを使用します。メインの処理は要点に絞り、ユーザーの具体的な問題に合った詳細なリファレンスを読み込みます。

リソース

  • references/patterns-task-creation.md - タスクのライフサイクル、優先度、スタックサイズ、タスクの起動
  • references/patterns-queues.md - キューを使ったタスク間通信
  • references/patterns-synchronization.md - ミューテックス、セマフォ、クリティカルセクション、ISR との連携
  • references/patterns-memory.md - スタックサイズ、ヒープチェック、モニタリング
  • references/patterns-advanced.md - ウォッチドッグ、通知、イベントグループ、タイマー、アフィニティ
  • assets/workflow.mmd - アーキテクチャの概要

使用する状況

次の内容を含むリクエストでは、このスキルを使用します。

  • ESP32 での複数の並行ジョブ
  • タスクの優先度やプリエンプション
  • キュー、セマフォ、ミューテックス、通知の設計
  • RP2040 の setup1 と loop1 を使ったマルチコア連携
  • ウォッチドッグに対応した長時間動作
  • 競合状態、スタックオーバーフロー、デッドロックのデバッグ

次の場合は、このスキルを使用しないでください。

  • 対象が UNO またはその他のシングルコアボードの場合
  • シンプルな millis() スケジューラで問題を解決できる場合
  • リクエストが、並行処理の要件を含まない単一のブロッキングループだけに関する場合

ワークフロー

  1. まず対象プラットフォームを確認します。
    • ESP32 -> FreeRTOS のタスクモデル
    • RP2040 -> デュアルコア連携モデル
  2. 主な問題を特定します。
    • タスクの起動 -> patterns-task-creation.md を開く
    • 通信 -> patterns-queues.md を開く
    • 共有データまたは ISR のシグナリング -> patterns-synchronization.md を開く
    • スタックまたはヒープのリスク -> patterns-memory.md を開く
    • ウォッチドッグ、通知、タイマー、アフィニティ -> patterns-advanced.md を開く
  3. 同期境界を一度に 1 つずつ解決します。設計上本当に必要な場合を除き、キュー、ミューテックス、通知の各アドバイスを混在させないでください。
  4. ボード固有の詳細を明確にします。ESP32 向け FreeRTOS のガイダンスと RP2040 向けマルチコアのガイダンスは、互換性がありません。

基本ルール

  • 問題を解決できる最小の並行処理プリミティブを優先します。
  • 共有状態を明示的に保護します。「おそらく安全」は安全ではありません。
  • ESP32 では vTaskDelay() またはイベント駆動のブロッキングを使用し、タスク内では決して delay() を使用しないでください。
  • スタックサイズを慎重に割り当て、実行時の証拠で検証します。
  • RP2040 では、データを共有する前にコアの所有権を明確に定義します。

検証

  • 各タスクまたはコアに、明確で固有の責任があることを確認します。
  • 具体的なデータ経路に照らして、キューの深さ、通知の流れ、またはミューテックスによる保護範囲を確認します。
  • ESP32 では、タスクサイズが不確かな場合、uxTaskGetStackHighWaterMark() でスタックの余裕を調べます。
  • デッドロックやビジーウェイトを起こさずに、スケッチが処理を継続できることを検証します。
  • ISR が関与する場合は、そのプラットフォームで同期プリミティブが ISR セーフであることを確認します。

よくある失敗要因

  • タスクスタックのサイズ不足
  • FreeRTOS タスク内での delay() の使用
  • 共有データが保護されていない
  • 一貫性のないロック順序によるデッドロック
  • ミューテックスや所有権の管理をせずに RP2040 のコア起動を想定すること

統合

  • ユーザーが設計ガイダンスではなくスケッチ全体を必要とする場合は、arduino-code-generator と組み合わせます。
  • 並行処理の設計に問題がないことを確認した後も、ハードウェアのタイミング問題が残る場合に限り、circuit-debugger と組み合わせます。
  • 並行処理の設計にタスク、キュー、またはイベントフローの図が必要な場合は、mermaid-diagram-generator と組み合わせます。

共通出力の契約

Arduino スキル共通契約に従ってください。前提条件、必要なツールとバージョン、実装手順、証明段階ごとのテストおよび証拠、既知の制限事項、復旧とセキュリティに関する注意事項を明記します。

コメント