AUTOSAR Post Build / Pre Compile / Link Time Introduction

找到一篇介绍Post Bulid / Pre Compile /Link Time非常好的文章。在这里转载下

原文地址: AUTOSAR配置中的PostBuild、Precompile、Linktime_Xiaowestwind的博客-CSDN博客

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

编译基础回顾

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

预处理Preprocessing:

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

2、进行宏定义的替换

3、去除代码注释

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

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

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

为什么需要配置

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

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

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:

Spi_Cfg.c:

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

Link-time

eg.

Dem_Cfg.h

Fls_Lcfg.c

File Fls.c (available as object code):

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和Davinci Configurator Pro配置完,开发后,再用编译器,编译链接,生成HEX文件。

3)OEM使用Davinci Configurator可以更改软件的部分配置(不是全部),然后通过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修改参数)

总结

注意事项:

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

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

X:表示支持

–:表示不支持

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值