mcpField
E
embedded-systems

embedded-systems

github.com/404kidwiz開発167 回インストール
リポジトリ

embedded-systems について

RTOS、ベアメタルファームウェア、Embedded Linux を扱う組み込みソフトウェア開発スキルです。マイクロコントローラーや組み込みシステムの開発者向けに、ハードウェア、安全性、電力、デバッグ、実装パターンを解説します。

主な機能

  1. 01RTOS とベアメタルの指針
  2. 02Embedded Linux のビルド指針
  3. 03ドライバーと周辺機器の開発
  4. 04OTA 更新戦略
  5. 05デバッグと安全対策

活用シーン

  1. 01マイクロコントローラーファームウェアの開発
  2. 02Zephyr または FreeRTOS の設定
  3. 03センサーや周辺機器のドライバー作成
  4. 04ハードウェア障害やクラッシュダンプの分析

インストール

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

$npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill embedded-systems

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

詳細

組み込みシステムエンジニア

目的

RTOS、ベアメタルファームウェア、Embedded Linuxを専門とする組み込みソフトウェア開発の専門知識を提供します。マイクロコントローラー(STM32、ESP32)やEmbedded Linuxシステム向けに、安全性が重要なコード、電力最適化、ハードウェア抽象化に重点を置きます。

使用する場面

  • マイクロコントローラー(STM32、NXP、ESP32)向けのファームウェアを作成するとき
  • リアルタイムオペレーティングシステム(Zephyr、FreeRTOS)を設定するとき
  • センサーや周辺機器(I2C、SPI、UART)のドライバーを開発するとき
  • Embedded Linuxシステム(Yocto、Buildroot)を構築するとき
  • OTA(Over-The-Air)アップデートの仕組みを実装するとき
  • クラッシュダンプを解析したり、ハードウェア障害をデバッグしたりするとき(JTAG/SWD)


2. 判断の枠組み

OSの選択
What is the hardware capability?
│
├─ **Microcontroller (MCU) - < 1MB RAM**
│  ├─ Hard Real-Time? → **Zephyr / FreeRTOS** (Preemptive scheduler)
│  ├─ Safety Critical? → **SafeRTOS / Rust (Bare Metal)**
│  └─ Simple Loop? → **Bare Metal (Superloop)**
│
└─ **Microprocessor (MPU) - > 64MB RAM**
   ├─ Complex UI / Networking? → **Embedded Linux (Yocto/Buildroot)**
   └─ Hard Real-Time? → **RT-Linux (PREEMPT_RT)** or **Dual Core (Linux + MCU)**
言語の選択(2026年標準)
言語用途推奨事項
C (C11/C17)レガシー/HAL今も主流です。厳格な静的解析を使用してください(MISRA)。
C++ (C++20)複雑なロジック組み込みでは noexcept、no-rtti を使用してください。ゼロコスト抽象化を活用できます。
Rust新規プロジェクト強く推奨します。 GCなしでメモリー安全性を実現します。embedded-hal。
MicroPythonプロトタイピング迅速なテストには適していますが、本番環境のリアルタイム処理には適しません。
アップデート戦略(OTA)
  1. デュアルバンク(A/B): 安全ですが、フラッシュが2倍必要です。
  2. 圧縮イメージ: フラッシュを節約できますが、展開用のRAMが必要です。
  3. 差分アップデート: 帯域幅を最小限に抑えられますが、パッチ適用ロジックが複雑になります。

危険信号 → security-engineer にエスカレーションしてください:

  • 本番ユニットでJTAGポートが開放されたままになっている
  • セキュアブートキーがコード内に平文で保存されている
  • ファームウェアアップデートに署名がない(完全性チェックのみで、真正性の検証がない)
  • Cコードで strcpy や境界のないバッファーを使用している


ワークフロー 2:Zephyr RTOSアプリケーション

目標: I2C経由でセンサーを読み取り、コンソールに出力します。

手順:

  1. デバイスツリー(app.overlay)

    &i2c1 {
        status = "okay";
        bme280@76 {
            compatible = "bosch,bme280";
            reg = <0x76>;
            label = "BME280";
        };
    };
    
  2. 設定(prj.conf)

    CONFIG_I2C=y
    CONFIG_SENSOR=y
    CONFIG_CBPRINTF_FP_SUPPORT=y
    
  3. コード(main.c)

    #include <zephyr/kernel.h>
    #include <zephyr/device.h>
    #include <zephyr/drivers/sensor.h>
    
    void main(void) {
        const struct device *dev = DEVICE_DT_GET_ANY(bosch_bme280);
        
        while (1) {
            sensor_sample_fetch(dev);
            struct sensor_value temp;
            sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
            printk("Temp: %d.%06d C\n", temp.val1, temp.val2);
            k_sleep(K_SECONDS(1));
        }
    }
    


4. パターンとテンプレート

パターン 1:状態機械(ベアメタル)

用途: OSなしで複雑なデバイスロジックを処理します。

typedef enum { STATE_IDLE, STATE_READING, STATE_SENDING, STATE_ERROR } SystemState;

void loop() {
    static SystemState state = STATE_IDLE;
    
    switch(state) {
        case STATE_IDLE:
            if (timerExpired()) state = STATE_READING;
            break;
        case STATE_READING:
            if (readSensor()) state = STATE_SENDING;
            else state = STATE_ERROR;
            break;
        case STATE_SENDING:
            sendData();
            state = STATE_IDLE;
            break;
        // ...
    }
}
パターン 2:割り込み処理の遅延実行

用途: ISR(割り込みサービスルーチン)を短く保ちます。

  • ISR: フラグを設定するか、データをリングバッファーに格納します。すぐに戻ります。
  • メインループ/タスク: バッファー/フラグを確認し、データを処理します(例:GPSのNMEA文字列を解析)。
  • 理由: ISRが長いと、ほかの割り込みをブロックし、システムがクラッシュします。
パターン 3:ウォッチドッグの給餌

用途: システムがフリーズした場合に自動でリセットします。

void watchdog_task(void *pvParameters) {
    while(1) {
        // Only kick if critical flags are set
        if (check_system_health()) {
            wdt_feed();
        }
        vTaskDelay(1000);
    }
}


6. 統合パターン

iot-engineer:
  • 引き継ぎ: 組み込みエンジニアがドライバー(I2C)を作成し、IoTエンジニアがMQTTロジックを作成します。
  • 連携: 電力予算(無線を起動する頻度)。
  • ツール: 電力プロファイラー。
mobile-app-developer:
  • 引き継ぎ: 組み込みエンジニアがBLE GATTサーバーを実装し、モバイル開発者がクライアントを実装します。
  • 連携: GATTサービス/キャラクター特性のUUIDを定義します。
  • ツール: nRF Connect。
cloud-architect:
  • 引き継ぎ: 組み込みエンジニアがOTAエージェントを実装し、クラウドアーキテクトがアップデートサーバー(S3/署名付きURL)を実装します。
  • 連携: セキュリティトークンの形式(JWT/X.509)。
  • ツール: AWS IoT Jobs。

コメント