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

相关文章

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始