本章描述了AUTOSAR ECU的集成。在AUTOSAR意义上,ECU是指微控制器加上外围设备和相应的软件/配置。因此,每个微控制器需要自己的ECU配置。
本章共8个部分:
1、 概述
2、 准备ECU配置
3、 配置BSW和RTE
4、 更新ECU配置
5、 ECU时序建模
6、 生成BSW和RTE
7、 建立可执行文件
8、 配置类
本节内容比较多,但属于编译器基本知识,开发者如掌握编译器原理直接了解工作流程即可。
8、配置类
BSW模块的开发包括以下几个开发周期:
编译、链接和下载可执行文件到ECU内存。参数的配置可以在以下任何一个过程步骤中完成:预编译时间、链接时间甚至构建后时间。
根据配置参数的流程步骤,将配置类分类如下
•预编译
•链接
•post-build构建后
不同流程步骤中的配置对ECU配置参数的处理有一定的影响。如果将配置参数定义为预编译时,则在编译后不能再更改此配置参数。
或者,如果在构建后定义了配置参数,则配置参数必须存储在已知的内存位置。此外,交付BSW模块的格式决定了参数可以通过什么方式更改。BSW模块的源代码交付或目标代码交付在配置方面有不同的*度。
参数的配置类取决于它所属的BSW模块的实现变体。但是,一旦实现了模块,每个参数的配置类都是固定的。为模块选择正确的实现变体取决于应用程序的类型和模块实现者所做的设计决策。
可以在一个模块中组合不同的配置类。例如,对于构建后可配置的BSW实现,只有一个参数子集可能是构建后可配置的。有些参数可以配置为预编译或链接。
用于描述配置类的文件格式:
•.arxml(由AUTOSAR标准化的xml文件)
•.exe(可下载到ECU的可执行文件)
•.hex(一个二进制文件,可以下载到ECU中,但不能自己执行)。
•.c(包含源代码或配置数据的C-source文件)
•.h(用于源代码或配置数据的头文件)。
.obj(用于源代码或配置数据的目标文件)
在BSW模块的实际实现中,允许混合使用BSW模块中不同配置类的参数,所有配置参数很可能不在同一个配置类中。
换句话说,它将是一个BSW模块中一个混合的参数与不同的配置类。
配置类:预编译:
这种类型的配置是在编译源代码之前完成的独立配置。这意味着这些可配置元素的参数值是在编译前选择的,并且在编译后有效。可配置参数的值是在软件开发过程的早期阶段确定的,参数值的任何更改都需要重新编译。预编译时参数的内容不能在后续的开发步骤(如链接时间或构建后时间)中更改。
工作分解结构有两种方法:
⭐只生成头文件:
第一种方法是生成一个BSW模块配置头文件,然后使用这个头文件编译模块核心代码。在这种情况下,BSW配置生成器不会触及模块核心代码。
⭐生成头文件和源文件:
另一种方法,其中BSW配置生成器生成完整的、特定于配置的BSW模块配置头文件,加上完全生成源代码的BSW模块。在这种情况下,不存在核心代码。
这两种方法都同样有效。
当必须在选择其他可靠的参数之前做出参数值的决定时,预编译时配置是正确的选择。例如,CRC初始校验和参数的算法选择是基于CRC类型(CRC16或CRC32)的选择。当选择CRC16时,处理时间会增加,但内存使用量会减少。而当选择CRC32时,处理时间会减少,但内存使用量会增加。在编译源代码之前,实现者应该根据需求和资源的可用性做出正确的选择。
可采用预编译时配置的例子有:
• 配置NVRAM管理器的内存表数量和块描述符表。
• 为软件模块的开发错误跟踪启用宏。
工作流程:
配置类:链接
这种类型的配置是在链接期间为BSW模块完成的。这意味着BSW模块的对象代码从另一个对象代码文件接收其配置的一部分,或者它是由链接器选项定义的。链接时间参数通常在向积分器交付目标代码时使用。
这个配置类提供了配置过程的模块化方法。一个单独的模块将处理配置细节,这些参数值将在链接过程中提供给其他模块。
BSW配置代码的生成与编译:
第一步是生成BSW配置代码,生成BSW模块配置数据源代码和BSW模块配置头文件。这些与基本的软件模块核心头一起编译成BSW模块配置数据对象代码。
配置数据定义:
配置参数数据定义在通用头文件基本软件模块核心头文件中,包含在基本软件模块核心源代码和BSW模块配置数据源中。模块源文件需要这个头文件来解析引用,模块配置源文件需要它来根据定义交叉检查数据类型的声明。
模块源文件和配置文件单独编译:
分别编译模块源文件和模块配置源文件,分别生成基本的软件模块目标代码和BSW模块配置数据目标代码。
连接过程:
在链接过程中,通过解析外部引用,将配置数据提供给基本的软件模块目标代码。
配置值发生变化时的重新生成:
当配置参数的值发生变化时,需要重新生成基本的软件模块目标代码。
可采用链接过程配置的例子有:
• 信号的初始值和无效值
• 为网络管理的各个实例配置的唯一通道标识符。
• CAN网络逻辑句柄。
• 硬件接收手柄和硬件传输的标识符和类型
• CAN接口句柄。
• ComFilterAlgorithm的定义。
• COM回调函数,用于指示接收无效信号的RTE。
工作流程:
配置类:构建后
在构建BSW模块或描述之后,可以进行这种类型的配置
生成BSW后期生成配置代码:
为了使构建后重新配置成为可能,可重新配置的参数应该存储在ECU内存的已知内存位置。在这种方法中,基本软件模块核心源代码的编译和链接独立于其配置数据。BSW配置生成器将配置数据生成为BSW模块配置数据源,该数据源独立于核心源代码进行编译和链接。
生成构建后配置是一个可以多次执行的过程。第一次是在创建初始ECU配置期间完成的,初始ECU配置包括生成可加载到ECU内存二进制文件的ECU可执行文件和BSW模块配置数据。此方法如图2.55所示。之后,根据图2.56所示的过程,可以根据需要多次将构建后配置(更新通常来自ECU提取)与ECU可执行文件分开。
可以采用构建后配置的例子有:
• CAN帧的标识符
• CAN波特率和传播延迟
• COM传输模式,传输模式时间偏移和时间段
• 启用/禁用信号传输
• 框架包装
• 信号网关
• Lin/ FlexRay时间表
工作流程:
在配置类中处理不同的构建后变体
生成多个构建后配置变量:
在这个用例中,BSW配置生成器在BSW模块配置头文件和BSW模块配置数据源中生成两个或多个配置参数变体。配置数据被编译并与基本软件模块核心源代码链接在一起。得到的ECU可执行文件包括所有配置变量以及BSW模块的源代码。也就是说,如果不重新构建整个可执行文件,就不可能交换配置数据。
包括不同的后期版本:
不同的构建后变体包含在配置中,通过指定不同的变体点,这些变体点应该在构建后绑定。这可以在不考虑配置类的情况下完成。