4. ECU Extract与系统描述导入
在DaVinci Classic的AUTOSAR量产集成流程中,工程输入基线是整个配置工作的起点。所谓“输入基线”,是指从OEM或系统团队正式接收、经过版本确认、能够作为后续ECU配置唯一依据的一组文件集合。它通常包含三类核心输入:ECU Extract(ECU提取文件)、System Description(系统描述文件)以及通信矩阵文件(DBC或ARXML格式)。这三类文件分别回答“这个ECU要做什么”“它在整车网络中处于什么位置”“它如何与其他节点交换数据”三个问题。缺少任何一类,后续的BSW配置、RTE生成或通信栈配置都会出现无法闭环的缺口。
三类输入文件的定位与内容
ECU Extract是OEM从整车系统描述中裁剪出来的、仅针对当前ECU的子集文件,通常为ARXML格式。它描述了该ECU需要实现的SWC实例、端口、接口、数据类型以及与其他ECU的通信关系。在DaVinci Configurator中导入ECU Extract后,工具会据此生成ECU Extract的配置视图,作为ECU配置的上游约束。需要注意的是,ECU Extract中的SWC描述是“系统视角”的,它规定了ECU必须提供或消费的服务,但不涉及具体实现。
System Description描述的是整车网络拓扑、ECU节点、总线类型、通信矩阵以及系统级约束。它通常由OEM的系统工程团队维护,包含所有ECU的通信关系。对于单个ECU项目,System Description的价值在于提供上下文:当前ECU在CAN/CAN FD/Ethernet网络中的位置、与其他节点的信号映射关系、以及系统级的时序约束。在DaVinci中,System Description通常与ECU Extract配合使用,前者提供全局视图,后者提供局部裁剪。
DBC/ARXML通信矩阵是通信配置的直接输入。DBC是CAN总线的传统数据库格式,包含报文、信号、周期、发送类型等;ARXML则是AUTOSAR标准的通信描述格式,支持CAN、CAN FD、FlexRay、Ethernet等多种总线。在DaVinci Classic中,通信矩阵通过导入后生成Com、CanIf、CanNm等模块的配置。实际项目中,OEM可能同时提供DBC和ARXML,需要根据项目阶段和工具链选择使用。
导入前的版本确认与一致性检查
实际项目中,最常见的集成故障并非来自配置错误,而是来自输入文件版本不一致。OEM可能在不同时间点发布ECU Extract、System Description和通信矩阵的更新版本,如果混用了不同批次的文件,会出现信号映射错位、SWC端口不匹配、甚至工具导入报错。因此,在DaVinci中执行导入操作之前,必须完成三项确认。
第一,确认文件版本号。每个OEM发布包通常带有版本标识,例如“ECU_Extract_V2.3.1”或“System_Desc_2024Q2”。需要将这些版本号记录到工程输入基线清单中,并与OEM的发布说明(Release Note)核对。第二,确认ECU Extract与System Description的引用关系。ECU Extract是从System Description中裁剪出来的,两者之间存在引用路径。如果System Description更新了某个ECU的通信关系,而ECU Extract未同步更新,导入后会出现“引用丢失”或“节点未定义”的警告。第三,确认通信矩阵中的节点名与ECU Extract中的ECU实例名一致。DBC中的节点名通常是OEM定义的短名称(如“ECU_ABS”),而ECU Extract中的实例名可能是完整路径(如“/System/ECU_ABS”),两者必须能够对应。
在DaVinci Classic中执行导入的操作过程
DaVinci Classic的导入操作通常按照“先系统、后通信、再ECU”的顺序进行。首先导入System Description,建立整车网络拓扑和ECU节点列表;然后导入DBC或ARXML通信矩阵,生成Com、CanIf、CanNm等模块的通信配置;最后导入ECU Extract,将系统视角的SWC约束映射到当前ECU的配置中。这个顺序的原因是:ECU Extract中的通信关系需要引用System Description中的节点和通信矩阵中的信号,如果先导入ECU Extract,工具无法解析引用关系。
以CAN通信为例,导入DBC后,DaVinci会生成CanIf的HTH(Hardware Transmit Handle)和HRH(Hardware Receive Handle)配置,以及Com模块的IPDU和Signal配置。此时需要检查报文周期、发送类型(周期发送、事件发送、混合发送)是否与DBC中的定义一致。例如,某ABS报文周期为10ms,发送类型为周期发送,那么在Com模块中对应的Tx IPDU的周期应设置为10ms,发送模式为PERIODIC。如果DBC中定义了信号组(Signal Group)或复用信号(Multiplexed Signal),还需要在Com中配置相应的信号组和复用关系。
导入ECU Extract后,DaVinci会生成SWC实例的配置视图。此时需要检查每个SWC的端口(Port)和接口(Interface)是否与ECU Extract中的定义一致。例如,一个提供端口(Provide Port)应映射到RTE中的S/R或C/S接口,一个需求端口(Require Port)应映射到对应的接收信号或服务调用。如果ECU Extract中定义了NvM Block或Dcm DID,还需要在NvM和Dcm模块中配置对应的Block和DID。
输入基线清单与校验记录
完成导入后,需要建立一份工程输入基线清单,记录每个文件的名称、版本、来源、导入日期和校验结果。这份清单是后续配置变更和问题追溯的依据。以下是一个示例清单,字段可根据项目实际调整。
| 文件类型 | 文件名 | 版本 | 来源 | 导入日期 | 校验结果 |
|---|---|---|---|---|---|
| ECU Extract | ECU_Extract_ABS.arxml | V2.3.1 | OEM系统团队 | 2024-06-15 | 通过 |
| System Description | System_Desc_2024Q2.arxml | 2024Q2 | OEM系统团队 | 2024-06-15 | 通过 |
| 通信矩阵 | CAN_Matrix_V1.8.dbc | V1.8 | OEM通信团队 | 2024-06-15 | 通过 |
| 通信矩阵 | CAN_Matrix_V1.8.arxml | V1.8 | OEM通信团队 | 2024-06-15 | 通过 |
校验结果应记录导入过程中出现的警告和错误。常见的警告包括:信号未映射到SWC端口、IPDU周期与DBC定义不一致、ECU Extract中的SWC实例在System Description中未找到对应节点。这些警告不一定导致导入失败,但需要在后续配置中逐一确认。如果出现错误(如文件格式不兼容、引用路径断裂),则必须回到OEM输入包中重新获取或修正文件。
常见导入问题与处理方式
在实际操作中,以下几种问题较为常见。第一,ARXML命名空间不兼容。不同OEM可能使用不同版本的AUTOSAR Schema(如4.2.2、4.4.0),如果DaVinci Classic的版本不支持该Schema,导入会报错。处理方式是确认DaVinci版本支持的AUTOSAR版本范围,必要时使用OEM提供的转换工具或升级DaVinci。第二,DBC与ARXML同时导入导致重复定义。如果OEM同时提供了DBC和ARXML,且两者描述的是同一套通信矩阵,同时导入会产生重复的IPDU和Signal。处理方式是选择其中一种作为主输入,另一种仅用于交叉校验。第三,ECU Extract中的SWC实例名与System Description中的节点名不一致。这通常发生在OEM内部命名规范变更时,需要与OEM确认正确的映射关系,必要时在DaVinci中手动调整映射。
完成上述导入和校验后,工程输入基线即搭建完成。此时DaVinci工程中应包含:完整的ECU节点列表、通信矩阵配置、SWC实例和端口映射、以及NvM/Dcm等模块的初始配置。后续的BSW配置、RTE生成和代码集成都将基于这个基线进行。基线一旦锁定,任何输入文件的变更都需要走变更流程,并重新执行导入和校验,以确保配置与输入的一致性。