MCAL 模块(例如 Lin 驱动程序、CAN 驱动程序)应包含哪些 .c 和 .h 文件?每个文件包含什么?如何为它们派生配置?
2 回答
Autosar 并未完全指定这一点。该标准在实现行为方面非常详细,但在文件方面没有那么详细。有许多公司提供 MCAL,每个供应商都会对代码组织做出一些决定。
但实际上指定了文件名。CAN 驱动程序有Can.c
、Can.h
和。按照 Autosar 的约定,配置的构建后部分位于,编译时配置位于. 他们的内容主要留给供应商。是实现,是头文件,除了它应该包含和之外,没有给出额外的规则。Can_Cfg.h
Can_PBcfg.c
Can_PBcfg.c
Can_Cfg.h
Can.c
Can.h
ComStack_Types.h
Can_GeneralTypes.h
生成的配置也没有完全指定。驱动程序配置的输入是 ECU 配置(在每个驱动程序或模块的“配置规范”一章中描述),输出主要取决于供应商。供应商可能会添加额外的抽象层,可能会Can.c
在其他供应商特定的 C 文件中拥有他们的调用函数,等等。您可以确定它Can.c
会具有该Can_Write
功能,但对于不同的供应商,实施方式会有所不同。
MCAL 供应商通常会提供用于配置模块的附加文档,并且将拥有自己的 Autosar 配置工具或推荐其 MCAL 已知可使用的工具。
另见标准/AUTOSAR_BSWGeneral.pdf
Can.c - CAN 驱动程序的实现 .. 可以拆分为其他 C 文件
Can.h - 定义 AUTOSAR 定义的 CAN 驱动程序公共接口
Can_Irq.c - CAN 的 ISR
Can_Cfg.c - PreCompile Config 例如 CONST(CanConfigType, CAN_CONFIG_DATA) CanConfig = {...} - AUTOSAR 允许跳过此文件并将此配置放入 LCfg 或 PBcfg 文件中
Can_Cfg.h - 预编译配置和编译器开关
Can_PBcfg.c - POSTBUILD_CONFIG 替换 PRECOMPILE 配置,例如 CONST(CanConfigType, CONFIG_DATA) CanConfigSets = { N, { CfgSet0 }, {CfgSet1 } ..}
Can_PBcfg.h - POSTBUILD_CONFIG 类型、结构/定义
Can_Lcfg.c - LINKTIME_CONFIG 配置
Can_Lcfg.h - LINKTIME_CONFIG 类型/结构/定义
以防 CAN 驱动程序为其他模块提供回调以包括:Can_Cbk.h