automotive-embedded-skills について
automotive-embedded-skillsは、自動車向け組み込みC、C++、CAPLのコーディングガイドラインです。安全性や規格適合を重視するECU開発者やレビュー担当者向けに、メモリ、通信、リアルタイム処理、テスト、ビルドの実践をまとめています。
主な機能
- 0123カテゴリにわたる180超のルール
- 02MISRA、AUTOSAR、ISOのガイドライン
- 03メモリ安全性とリアルタイム制約
- 04車載通信と診断の実践
- 05CAPLシミュレーション、テスト、故障注入
- 06ビルド、静的解析、CI/CDの実践
活用シーン
- 01組み込みECUコードの作成・レビュー
- 02MISRAやAUTOSARへの適合確認
- 03CAN、LIN、Ethernet通信の実装
- 04CAPLシミュレーション・テストスクリプトの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ washabii14/ agent-skills --skill automotive-embedded-skillsインストール後、Claude Code で/automotive-embedded-skillsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdREADME.mdrules/_template.mdanalysis-coverity.mdanalysis-cppcheck.mdanalysis-ldra.mdanalysis-parasoft.mdanalysis-pclint-config.mdanalysis-polyspace.mdarch-callback-pattern.mdarch-config-separation.mdarch-hal-abstraction.mdarch-layered-architecture.mdarch-module-interface.mdarch-state-machine.mdautosar-adaptive-ara-com.mdautosar-adaptive-ara-core.mdautosar-adaptive-ara-diag.mdautosar-adaptive-ara-exec.mdautosar-adaptive-ara-log.mdautosar-adaptive-ara-per.mdautosar-adaptive-ara-phm.mdautosar-braces-init.mdautosar-classic-bswm.mdautosar-classic-canif-cantp.mdautosar-classic-com.mdautosar-classic-dcm-dem.mdautosar-classic-ecum.mdautosar-classic-nvm.mdautosar-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- |
| 2 | MISRA C/C++ 準拠 | 重大 | misra- |
| 3 | AUTOSAR C++14 ガイドライン(Classic & Adaptive) | 重大 | autosar- |
| 4 | 安全性と機能安全(ISO 26262) | 高 | safety- |
| 5 | リアルタイム性とタイミング制約 | 高 | realtime- |
| 6 | 通信プロトコル(CAN/LIN/Ethernet/IP/UDS) | 高 | comm- |
| 7 | 並行処理と RTOS パターン | 中~高 | rtos- |
| 8 | CAPL スクリプト — CANoe | 中~高 | capl-canoe- |
| 9 | CAPL スクリプト — 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 Simulationcapl-canoe-rbs-reactive- Interaction Layerと状態に応じた応答を用いるリアクティブRBScapl-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、Futureautosar-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 ランタイム → mainboot-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 Analyzerbuild-greenhills-safety- GreenHills の安全認証済みコンパイラーanalysis-pclint-config- PC-lint の MISRA 設定analysis-polyspace- Polyspace Bug Finder / Code Proveranalysis-coverity- Coverity の組み込み向けチェッカーanalysis-cppcheck- MISRA アドオンを使用した cppcheckanalysis-parasoft- Parasoft C/C++testanalysis-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 を参照してください。