本书使用了大量汽车嵌入式软件领域的技术术语。以下按主题分类整理,每个术语附简要定义和主要出现章节。
| 术语 | 缩写 | 定义 | 主要章节 |
| 单一职责原则 | SRP | 一个模块应该只有一个理由会改变。每个模块只做一件事。 | 2.3 |
| 开闭原则 | OCP | 对扩展开放,对修改关闭。模块在不修改已有代码的前提下可以被扩展。 | 2.5 |
| 里氏替换原则 | LSP | 子类型必须能替换其基类型而不破坏系统正确性。 | 1.4 |
| 接口隔离原则 | ISP | 不应强迫客户端依赖它不使用的方法。 | 1.4 |
| 依赖反转原则 | DIP | 高层模块不应依赖低层模块,两者都应依赖抽象。 | 1.4, 2.4 |
| 依赖注入 | DI | 模块不自己创建依赖,而是通过外部传入依赖。C语言中通过函数指针表实现。 | 2.4 |
| 分层架构 | — | 将系统划分为若干层,每层只依赖紧邻的下层。AUTOSAR标准为四层。 | 2.6 |
| 模块化 | — | 将系统拆分为高内聚、低耦合的独立单元。 | 2.1 |
| 接口 | — | 模块之间的合约。在C语言中,头文件(.h)是接口的主要载体。 | 2.2 |
| 不透明指针 | Opaque Pointer | 在头文件中前置声明结构体但隐藏其内部字段的封装技术,零运行时开销。 | 2.2 |
| 防御性编程 | — | 假设所有外部输入都是恶意的,在每个函数入口进行显式校验。 | 2.7 |
| 技术债务 | — | 为了短期速度而采取的可控的、有代价的设计策略性妥协。 | 2.9 |
| 状态机 | FSM | 由有限个状态、事件、转移构成的系统行为描述模型。 | 2.11 |
| 层级状态机 | HSM | 状态内部可以包含子状态的扩展FSM,防止状态爆炸。 | 2.11 |
| 重构 | — | 在不改变外部行为的前提下优化代码内部结构。不是所有“丑“代码都值得重构。 | 2.9 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 汽车开放系统架构 | AUTOSAR | 汽车电子软件架构的全球标准化合作组织,定义了从MCAL到应用层的分层架构。 | 2.1, 2.6 |
| 应用层软件组件 | SW-C | 包含业务逻辑的应用组件,通过RTE端口通信,不直接操作硬件。 | 2.6 |
| 运行时环境 | RTE | AUTOSAR的代码生成层,将虚拟端口映射到具体通信路径(CAN/内部/以太网)。 | 2.6 |
| 微控制器抽象层 | MCAL | 直接操作寄存器的芯片驱动层。换芯片只需换这一层。 | 2.6 |
| ECU抽象层 | — | 在MCAL之上封装硬件无关的接口,如CanIf、LinIf。 | 2.6 |
| 基础软件 | BSW | MCAL + 服务层 + ECU抽象层的统称。 | 2.6 |
| 通信管理器 | ComM | 管理通信网络状态(唤醒、休眠、全通信)的模块。 | 2.6, 2.11 |
| 诊断通信管理器 | DCM | 处理UDS诊断服务请求(22/2E/19/14等)的模块。 | 2.11, 4.3 |
| 诊断事件管理器 | DEM | 管理诊断故障码(DTC)的存储、老化、去抖的模块。 | 2.11 |
| 非易失存储管理器 | NvM | 管理Flash数据写入/读出的模块,维护多个NV Block。 | 2.6 |
| ECU状态管理器 | EcuM | 管理ECU启动/关闭/休眠/唤醒时序的模块。 | 2.6, 2.11 |
| 基础软件模式管理器 | BswM | 基于规则的引擎,根据系统状态自动触发模块动作。 | 2.5 |
| CAN接口 | CanIf | 统一多个CAN控制器的逻辑接口。 | 2.6 |
| CAN传输层 | CanTp | 基于ISO 15765-2的长报文拆分与重组。 | 2.6 |
| PDU路由器 | PduR | 在通信栈中各模块间路由PDU的总接线板。 | 2.6 |
| 通信服务 | Com | 信号打包/解包、大小端转换、线性转换。 | 2.6 |
| 端到端保护 | E2E | 应用层数据路径的完整性保护,通过CRC+Counter防篡改。 | 2.7, 2.6 |
| 看门狗管理器 | WdgM | 逻辑监督状态机,监控每个被监督实体的checkpoint。 | 2.11 |
| 闪存驱动 | Fls | Flash硬件驱动,直接操作寄存器进行擦除和编程。 | 4.3 |
| Flash EEPROM模拟 | Fee | 在Flash上模拟EEPROM接口,管理擦写均衡。 | 4.3 |
| 后构建配置 | Post-Build | 在固件编译完成后才确定的配置参数,位于Flash独立分区。 | 4.3 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 道路车辆功能安全 | ISO 26262 | 汽车电子电气系统的功能安全国际标准,覆盖从概念到退役的全生命周期。 | 3.6 |
| 汽车安全完整性等级 | ASIL A/B/C/D | 由严重度(S)×暴露度(E)×可控性(C)确定的风险等级。ASIL D最严格。 | 3.6 |
| 危害分析与风险评估 | HARA | 识别功能失效导致的危害,评估其ASIL等级的过程。 | 3.6 |
| 安全目标 | SG | HARA的结果,描述“什么不能发生“,是最高层级的安全需求。 | 3.6 |
| 功能安全需求 | FSR | 从安全目标导出的系统级安全需求。 | 3.6 |
| 技术安全需求 | TSR | 将FSR分配到具体ECU、模块、总线的技术需求。 | 3.6 |
| 软件安全需求 | SSR | 分配给软件组件的安全需求,可直接映射到代码。 | 3.6 |
| 安全档案 | Safety Case | 证明系统安全性的完整证据集合,包含论证链和全部验证报告。 | 3.6, 3.10 |
| 故障容错时间间隔 | FTTI | 从故障发生到系统进入安全状态的最大允许时间。 | 3.6 |
| 安全状态 | — | 系统在检测到故障后进入的、风险可接受的状态(如电机力矩归零)。 | 2.7, 3.6 |
| 完整性校验 | — | 通过CRC、Checksum等手段验证数据在传输路径中未被篡改。 | 2.7 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 汽车工业软件可靠性协会C规范 | MISRA C | 汽车C语言的编码规范,从C标准允许的操作中划掉不安全子集。 | 2.8, 3.3 |
| 强制规则 | Mandatory | MISRA规则中最高等级的约束,无例外。 | 3.3 |
| 必要规则 | Required | MISRA规则的核心等级,允许有文档化、经评审的偏离。 | 3.3 |
| 建议规则 | Advisory | MISRA中推荐遵守但不强制记录偏离的规则。 | 3.3 |
| 偏离记录 | Deviation | 在无法遵守某条规则时的正式豁免申请,包含理由和缓解措施。 | 3.3, 5.3 |
| 静态分析 | — | 不运行程序,通过AST遍历/抽象解释/污点分析穷举所有路径的自动化审查。 | 3.3, 4.5 |
| 抽象解释 | — | 用“可能值的集合“替代具体值的程序分析方法,可证明代码无运行时错误。 | 3.3 |
| 污点分析 | Taint Analysis | 追踪不可信数据的传播路径,防止其被用于危险操作(如数组索引)。 | 3.3 |
| Cppcheck | — | 开源的C/C++静态分析工具,eng-lite使用。 | 5.3 |
| PC-Lint / FlexeLint | — | 汽车行业经典的C静态分析器,完整支持MISRA C规则集。 | 4.5 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 单元测试 | UT | 在隔离环境中验证独立函数/模块的正确性。“材料试验”。 | 3.4, 5.4 |
| 集成测试 | IT | 验证模块间接口和交互的正确性。“分项验收”。 | 3.5 |
| 软件合格性测试 | SWE.6 | 验证完整软件系统是否满足软件需求。“竣工验收”。 | 3.5, 3.6 |
| 软件在环测试 | SIL | 在宿主环境中运行目标代码,验证算法逻辑。 | 3.5 |
| 处理器在环测试 | PIL | 在目标处理器上运行代码但使用虚拟I/O。 | 3.5 |
| 硬件在环测试 | HIL | 在真实ECU上通过仿真I/O信号进行测试。“静载试验”。 | 3.5 |
| 语句覆盖率 | Statement Coverage | 每条语句是否至少被执行一次。最低等级的覆盖率度量。 | 3.4 |
| 分支覆盖率 | Branch Coverage | 每个条件分支是否都被执行过。ASIL B要求。 | 3.4 |
| 修正条件/判定覆盖率 | MC/DC | 每个条件都能独立影响判定结果。ASIL D要求。 | 3.4 |
| 等价类划分 | — | 将输入空间划分为几个等价类,从每类中选代表值测试。 | 3.4 |
| 边界值分析 | BVA | 在输入边界处(边界上/内/外)选取测试点。Bug集中在边界。 | 3.4 |
| Mock/Stub | — | Mock验证交互行为;Stub提供最简单的替代实现。 | 3.4 |
| Ceedling | — | Unity + CMock的管理框架和构建系统。 | 5.4 |
| Unity | — | 极简的C单元测试断言框架,可运行在裸机环境。 | 5.4 |
| gcov / gcovr | — | GCC内置的覆盖率工具链。gcov插桩收集数据,gcovr生成HTML报告(eng-lite用gcovr;同类工具还有lcov)。 | 5.4 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 实时系统 | — | 系统行为正确性不仅依赖计算结果,还依赖结果产生的时间。 | 2.10 |
| 最坏情况执行时间 | WCET | 在所有可能的输入、最恶劣的硬件条件下,任务执行的理论上限。 | 2.10 |
| 固定优先级抢占调度 | FPPS | 每个任务有固定优先级,高优先级任务可抢占低优先级任务。AUTOSAR OS标准。 | 2.10 |
| 优先级反转 | Priority Inversion | 低优先级任务持有锁被中等优先级任务抢占,导致高优先级任务被阻塞。 | 2.10 |
| 优先级天花板协议 | PCP | 任务获得锁时优先级被提升到该资源的预设天花板优先级,防止反转。 | 2.10 |
| 缓存锁定 | Cache Locking | 将关键代码锁定在缓存中,换取执行时间的确定性。 | 2.10 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 统一诊断服务 | UDS | ISO 14229定义的标准诊断协议,包括22(读DID)、2E(写DID)、19(读DTC)等服务。 | 2.2, 2.11 |
| 诊断故障码 | DTC | 标识ECU检测到的具体故障。包含故障类型和故障位置信息。 | 2.2 |
| 数据标识符 | DID | UDS中标识数据的编号,隐藏了数据的内存地址和格式。 | 2.2 |
| 通用测量与标定协议 | XCP | 在不中断ECU运行的前提下读写内部存储的标准化协议。 | 3.8 |
| A2L文件 | ASAP2 | 描述标定参数的元数据文件(地址、类型、换算公式)。 | 3.8 |
| 在线标定 | — | 通过XCP在ECU运行时修改参数,无需重新编译。 | 3.8 |
| 参考页/工作页 | Reference/Working Page | Flash中出厂值(RP)与RAM中当前值(WP)的双层标定存储模型。 | 3.8 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 交叉编译 | — | 在一种架构上编译出能在另一种架构上运行的二进制文件。 | 4.1, 5.2 |
| 链接脚本 | Linker Script, .ld | 定义代码和数据在Flash/RAM中的物理布局。 | 4.2 |
| SREC | Motorola S-Record | 嵌入式固件的标准烧录文件格式,逐字节编码。 | 4.2 |
| 自动依赖追踪 | -MMD -MP | GCC编译时自动生成.d依赖文件,Make通过-include加载。 | 5.2 |
| VPATH | — | GNU Make的源文件搜索路径变量。 | 4.1, 4.3 |
?= | — | 条件赋值运算符:仅当变量未被赋值时赋值。用于支持编译器的命令行覆盖。 | 5.2 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 持续集成 | CI | 每次代码提交自动触发构建、检查、测试的流水线。 | 3.5, 5.5 |
| 持续交付/部署 | CD | CI通过后的自动化部署环节。 | 3.5 |
| 质量门禁 | Quality Gate | CI流水线中的每个检查阶段,未通过则阻止合并。 | 3.5, 5.5 |
| Conventional Commits | — | 提交说明的标准化格式:type(scope): description。 | 3.1 |
| 语义化版本 | SemVer | v<MAJOR>.<MINOR>.<PATCH>版本号规范。 | 3.1 |
git bisect | — | 二分查找法定位引入bug的commit。 | 3.1 |
| 追溯矩阵 | Traceability Matrix | 从需求ID到实现代码到测试用例的映射表。 | 3.6, 5.6 |
| 术语 | 缩写 | 定义 | 主要章节 |
| Doxygen | — | 从注释中自动生成API参考文档的工具。 | 3.7 |
| Sphinx | — | Python编写的文档生成器,支持RST、多格式输出。 | 3.7, 4.6 |
| PlantUML | — | 从文本描述自动生成UML图(时序图、类图等)的工具。 | 3.7 |
| reStructuredText | RST | 轻量级标记语言,Sphinx的默认源格式。 | 3.7 |
@req / @covers | — | 代码中的需求追溯标注:@req声明需求实现,@covers声明测试覆盖。 | 3.6, 5.6 |
@reqSettings | — | 在文件头部声明该文件需求所属的AUTOSAR规范版本。 | 4.6 |
@tagSettings | — | 在文件头部声明该配置文件的适用目标架构。 | 4.6 |
| 术语 | 缩写 | 定义 | 主要章节 |
| 瀑布模型 | Waterfall | 需求→设计→编码→测试的线性开发模型。适用于需求确定的场景。 | 1.3 |
| 敏捷开发 | Agile | 通过短迭代和频繁反馈来管理变化的开发方法。 | 1.3 |
| 汽车SPICE | ASPICE | 评估软件开发过程成熟度的框架。V模型 + 渐进改进。 | 1.3, 2.8 |
| V模型 | — | 左侧从需求分解到单元,右侧从单元验证到系统验证的对称模型。 | 1.3, 2.8 |
| SWE.1~SWE.6 | — | ASPICE中软件工程的六个过程域,组成完整的V模型。 | 2.8 |
| 过程能力等级 | CL1~CL5 | ASPICE对组织过程成熟度的五级评价:已执行→已管理→已建立→可预测→持续优化。 | 1.3 |
| 人月神话 | — | Brooks关于软件开发不能靠加人加速的经典著作。 | 1.2 |
| 没有银弹 | No Silver Bullet | Brooks的论断:没有单一技术能带来软件生产力的数量级提升。 | 1.2 |
| 本质/偶然复杂性 | Essential/Accidental | 本质复杂性来自问题域本身,偶然复杂性来自工具和语言的不足。 | 1.2 |
| 术语 | 缩写 | 定义 | 主要章节 |
| CAN总线 | Controller Area Network | 汽车最常用的串行通信总线,500kbps/1Mbps。 | 2.6, 2.7 |
| CAN FD | CAN Flexible Data Rate | CAN 2.0的升级版,可变速率和数据场更大(最高64字节)。 | 2.6 |
| Cortex-R5 | — | ARM的实时控制处理器,ZynqMP中的RPU核心,带TCM。 | 2.6, 2.10, 3.9 |
| ZynqMP | — | Xilinx的异构多核SoC,集成Cortex-A53(应用核)和Cortex-R5(实时核)。 | 4.1 |
| 内存保护单元 | MPU | 硬件级内存访问权限控制,用于隔离不同OS-Application的地址空间。 | 2.7 |
这个术语索引覆盖了全书39章中的核心概念。每个词条对应的主要章节提供了最详细的讨论位置。