0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AUTOSAR配置中的PostBuild、Precompile、Linktime

冬至子 来源:AUTOSAR软件攻城狮 作者:啸西风 2023-07-17 14:56 次阅读

01

缘由

在AUTOSAR的配置软件中,经常可以见到PostBuild、Precompile、Linktime这三个的影子,所以想搞清楚它们的区别,以及知道大概是干什么的。

1)DaVinciCFG中

图片

2)EB工具中

图片

3)在买AUTOSAR模块时

图片

02

编译基础知识回顾

在研究之前,先复习一下编译过程的基础知识

图片

注意:

静态库是经过编译的二进制文件。在链接阶段,引用库一旦链接成功,将汇编生成的目标文件与引用的库一起链接打包到可执行文件当中。

预处理Preprocessing

1、处理一些#开头的预处理指令,比如#if等

2、进行宏定义的替换

3、去除代码注释

编译Compilation :把.C文件编译生成汇编代码.asm

汇编Assemble :把.asm会变成中间文件.o

链接Linking :链接.o,.a,.lib文件生成可执行文件

03

为什么需要配置?

AUTOSAR标准了很多东西,所以在考虑问题方面,需要做的更加 全面 ,以应付不同的使用软件使用场景。那么代码不可避免的就需要配置一些东西,比如使用宏定义来选择哪些模块不需要。再比如,传统的ECU汽车软件开发结束后,不修改代码是无法更新DBC的,即使功能类似,也做不到,只能重新开发,改动比较大,重新开发还要重新测试。因此AUTOSAR提出了Post-build的方案,运行在开发结束后对ECU的参数进行修改,以便于节省维护和测试成本。

按照编译过程的阶段,把配置方法进行分类,分为三类,分别是 Pre-compileLink timePost-build ,下面三类AUTOSR都是支持的。

图片

04

Pre-Compile

实现手段:

1、通过宏定义来Enable和disable一些不需要的模块

2、使用宏定义来定义常量进行配置

在预编译阶段,就会把这些配置项进行宏替换,在实际使用当中,配置项放在单独的.c和.h文件中(*_Cfg.h, *_Cfg.c),比如Spi.c的配置项,放在了Spi_Cfg.c和Spi.h中,并且被配置的文件(比如Spi.c必须有源文件)不能是.o,.a等库文件或者中间文件,因为库已经被预编译过一次了,只能参与到链接。

优势:

1)节省运行时的开销,在预编译阶段就完成了配置

劣势:

1)参数配置是通过宏来实现,要求被配置的C要以源码形式提供,不能以库或者中间文件的形式

2)参数类型更改需要重新编译软件

图片

*_Cfg.h中放宏定义

*_Cfg.c中放const常量

一个示例

eg.使能和关闭一个功能

Spi_Cfg.h:

1.jpg

Spi_Cfg.c:

1.jpg

Spi.c(必须要有Spi.c的源文件,不能是库)

1.jpg

05

Link-time

Link time在链接时进行配置,适合对没有C源码的库(.a,.lib)或者中间文件(.o)进行配置。

图片

eg.

Dem_Cfg.h

typedef uint16 Dem_EventIdType; /* total number of events = 380 = > uint16 required */
#define DemConf_DemEventParameter_FLS_E_ERASE_FAILED_0 1U
#define DemConf_DemEventParameter_FLS_E_ERASE_FAILED_1 2U
#define DemConf_DemEventParameter_FLS_E_WRITE_FAILED_0 3U
#define DemConf_DemEventParameter_FLS_E_WRITE_FAILED_1 4U
#define DemConf_DemEventParameter_NVM_E_REQ_FAILED 5U
#define DemConf_DemEventParameter_CANSM_E_BUS_OFF 6U

Fls_Lcfg.c

#include "Dem_Cfg.h" /* for providing access to event symbols */
const Dem_EventIdType Fls_WriteFailed[2] = {DemConf_DemEventParameter_FLS_E_WRITE_FAILED_1,
DemConf_DemEventParameter_FLS_E_WRITE_FAILED_2};

File Fls.c (available as object code):

#include "Dem.h" /* for reporting production errors */
extern const Dem_EventIdType Fls_WriteFailed[];
Dem_SetEventStatus(Fls_WriteFailed[instance], DEM_EVENT_STATUS_FAILED);

06

Post-build

适合的场景:

1)适合ECU适配ECU的数据配置,比如产线出产后的一些标定和校准参数(这些参数事先在开发期间,不知道这些参数,一般每一台机器的因为硬件的微小差异导致每台机器的参数都不一样),或者每台机器的序列号、版本配置,都是属于Post-build time配置。

2)跨不同汽车版本(相同应用,不同配置)的ECU的可重用性,例如 与豪华版轿车的ECU相比,低配版轿车的ECU在总线上传输的信号更少,其他配置一样。

Post-build概述

就是单独把配置的参数放到一个 内存区域 ,这个区域可以 单独被刷写 (通过flash擦写工具,通过UDS服务,通过Bootloader修改参数),这样做的一个好处是,OEM不需要知道代码逻辑,甚至不需要编译器(有些符合功能安全的编译器是要license才能使用的),也能修改BSW总的部分配置参数。

Post-build的工作流

如前面所说Post-build time是在链接得到二进制后,再进行修改的,下面是Vector给出的一个Post-build的工作流:

图片

1)分为两大块,左边是TIER 1(零部件厂商,一般只做单个ECU的公司)的工作流,右边是OEM(整车厂,比如大众等)的工作流。

2)TIER 1通过Vector的两个工具Davinci Developer和Dabinci Configrator Pro配置完,开发后,再用编译器,编译链接,生成HEX文件。

3)OEM使用Dabinci Configrator可以更改软件的部分配置(不是全部),然后通过Post Build Tool生成二进制文件,单独更新配置到ECU

4)Tier1和OEM的主要区别是,OEM不需要编译器,并且只能配置部分参数。

Post-build分为两种

1) Post-Build Loadable :配置参数只有一份,单独保存在flash的一个固定区域(特定地址),可以修改参数配置,可以单独被更新。

图片

2) Post-Build Selectable :配置参数预先配置好了几份放在flash的一个固定区域(特定地址),不能修改参数配置,只能从预先放好的配置中选择一份配置。

图片

Post-build与Link time的区别

1)时间上的不同:Link time是链接时配置好,Post-build是编译链接完成后,再需要修改参数

2)Link time完成后,不支持单独修改参数,要想修改参数需要重新编译链接,Post-build支持单独修改参数(通过flash擦写工具,通过UDS服务,通过Bootloader修改参数)

07

总结

图片

注意事项:

1)如果需要使用Post-Build中的Loadable或者Selectable,在购买AUTOSAR时需要选择,就是说要多给钱。

2)配置参数不是多有的BSW参数都可以配置,哪些参数可以配置,哪些不可以配置需要和OEM沟通好,在AUTOSAR标准中也有定义,比如《AUTOSAR_SWS_COM.pdf》第129页。

X:表示支持

--:表示不支持

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AUTOSAR
    +关注

    关注

    10

    文章

    362

    浏览量

    21590
  • ecu
    ecu
    +关注

    关注

    14

    文章

    886

    浏览量

    54506
  • 预处理器
    +关注

    关注

    0

    文章

    13

    浏览量

    2232
收藏 人收藏

    评论

    相关推荐

    TC387配置Autosar OS后主核跑飞了怎么解决?

    使用TC387芯片配置Autosar OS发现主核跑飞了,其他核正常运行OS任务切换,PC指针指向_IF_CONST区域,D[4]寄存器为1,D[15]寄存器为4,根据这两个寄存器用计算规则计算出的TCN和TIN好像有问题,在Trap
    发表于 03-06 08:24

    AUTOSAR MCAL驱动程序与演示程序的Libraries的驱动程序有什么不同之处?

    1.关于 AUTOSAR MCAL 驱动程序 与演示程序的 Libraries 的驱动程序 有什么不同之处? 2.AUTOSAR MCAL 驱动程序
    发表于 05-17 06:55

    autosar架构学习资料

    ECU软件的AUTOSAR开发方法方法概述系统设计系统配置ECU配置执行文件生成
    发表于 08-31 17:46

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR
    发表于 05-17 06:44

    AUTOSAR是什么

    一、AUTOSAR是什么AUTOSAR组织自己的介绍是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development
    发表于 11-10 07:47

    为什么使用AUTOSAR

    文章目录一、总概述1 为什么使用AUTOSAR?1.1 AUTOSAR出现之前的行业现状1.2 AUTOSAR出现之后可以实现如下目标2、AUTOSAR总概述二、各层分别概述1、BSW
    发表于 12-09 07:50

    如何在非Autosar应用执行I2C?

    我是NXP产品的新产品,我试图了解它的生态系统。我需要在非Autosar应用执行I2C,所以我需要了解它是如何工作的,所以我有一些问题: 1) 在 RTD_I2C_UM.pdf 写道: I2c
    发表于 11-13 07:04

    基于AUTOSAR标准的有效协助用户完成ECU配置工作

      在AUTOSAR系统开发流程,ECU(Electrical Control Unit,电子控制单元)配置是其中的-一个重要步骤。本文研究的ECU配置工具的目的就是为了有效协助用户
    发表于 03-29 15:50 2次下载

    NvM在AUTOSAR的层次结构

    AUTOSAR的NvM看起来挺难的,特别是在配置的时候,一堆参数,都不知道是干什么用的。想去研究它,却不知如何下手。其实吧,AUTOSAR的官方文档讲的挺详细的,但是内容很多,网上有
    的头像 发表于 04-21 10:47 4205次阅读

    AUTOSAR ComM功能及配置参数详解

    AUTOSAR ComM模块的分享分为ComM模块概念详解和ComM模块配置及代码分析
    的头像 发表于 06-01 10:00 8204次阅读
    <b class='flag-5'>AUTOSAR</b> ComM功能及<b class='flag-5'>配置</b>参数详解

    AUTOSAR Fee模块配置详解

    AUTOSAR Fee的配置跟Ea类似,方法都可以触类旁通。
    的头像 发表于 06-01 10:05 4625次阅读
    <b class='flag-5'>AUTOSAR</b> Fee模块<b class='flag-5'>配置</b>详解

    解读AUTOSAR模式管理BswM配置

    模式管理是AUTOSAR的一个难点,也可以说是最庞杂的一块。因为模式管理贯穿整个CP Autosar流程,几乎所有模块都跟BSWM发生着联系。
    的头像 发表于 10-26 16:55 2527次阅读
    解读<b class='flag-5'>AUTOSAR</b>模式管理BswM<b class='flag-5'>配置</b>

    AUTOSAR架构复杂驱动设计

    复杂驱动(Complex Driver,CDD)是一种不受 AUTOSAR 标准化约束的软件实体,它可以通过 AUTOSAR 接口和/或基础软件模块 API 进行访问 AUTOSAR 组件或者被
    的头像 发表于 12-21 10:13 4597次阅读
    <b class='flag-5'>AUTOSAR</b>架构<b class='flag-5'>中</b>复杂驱动设计

    AUTOSAR通信堆栈的配置 AUTOSAR通信模块测试方法

    )的开发和生产。通信堆栈是AUTOSAR架构的关键组成部分,负责处理ECU之间的通信。 AUTOSAR通信堆栈的配置 通信模型 :
    的头像 发表于 12-17 15:01 260次阅读

    AUTOSAR通信实现的常见问题

    配置与使用问题 通信协议栈模块理解不足 问题 :开发者可能对AUTOSAR通信协议栈的组成模块(如Com、Dcm、PduR、IpduM、TP、If等)及其功能理解不够深入,导致配置和使用不当。 解答
    的头像 发表于 12-17 15:03 298次阅读