关于 automotive-embedded-skills
automotive-embedded-skills 为汽车嵌入式 C、C++ 和 CAPL 开发提供按安全影响与合规要求组织的编码指南,面向 ECU 开发、测试和审查人员。内容涵盖从内存管理、通信与实时系统到安全、测试和构建的实践。
主要功能
- 01180 多条规则,分属 23 类
- 02MISRA、AUTOSAR 与 ISO 标准指南
- 03内存安全与实时约束
- 04汽车通信协议与诊断实践
- 05CAPL 仿真、测试与故障注入
- 06构建、静态分析与 CI/CD
适用场景
- 01编写或审查汽车 ECU 嵌入式代码
- 02检查 MISRA 或 AUTOSAR 合规性
- 03实现 CAN、LIN 或 Ethernet 通信
- 04编写 CAPL 仿真和测试脚本
安装
复制下面的命令,在终端中运行。
$
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 综合编码指南。包含 23 个类别中的 180 多条规则,并根据安全影响和行业合规要求(MISRA C:2012、MISRA C++:2023、AUTOSAR C++14 Classic 和 Adaptive、ISO 26262、ISO 21434)确定优先级。涵盖完整的汽车通信栈(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/freememory-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- 避免使用 goto;C 语言中的错误清理模式除外misra-boolean-expressions- 使用明确的布尔比较misra-pointer-arithmetic- 将指针运算限制为数组索引misra-side-effects- 避免在条件表达式中产生副作用
3. AUTOSAR C++14 指南(关键)
autosar-smart-pointers- 使用智能指针代替原始指针来管理所有权autosar-no-exceptions-rt- 在实时上下文中避免使用异常,改用 Result 类型autosar-const-correctness- 在各接口中贯彻 const 正确性autosar-override-final- 始终为虚函数重写使用 override/finalautosar-enum-class- 使用 enum class 代替普通 enumautosar-no-unions- 避免使用 union,必要时使用 std::variantautosar-braces-init- 优先使用花括号初始化,以防止窄化转换autosar-nodiscard- 为返回值重要的函数使用 [[nodiscard]]
4. 安全与功能安全 - ISO 26262(高)
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. 实时与时序约束(高)
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. 通信协议(高)
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(网络管理)状态机
汽车以太网 / IP 协议栈:
comm-tcp-socket-lifecycle- 管理 TCP 套接字生命周期(连接、保活、平滑关闭)comm-udp-datagram-handling- 处理用于服务发现和流传输的 UDP 数据报comm-doip-implementation- 实现 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 服务发现(提供、查找、订阅)
诊断与路由:
comm-uds-service-handler- 实现 UDS 诊断服务并正确处理 NRCcomm-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 仿真capl-canoe-rbs-reactive- 使用交互层和依赖状态的响应实现响应式 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- 以太网故障注入(链路断开、丢包、延迟、数据损坏)
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. 构建、编译与静态分析(中)
build-warnings-as-errors- 将所有编译器警告视为错误build-static-analysis- 集成静态分析(PC-lint、Polyspace、Coverity)build-compiler-flags- 使用适当的编译器标志,确保安全性并进行优化build-link-time-optimization- 使用 LTO 进行跨模块优化build-reproducible-builds- 确保构建可复现,以便追溯
12. 测试与验证(中)
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(高)
security-secure-boot- 实施安全启动链验证security-secure-communication- 在车载以太网通信中使用 TLS/DTLSsecurity-key-management- 妥善存储和轮换加密密钥security-secure-diagnostics- 实施安全的 UDS 身份验证(0x29 服务)security-input-sanitization- 清理所有外部输入(CAN、以太网、诊断)security-secure-update- 实施带签名验证的安全 OTA/重新刷写security-access-control- 在安全域之间强制实施访问控制security-crypto-usage- 正确使用加密原语(AES、HMAC、CMAC)
14. MISRA 分组主题(关键)
misra-type-system- 基本类型模型、隐式转换、类型强制转换(规则 10-11)misra-control-flow- Switch、goto、不可达代码、单一出口(规则 15-16)misra-pointer-safety- 指针算术、空指针检查、转换(规则 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 模块(高)
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(高)
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 Flash EEPROM 仿真nvm-baremetal-flash- 裸机 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. 汽车以太网深入解析(高)
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- 汽车以太网交换机配置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(通用测量与标定协议)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
评论
支持 Markdown