继续梳理《AUTOSAR_TR_Methodology》。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译

         配置类:预编译阶段

         配置类:预编译阶段

         这种类型的配置是在编译源代码之前完成的独立配置。 这意味着那些可配置元素的参数值是在编译之前选择的,并将在编译时间之后生效。 可配置参数的值是在软件开发过程的早期阶段决定的,参数值的任何变化都需要重新编译。 预编译时参数的内容不能在后续开发步骤(如链接时或构建后时)中更改。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_基础软件_02

         工作分解结构显示了两种方法:

         只生成头文件

第一种方法是生成一个 BSW 模块配置头文件,然后使用这个头文件编译模块核心代码。 在这种情况下,BSW 配置生成器不会触及模块核心代码。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译_03

         生成头文件和源文件

         另一种方法是,BSW 配置生成器生成完整的、特定于配置的 BSW 模块配置头文件以及 BSW 模块完全生成的源代码。 在这种情况下,不存在核心代码。

         这两种方法同样有效。

当必须在选择其他可靠参数之前决定参数值时,预编译时配置是正确的选择。 例如,CRC 初始校验和参数的算法选择基于 CRC 类型(CRC16 或 CRC32)的选择。 选择CRC16时,处理时间会增加,但内存使用率降低。 虽然选择CRC32时,处理时间将减少,但内存使用量增加。 实施者应在编译源代码之前根据需求和资源可用性做出正确的选择。

可以采用预编译时配置的示例案例有:

• 配置NVRAM 管理器的内存表和块描述符表的数量。

• 为软件模块的开发错误跟踪启用宏。

         大概的内容是能够看懂的,有一点倒是新学习到的,CRC16的处理时间会比CRC32的处理时间长,但是消耗的内存少。这个的确是之前不熟悉的。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译

         这个是预编译的工作流程

         从上面看得到两条线的处理。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_基础软件_05

         一个提示信息,略过了。

         这张图是预编译阶段配置涉及到的活动。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译_06

         表格还是一个总结提示:这种类型的配置是在编译源代码之前完成的独立配置。 这意味着这些可配置元素的参数值在编译之前定义,并在编译后生效。 可配置参数的值是在软件开发过程的早期阶段决定的,参数值的任何变化都需要重新编译。 预编译时参数的内容不能在后续开发步骤(如链接时或构建后时)中更改。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_基础软件_02

         配置类:链接阶段

         配置类:链接阶段

         这种类型的配置是在链接期间为 BSW 模块完成的。这意味着 BSW 模块的目标代码从另一个目标代码文件接收其部分配置,或者由链接器选项定义。 链接时间参数通常在将目标代码交付给集成商时使用。

         基本上清楚了,部分配置是编译器的行为,而另一部分配置是在其他的目标文件。或许,可以理解为链接后生效的非标定信息。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_头文件_08

         描述

         该配置类为配置过程提供了模块化方法。 一个单独的模块将处理配置细节,这些参数值将在链接过程中提供给其他模块。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译_09

         BSW 配置代码的生成和编译

         第一步是生成 BSW 配置代码,它生成 BSW 模块配置数据源代码和 BSW 模块配置头文件。 它们与基础软件模块核心头文件一起编译到 BSW 模块配置数据对象代码中。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译_10

         配置数据的定义

         配置参数数据定义在通用头文件基础软件模块核心头文件中,并包含在基础软件模块核心源代码和BSW模块配置数据源代码中。 模块源文件需要这个头文件来解析引用,模块配置源文件需要它来根据定义交叉检查数据类型的声明。

         就是一个变量类接口定义文件。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译_11

         模块源码和配置文件分开编译

         模块源文件和模块配置源文件分别编译生成基础软件模块目标代码和BSW模块配置数据目标代码。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_头文件_12

         链接处理

         在链接过程中,通过解析外部引用,配置数据将可用于基础软件模块目标代码。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_头文件_13

         配置值改变时重新生成

         当配置参数的值改变时,需要重新生成基础软件模块目标代码。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_预编译_14

         可以采用链接阶段配置的示例案例是:

         • 信号的初始值和无效值

• 为网络管理的各个实例配置的唯一通道标识符。

• CAN 网络的逻辑句柄。

• 硬件接收句柄和硬件传输的标识符和类型

• CAN 接口句柄。

• ComFilterAlgorithm 的定义。

• COM 回调函数,用于指示有关接收到无效信号的 RTE。

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_基础软件_15

         这个是链接阶段配置的工作流程图

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_头文件_16

         链接阶段配置、

692_AUTOSAR_TR_Methodology_文档阅读18_预编译阶段以及链接阶段配置_头文件_17

         这个描述,基本跟前面一致。

         这段小结先到此为止,还有一个配置阶段描述,下一次看。这一次应该不算是学到太多,算是对自己部分已经掌握的技巧的温习以及印证。收获还是有的,有些实现的方式可以落实到专业术语上去了。