Autosar知识:方法论-EUC软件的集成(下)

2023-10-14 13:20

本文主要是介绍Autosar知识:方法论-EUC软件的集成(下),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本章描述了AUTOSAR ECU的集成。在AUTOSAR意义上,ECU是指微控制器加上外围设备和相应的软件/配置。因此,每个微控制器需要自己的ECU配置。

 

Autosar官方文档版权说明

 

 

 

 

本章共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模块的源代码。也就是说,如果不重新构建整个可执行文件,就不可能交换配置数据。

包括不同的后期版本:

不同的构建后变体包含在配置中,通过指定不同的变体点,这些变体点应该在构建后绑定。这可以在不考虑配置类的情况下完成。

 

 

 

 

 

 

这篇关于Autosar知识:方法论-EUC软件的集成(下)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210781

相关文章

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins