你的位置:物联网软件外包报价 > 物联网软件开发资讯 > 物联网软件开发公司 Autosar基础:如何领略PostBuild、Precompile、Linktime?

物联网软件开发公司 Autosar基础:如何领略PostBuild、Precompile、Linktime?

发布日期:2024-11-06 03:41    点击次数:138

写在著述主题之前:仅以本文问候我的老哥哥(陈哥,他心爱我这样叫他,猜度是为了显年青,拉近咱们之间的距离感)。陈哥70后(具体不成说哈)物联网软件开发公司,之是以难忘这样明晰,是因为陈哥和我导师同庚,是以难忘深入。陈哥和我导师已经北理同班同学,这社会,很大,就怕,又那么小。

写本文的缘由:陈哥,前几天"催更"。让我给讲讲PB(Post Build),开始,认为陈哥在开打趣,因为我知说念他职责本色偏向市集,关于我这样写技术细节的著述,应该不太合口味。关联词,他隆重的给我说,让我讲讲,因此,也就有了本文,也就拉扯了一些我和陈哥的旧事。让我没意想的是:陈哥眷注我2年多了,在我最驱动写的时分就驱动眷注。我写的好多技术著述,他不一定看懂,但是,他仍在看着、想考着...见证着我的青涩与成长。

想来,和陈哥安适10个岁首了。10年,倏忽而过,这时代,咱们有错乱,又脱离错乱,思潮腾涌。

陈哥,为东说念主温暖,心爱吵杂,也作念得一手西北菜。刚毕业的时分,我和陈哥合租,学得一些时候,“皋比尖椒”、"豆角焖面"等等。虽然,也学会了“麻将”、"斗田主"、“台球”、“羽毛球”......

拿起"Autosar"就更有渊源了,开始,我听到这个词,是陈哥聊起的。一次,陈哥佩戴我导师的东西,我去代领,约在地铁里碰头,因为有一段顺道,聊到了Autosar,其时,我芒然自失。现时想来,有种忍者神龟和师父互换变装的感受。和陈哥联系,似有亦师亦友的嗅觉。10年已过,偶尔我会给陈哥打个电话,仅仅苟简的问候,无关利益。此时。咱们又处鄙人一个10年的历程中,陈哥,一切唾手。---陈哥小昆仲记(2024/01/29)

图片

上期开出奇偶比3:2,近10期奇偶比为26:24,本期前区推荐奇偶比1:4。

上期龙头开出奇数球05,近10期龙头开出07 04 06 04 05 02 08 01 01 05,奇偶比5:5,本期参考奇数球05。

教导:图片来源集合

回到本文,物联网软件开发公司该若何去领略Autosar中的PostBuild、Precompile、Linktime呢?它们在拘谨谁呢?

1、编译旨趣

若是要领略Autosar的PostBuild、Precompile、Linktime,咱们得从形势的编译旨趣聊起。搞软件开导的小伙伴知说念:咱们使用高档谈话(eg:C、C++等)编写的代码,是给软件开导者看的,而信得过干活的单片机"不懂"高档谈话,单片机需要它能识别的言语,才知说念如何关活。若何办呢?答:编译器(Compiler)翻译高档谈话,最终将高档谈话经过一系列责罚,打包成镜像文献,烧录到单片机中。而这个"一系列责罚"包含:预编译责罚、编译责罚、汇编责罚、通顺责罚等操作,如下所示:

图片

那么,这些责罚,与Autosar的PostBuild、Precompile、Linktime又有若何的探究呢?

2、Autosar与PostBuild、Precompile、Linktime

在Autosar中,驳斥PostBuild、Precompile、Linktime时,好多时分是在计划参数(Variant)的责罚时机。既然是Variant的责罚时机,那么就会对应到参数在编译流程中的责罚时机,暗示如下:

图片

app开发(一)Autosar设置参数看Autosar设施的小伙伴,若是眷注过设置章节,应该会把稳到PostBuild、Precompile、Linktime这几个高频枢纽词。设置章节,会针对设置参数拘谨其参与编译责罚的时机,比如:COM模块,在设置章节,对设置参数责罚的三个时机(约略说阶段)作念了施展,需要了解更多细节的小伙伴不错参考Autosar COM设施,暗示如下:

图片

eg:CaniIf模块的设置参数CanIfPrivateDlcCheck,拘谨其在Pre-compile time不错操作,即:参数CanIfPrivateDlcCheck独一在预编译责罚阶段责罚,暗示如下:

图片

教导:X线路复旧,—线路不复旧Pre-compile Time:参数预责罚,即:对使用#责罚的信息进行替换,在对参数编译之前,提前替换。比如:#define界说的宏等。例如:对源文献中的MAX_LENGTH预编译责罚编写的源文献代码如下所示:
#define   MAX_LENGTH   100...uint16 idx = 0x00;if(idx= 0x00; idx < MAX_LENGTH; idx++){}...
经过预编译责罚,将源码中的宏MAX_LENGTH均替换成100,如下所示:
...uint16 idx = 0x00;if(idx= 0x00; idx < 100; idx++){}...

如上是代码宏替换的场景,而Autosar中,大宗是成立参数的使能与否。

工程使用场景:在代码开导阶段,不错通过设置上位机对某些功能使能约略禁用,比如:DLC(Date Length Code)查验功能使能与否。

Link Time:当源文献经过汇编责罚以后,会输出中间对象文献(*.o文献),这些输出对象连同库文献(eg:*.a),经过通顺器(Linker)的通顺责罚,智商分拨到指定的内存位置。

在前文《Tasking基础:将变量放入指定内存的两种方法》提到过通顺旨趣,即:Linker(通顺器)如何将*.o、*.a等文献分拨到预期内存位置,暗示如下:

图片

工程使用场景:该阶段,更多的是开导阶段体现。eg:修改了某个源文献(*.c),需要再行编译该源文献,再行通顺。

Post-Build Time:参数在这个阶段责罚,其实等于修改二进制文献中特定参数的值。一般来说物联网软件开发公司,这个阶段更多的是标定功能,比如:通过XCP修改某个常量,这个常量一般与算法探究,该常量可能是某个公式的因子参数,通过标定该参数,以便于达到预期环境(工况)下的性能。

工程使用场景:整车设置字(eg:Car Configuration),通过标定(XCP)约略会诊$2E(Write Data By Identifier service)、$3D(Write Memory By Address service)等奇迹,修改特定参数,设置车辆的高、中、低设置约略香氛系统使能与否。这样的设置场景,在车辆下线阶段有好多,本文不逐一例如。 本站仅提供存储奇迹,所有本色均由用户发布,如发现存害或侵权本色,请点击举报。