mcpField
A
automotive-embedded-skills

automotive-embedded-skills

github.com/washabii14開発14165 回インストール35 週間前に更新
リポジトリ

automotive-embedded-skills について

automotive-embedded-skillsは、自動車向け組み込みC、C++、CAPLのコーディングガイドラインです。安全性や規格適合を重視するECU開発者やレビュー担当者向けに、メモリ、通信、リアルタイム処理、テスト、ビルドの実践をまとめています。

主な機能

  1. 0123カテゴリにわたる180超のルール
  2. 02MISRA、AUTOSAR、ISOのガイドライン
  3. 03メモリ安全性とリアルタイム制約
  4. 04車載通信と診断の実践
  5. 05CAPLシミュレーション、テスト、故障注入
  6. 06ビルド、静的解析、CI/CDの実践

活用シーン

  1. 01組み込みECUコードの作成・レビュー
  2. 02MISRAやAUTOSARへの適合確認
  3. 03CAN、LIN、Ethernet通信の実装
  4. 04CAPLシミュレーション・テストスクリプトの作成

インストール

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

$npx skills add https://github.com/washabii14/agent-skills --skill automotive-embedded-skills

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

同梱ファイル

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

AGENTS.md
README.md
rules/
_template.md
analysis-coverity.md
analysis-cppcheck.md
analysis-ldra.md
analysis-parasoft.md
analysis-pclint-config.md
analysis-polyspace.md
arch-callback-pattern.md
arch-config-separation.md
arch-hal-abstraction.md
arch-layered-architecture.md
arch-module-interface.md
arch-state-machine.md
autosar-adaptive-ara-com.md
autosar-adaptive-ara-core.md
autosar-adaptive-ara-diag.md
autosar-adaptive-ara-exec.md
autosar-adaptive-ara-log.md
autosar-adaptive-ara-per.md
autosar-adaptive-ara-phm.md
autosar-braces-init.md
autosar-classic-bswm.md
autosar-classic-canif-cantp.md
autosar-classic-com.md
autosar-classic-dcm-dem.md
autosar-classic-ecum.md
autosar-classic-nvm.md
autosar-classic-os.md

詳細

自動車組み込み C/C++/CAPL のベストプラクティス

自動車組み込みソフトウェア開発における、C、C++、CAPL の包括的なコーディングガイドラインです。安全性への影響と業界のコンプライアンス要件(MISRA C:2012、MISRA C++:2023、AUTOSAR C++14 Classic & Adaptive、ISO 26262、ISO 21434)に基づいて優先順位付けされた、23 カテゴリにわたる 180 以上のルールが含まれています。自動車通信スタック全体(CAN/LIN/Ethernet/IP/TSN)、サイバーセキュリティ、診断、CAPL によるシミュレーション/テスト/フォールトインジェクション、AUTOSAR BSW モジュール、ブート/NVM/電源管理、コンパイラツールチェーン、静的解析ツール、CI/CD 統合を網羅しています。

適用する場面

次のような場合に、これらのガイドラインを参照してください。

  • 自動車 ECU 用の新しい組み込み C/C++ モジュールを作成するとき
  • CAN/LIN/Ethernet 通信スタックを実装またはレビューするとき
  • CANoe/CANalyzer のシミュレーションやテスト用の CAPL スクリプトを作成するとき
  • MISRA C/C++ または AUTOSAR C++14 への準拠に向けてコードをリファクタリングするとき
  • 安全性が重視されるソフトウェア(ISO 26262 に基づく ASIL A-D)を設計するとき
  • RTOS タスク管理やタスク間通信を実装するとき
  • メモリ安全性、タイミング、決定性についてコードをレビューするとき
  • 診断プロトコル(UDS、OBD-II、DoIP)を扱うとき
  • Automotive Ethernet(TCP、UDP、SOME/IP、DoIP、VLAN)を実装するとき
  • サイバーセキュリティ要件(ISO 21434、セキュアブート、TLS)に対応するとき
  • キャリブレーション/診断ツール(A2L、ODX、XCP)と統合するとき
  • リソースに制約のあるマイクロコントローラー(RAM、Flash、CPU)向けに最適化するとき

優先度別のルールカテゴリ

優先度カテゴリ影響度プレフィックス
1メモリ安全性と管理重大memory-
2MISRA C/C++ 準拠重大misra-
3AUTOSAR C++14 ガイドライン(Classic & Adaptive)重大autosar-
4安全性と機能安全(ISO 26262)高safety-
5リアルタイム性とタイミング制約高realtime-
6通信プロトコル(CAN/LIN/Ethernet/IP/UDS)高comm-
7並行処理と RTOS パターン中~高rtos-
8CAPL スクリプト — CANoe中~高capl-canoe-
9CAPL スクリプト — vTESTstudio中~高capl-vtest-
10コード構成とアーキテクチャ中arch-
11パフォーマンス最適化中perf-
12ビルド、コンパイル、静的解析中build-
13セキュリティとサイバーセキュリティ(ISO 21434)高security-
14テストと検証中test-
15ツール統合(A2L/ODX/FIBEX)中integration-

クイックリファレンス

1. メモリ安全性と管理(重大)
  • memory-stack-over-heap - 組み込み環境ではヒープよりスタック割り当てを優先する
  • memory-static-allocation - メモリ使用量を決定的にするため、静的割り当てを使用する
  • memory-buffer-bounds - アクセス前に必ずバッファ境界を検証する
  • memory-pool-pattern - 動的割り当てに似た用途にはメモリプールパターンを使用する
  • memory-no-malloc-in-rt - リアルタイム性が重要な処理では malloc/free を決して使用しない
  • memory-raii-cpp - 組み込み C++ コードのリソース管理には RAII を使用する
  • memory-volatile-correctness - ハードウェアレジスターや共有データには volatile を正しく使用する
  • memory-alignment - 対象アーキテクチャに合わせて、データ構造が適切にアラインメントされていることを確認する
  • memory-zero-init - 特に安全性が重視されるコードでは、変数を必ず初期化する
2. MISRA C/C++ 準拠(重大)
  • misra-no-implicit-conversions - 暗黙的な型変換を避ける
  • misra-single-exit-point - 重要な関数では単一の終了箇所を優先する
  • misra-no-dynamic-memory - 動的メモリ割り当てを避ける(ルール 21.3)
  • misra-no-recursion - 組み込み環境では再帰を避ける(ルール 17.2)
  • misra-switch-default - switch 文には必ず default ケースを含める
  • misra-no-goto - C のエラー処理後のクリーンアップを除き、goto を避ける
  • misra-boolean-expressions - 明示的なブール値比較を使用する
  • misra-pointer-arithmetic - ポインター演算は配列のインデックス指定に限定する
  • misra-side-effects - 条件式内の副作用を避ける
3. AUTOSAR C++14 ガイドライン(CRITICAL)
  • autosar-smart-pointers - 所有権の管理には、生ポインターではなくスマートポインターを使用します
  • autosar-no-exceptions-rt - リアルタイムコンテキストでは例外を避け、Result 型を使用します
  • autosar-const-correctness - インターフェース全体で const の正確性を適用します
  • autosar-override-final - 仮想関数をオーバーライドする場合は、必ず override/final を使用します
  • autosar-enum-class - 通常の enum ではなく enum class を使用します
  • autosar-no-unions - union を避け、必要に応じて std::variant を使用します
  • autosar-braces-init - ナローイング変換を防ぐため、波括弧による初期化を優先します
  • autosar-nodiscard - 重要な戻り値を持つ関数には [[nodiscard]] を使用します
4. 安全性と機能安全 - ISO 26262(HIGH)
  • safety-defensive-programming - モジュール境界で防御的プログラミングを適用します
  • safety-error-detection - エラー検出と妥当性チェックを実装します
  • safety-redundant-checks - 重要な制御経路には冗長なチェックを使用します
  • safety-watchdog-pattern - ウォッチドッグ監視パターンを実装します
  • safety-state-machine-integrity - 状態マシンの遷移が破損しないよう保護します
  • safety-crc-validation - 重要なデータの整合性を CRC で検証します
  • safety-safe-state - 障害発生時に必ず安全状態を定義し、その状態に移行できるようにします
  • safety-asil-decomposition - ASIL 分解パターンに正しく従います
5. リアルタイムとタイミング制約(HIGH)
  • realtime-deterministic-execution - 周期タスクの実行時間を確定的にします
  • realtime-wcet-awareness - WCET(最悪実行時間)を考慮して設計します
  • realtime-no-blocking-isr - 割り込みサービスルーチン内でブロックしないでください
  • realtime-priority-inversion - 適切なロックを使用して優先度逆転を防ぎます
  • realtime-cyclic-scheduling - 周期スケジューリングパターンに正しく従います
  • realtime-interrupt-latency - 割り込みレイテンシーと ISR の実行時間を最小限に抑えます
  • realtime-deadline-monitoring - 重要なタスクのデッドライン監視を実装します
6. 通信プロトコル(HIGH)

CAN / LIN バス:

  • comm-can-message-layout - 適切な CAN/CAN FD メッセージレイアウトと DBC 規約に従います
  • comm-can-error-handling - CAN バスオフからの復旧とエラーフレームを処理します
  • comm-can-fd-handling - CAN FD の拡張データ長とビットレート切り替えを処理します
  • comm-lin-schedule-table - LIN スケジュールテーブルと応答処理を実装します
  • comm-signal-timeout - デフォルト値を使用したシグナルのタイムアウト監視を実装します
  • comm-network-management - NM(ネットワーク管理)の状態マシンに正しく従います

車載 Ethernet / IP スタック:

  • comm-tcp-socket-lifecycle - TCP ソケットのライフサイクル(接続、キープアライブ、グレースフルシャットダウン)を管理します
  • comm-udp-datagram-handling - サービス検出とストリーミング用の UDP データグラムを処理します
  • comm-doip-implementation - Diagnostics over IP(ISO 13400)のアクティベーションとルーティングを実装します
  • comm-arp-table-management - 確定的なネットワーク向けに ARP テーブルと静的 ARP エントリーを管理します
  • comm-icmp-handling - ネットワーク診断と到達可能性の検出に ICMP を使用します
  • comm-vlan-qos-priority - VLAN タグ付けと QoS 優先度マッピング(IEEE 802.1Q)を設定します
  • comm-dhcp-autoip - IP アドレスの割り当て(DHCP クライアント、AutoIP フォールバック)を実装します
  • comm-someip-serialization - サービス指向通信には、正しい SOME/IP シリアライゼーションを使用します
  • comm-someip-sd - SOME/IP サービス検出(offer、find、subscribe)を実装します

診断とルーティング:

  • comm-uds-service-handler - 適切な NRC 処理を備えた UDS 診断サービスを実装します
  • comm-gateway-routing - ゲートウェイ ECU 内の適切なメッセージルーティングを実装します
7. 並行処理とRTOSのパターン(中〜高)
  • rtos-task-design - 単一の責務と適切な優先度を持つタスクを設計します
  • rtos-critical-section - クリティカルセクションの実行時間を最小限に抑えます
  • rtos-mutex-pattern - ミューテックスを正しく使用し、ロックのネストを避けます
  • rtos-message-queue - タスク間通信には共有メモリよりもメッセージキューを優先します
  • rtos-no-priority-inversion - 優先度継承または優先度上限プロトコルを使用します
  • rtos-isr-to-task - フラグやキューを使用して、ISRの処理をタスクコンテキストに委譲します
  • rtos-stack-sizing - 安全マージンを確保してタスクスタックのサイズを適切に設定します
8. CAPLスクリプト — CANoe(中〜高)
  • capl-canoe-message-handler - 可読性とパフォーマンスを考慮してメッセージハンドラーを構成します
  • capl-canoe-timer-pattern - 周期処理とワンショット処理でタイマーパターンを正しく使用します
  • capl-canoe-test-structure - 適切なセットアップ/ティアダウン/検証を含めてテストケースを構成します
  • capl-canoe-signal-access - 生のバイト操作ではなく、データベースシンボルを介して信号にアクセスします
  • capl-canoe-error-frame-handling - シミュレーションでエラーフレームとバスオフ状態を処理します
  • capl-canoe-environment-variables - パネルとの連携に環境変数を正しく使用します
  • capl-canoe-diagnostic-testing - 診断リクエスト/レスポンスのテストパターンを実装します
  • capl-canoe-node-simulation - 適切な状態機械を用いてノードシミュレーションを設計します
  • capl-canoe-multi-channel - マルチチャンネルのバスシミュレーション(CAN+CAN、CAN+LIN、CAN+ETH)
  • capl-canoe-rbs-cyclic - カウンター/CRC生成を伴う周期的なRest Bus Simulation
  • capl-canoe-rbs-reactive - Interaction Layerと状態に応じた応答を用いるリアクティブRBS
  • capl-canoe-gateway-routing - 信号/PDU/プロトコル間ルーティングを用いるゲートウェイシミュレーション
8b. CAPL — 共通パターン(中〜高)
  • capl-signal-manipulation - 再利用可能な信号操作ライブラリ(ランプ、正弦波、ノイズ、ステップ、シーケンス)
8c. CAPL — フォールトインジェクション(高)
  • capl-fault-can - CAN/CAN FDのフォールトインジェクション(エラーフレーム、バスオフ、信号の固着、タイミング)
  • capl-fault-lin - LINのフォールトインジェクション(チェックサム、無応答、ヘッダー、タイミング)
  • capl-fault-eth - Ethernetのフォールトインジェクション(リンクダウン、パケット損失、遅延、破損)
8d. CAPL — 外部連携(中)
  • capl-ext-dll-integration - CAPL DLL API、データ交換、スレッドセーフティ、32/64ビット
  • capl-ext-com-python - Pythonを介したCANoe COMオートメーション
  • capl-ext-com-csharp - C#を介したCANoe COMオートメーション
  • capl-ext-ci-cd - CI/CD連携(Jenkins、GitLab CI、ヘッドレス実行)
9. コード編成とアーキテクチャ(中)
  • arch-hal-abstraction - 移植性のためにハードウェア抽象化レイヤーを使用します
  • arch-module-interface - 情報隠蔽を取り入れた明確なモジュールインターフェースを設計します
  • arch-state-machine - テーブル駆動方式またはステートパターンを用いて状態機械を実装します
  • arch-callback-pattern - レイヤー間の疎結合化にコールバックパターンを使用します
  • arch-config-separation - 設定とロジックを分離します(キャリブレーションパラメーター)
  • arch-layered-architecture - レイヤードアーキテクチャ(MCAL、ECU-AL、BSW、SWC)に従います
10. パフォーマンス最適化(中)
  • perf-loop-optimization - 組み込みターゲット向けにループ構造を最適化します
  • perf-lookup-table - 実行時の計算ではなくルックアップテーブルを使用します
  • perf-bitwise-operations - フラグやレジスターの操作にビット演算を使用します
  • perf-cache-friendly - CPUキャッシュ効率を高めるようにデータを配置します
  • perf-inline-critical - 小さく重要な関数をインライン化します
  • perf-fixed-point - 可能な場合は浮動小数点演算ではなく固定小数点演算を使用します
  • perf-dma-usage - 大量のデータ転送にDMAを使用します
11. ビルド、コンパイル、静的解析(MEDIUM)
  • build-warnings-as-errors - すべてのコンパイラー警告をエラーとして扱います
  • build-static-analysis - 静的解析(PC-lint、Polyspace、Coverity)を統合します
  • build-compiler-flags - 安全性と最適化に適したコンパイラーフラグを使用します
  • build-link-time-optimization - モジュール間最適化にLTOを使用します
  • build-reproducible-builds - トレーサビリティを確保するため、再現可能なビルドを実現します
12. テストと検証(MEDIUM)
  • test-unit-test-pattern - 組み込みC/C++のユニットテストを構成します(Unity、Google Test)
  • test-mock-hardware - テスト可能性を高めるため、ハードウェア依存関係をモックします
  • test-boundary-values - 境界値やエッジケースを体系的にテストします
  • test-coverage-targets - ASILレベルに応じたコードカバレッジ目標を達成します
  • test-integration-testing - モジュール間通信の統合テストを設計します
  • test-hil-sil-pattern - 検証用のHIL/SILテストパターンを構成します
13. セキュリティとサイバーセキュリティ — ISO 21434(HIGH)
  • security-secure-boot - セキュアブートチェーンの検証を実装します
  • security-secure-communication - 車載Ethernet通信にTLS/DTLSを使用します
  • security-key-management - 適切な保管とローテーションにより、暗号鍵を取り扱います
  • security-secure-diagnostics - セキュアなUDS認証(0x29サービス)を実装します
  • security-input-sanitization - すべての外部入力(CAN、Ethernet、診断)をサニタイズします
  • security-secure-update - 署名検証を用いたセキュアなOTA/再フラッシュを実装します
  • security-access-control - セキュリティドメイン間のアクセス制御を徹底します
  • security-crypto-usage - 暗号プリミティブ(AES、HMAC、CMAC)を正しく使用します
14. MISRAのグループ化されたトピック(CRITICAL)
  • misra-type-system - 必須型モデル、暗黙の型変換、型キャスト(ルール10~11)
  • misra-control-flow - Switch、goto、到達不能コード、単一出口(ルール15~16)
  • misra-pointer-safety - ポインター演算、nullチェック、変換(ルール18、11)
  • misra-declarations - 変数スコープ、リンケージ、記憶クラス(ルール8)
  • misra-expressions - 副作用、優先順位、ブール値、sizeof(ルール12~14)
  • misra-functions - プロトタイプ、パラメーター、戻り値、再帰の禁止(ルール17)
  • misra-preprocessor - マクロの安全性、インクルードガード、条件付きコンパイル(ルール20)
  • misra-standard-library - 禁止された関数、制限されたヘッダー(ルール21~22)
  • misra-initialization - 変数/配列/構造体の初期化(ルール9)
  • misra-memory-model - Volatile、アトミックアクセス、メモリバリア(ルール19)
  • misra-concurrency - スレッドセーフ、共有データアクセス(追補4)
  • misra-deviation-process - 逸脱の文書化、承認、一般的なパターン
15. AUTOSAR Classic BSWモジュール(HIGH)
  • autosar-classic-ecum - EcuMの起動/シャットダウン、スリープ/ウェイクアップ
  • autosar-classic-bswm - BswMのモード調停、アクションリスト
  • autosar-classic-com - COM信号のパッキング、送信モード
  • autosar-classic-pdu-router - PDU Routerのルーティングパス、ゲートウェイ
  • autosar-classic-dcm-dem - Dcm/Dem診断、DTC管理
  • autosar-classic-nvm - NvMブロックの設定、CRC、読み書き
  • autosar-classic-os - AUTOSAR OSのタスク、ISR、リソース、アラーム
  • autosar-classic-canif-cantp - CanIf/CanTpのコールバック、フロー制御
16. AUTOSAR Adaptive ara:: API(HIGH)
  • autosar-adaptive-ara-com - ara::comのプロキシ/スケルトン、サービスディスカバリー
  • autosar-adaptive-ara-core - ara::coreのResult<T,E>、ErrorCode、Future
  • autosar-adaptive-ara-exec - ara::execのプロセスライフサイクル、機能グループ
  • autosar-adaptive-ara-diag - ara::diagの診断サービス
  • autosar-adaptive-ara-log - ara::logのロギングパターン
  • autosar-adaptive-ara-phm - ara::phmのヘルスマネジメント、監視
  • autosar-adaptive-ara-per - ara::perの永続化、キー・バリュー型ストレージ
17. ECU の起動シーケンス(高)
  • boot-baremetal-startup - ベアメタル起動:スタートアップ → C ランタイム → main
  • boot-autosar-classic-startup - Classic AUTOSAR の EcuM/BswM 起動
  • boot-autosar-adaptive-startup - Adaptive Execution Manager の起動
  • boot-bootloader-reprogramming - UDS フラッシュダウンロードシーケンス
  • boot-secure-boot-chain - HSM 検証によるセキュアブート
18. NVM 管理(高)
  • nvm-autosar-block-config - AUTOSAR NvM ブロック、CRC、冗長化
  • nvm-fee-ea-abstraction - Fee/Ea フラッシュ EEPROM エミュレーション
  • nvm-baremetal-flash - ベアメタルのフラッシュ/EEPROM パターン
  • nvm-wear-leveling - 車載での製品寿命を考慮したウェアレベリング戦略
19. 電源管理(中)
  • power-ecum-sleep-wakeup - EcuM のスリープ/ウェイクアップ状態マシン
  • power-partial-networking - パーシャルネットワーキング、トランシーバーの選択的ウェイクアップ
  • power-bswm-shutdown - BswM の順序指定されたシャットダウンアクションリスト
  • power-clock-peripheral - クロックゲーティングとペリフェラルの電源オフ
  • power-low-power-modes - MCU の低消費電力モード(SLEEP、STANDBY、STOP)
20. 車載 Ethernet の詳細(高)
  • eth-tsn-time-sync - TSN 時刻同期(IEEE 802.1AS / gPTP)
  • eth-tsn-traffic-shaping - TSN トラフィックシェーピング(IEEE 802.1Qbv)
  • eth-tsn-stream-filtering - TSN ストリームフィルタリング(IEEE 802.1Qci)
  • eth-switch-configuration - 車載 Ethernet スイッチの設定
  • eth-avb-streaming - AVB オーディオ/ビデオストリーミング
21. コンパイラーと静的解析(高)
  • build-gcc-warnings - 車載向け GCC 警告フラグ
  • build-clang-analysis - Clang-Tidy と Clang Static Analyzer
  • build-greenhills-safety - GreenHills の安全認証済みコンパイラー
  • analysis-pclint-config - PC-lint の MISRA 設定
  • analysis-polyspace - Polyspace Bug Finder / Code Prover
  • analysis-coverity - Coverity の組み込み向けチェッカー
  • analysis-cppcheck - MISRA アドオンを使用した cppcheck
  • analysis-parasoft - Parasoft C/C++test
  • analysis-ldra - LDRA のトレーサビリティとカバレッジ
22. vTESTstudio CAPL(中〜高)
  • capl-vtest-test-unit - テストユニット/グループ/フィクスチャの構成
  • capl-vtest-data-driven - パラメーターを使ったデータ駆動型テスト
  • capl-vtest-xml-module - XML テストモジュールの統合
  • capl-vtest-verdict-reporting - 判定とレポートのパターン
  • capl-vtest-stimulus-response - 刺激/応答のタイミング検証
23. ツール統合(中)
  • integration-a2l-calibration - A2L/ASAP2 キャリブレーション記述を生成・維持する
  • integration-odx-diagnostic - ODX/PDX 診断記述を正しく構成する
  • integration-fibex-network - FIBEX ネットワーク記述ファイルを維持する
  • integration-dbc-arxml-sync - DBC/ARXML とコードの信号定義を同期させる
  • integration-xcp-calibration - XCP(Universal Measurement and Calibration Protocol)を実装する
  • integration-autosar-arxml - AUTOSAR ARXML 設定を正しく生成・解析する

使用方法

詳細な説明とコード例については、各ルールファイルを参照してください。

rules/memory-stack-over-heap.md
rules/misra-no-recursion.md
rules/capl-message-handler.md

各ルールファイルには、次の内容が含まれています。

  • 自動車組み込みのコンテキストで重要な理由の簡単な説明
  • 誤ったコード例とその説明
  • 正しいコード例とその説明
  • 関連する規格の参照情報(MISRA、AUTOSAR、ISO 26262)
  • 安全性/パフォーマンスへの影響など、追加の背景情報

コンパイル済みドキュメント全文

すべてのルールを展開した完全なガイドについては、AGENTS.md を参照してください。

コメント