0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

AUTOSAR配置中的PostBuild、Precompile、Linktime

冬至子 ? 來源:AUTOSAR軟件攻城獅 ? 作者:嘯西風 ? 2023-07-17 14:56 ? 次閱讀

01

緣由

在AUTOSAR的配置軟件中,經(jīng)常可以見到PostBuild、Precompile、Linktime這三個的影子,所以想搞清楚它們的區(qū)別,以及知道大概是干什么的。

1)DaVinciCFG中

圖片

2)EB工具中

圖片

3)在買AUTOSAR模塊時

圖片

02

編譯基礎知識回顧

在研究之前,先復習一下編譯過程的基礎知識

圖片

注意:

靜態(tài)庫是經(jīng)過編譯的二進制文件。在鏈接階段,引用庫一旦鏈接成功,將匯編生成的目標文件與引用的庫一起鏈接打包到可執(zhí)行文件當中。

預處理Preprocessing

1、處理一些#開頭的預處理指令,比如#if等

2、進行宏定義的替換

3、去除代碼注釋

編譯Compilation :把.C文件編譯生成匯編代碼.asm

匯編Assemble :把.asm會變成中間文件.o

鏈接Linking :鏈接.o,.a,.lib文件生成可執(zhí)行文件

03

為什么需要配置?

AUTOSAR標準了很多東西,所以在考慮問題方面,需要做的更加 全面 ,以應付不同的使用軟件使用場景。那么代碼不可避免的就需要配置一些東西,比如使用宏定義來選擇哪些模塊不需要。再比如,傳統(tǒng)的ECU汽車軟件開發(fā)結束后,不修改代碼是無法更新DBC的,即使功能類似,也做不到,只能重新開發(fā),改動比較大,重新開發(fā)還要重新測試。因此AUTOSAR提出了Post-build的方案,運行在開發(fā)結束后對ECU的參數(shù)進行修改,以便于節(jié)省維護和測試成本。

按照編譯過程的階段,把配置方法進行分類,分為三類,分別是 Pre-compile 、Link timePost-build ,下面三類AUTOSR都是支持的。

圖片

04

Pre-Compile

實現(xiàn)手段:

1、通過宏定義來Enable和disable一些不需要的模塊

2、使用宏定義來定義常量進行配置

在預編譯階段,就會把這些配置項進行宏替換,在實際使用當中,配置項放在單獨的.c和.h文件中(*_Cfg.h, *_Cfg.c),比如Spi.c的配置項,放在了Spi_Cfg.c和Spi.h中,并且被配置的文件(比如Spi.c必須有源文件)不能是.o,.a等庫文件或者中間文件,因為庫已經(jīng)被預編譯過一次了,只能參與到鏈接。

優(yōu)勢:

1)節(jié)省運行時的開銷,在預編譯階段就完成了配置

劣勢:

1)參數(shù)配置是通過宏來實現(xiàn),要求被配置的C要以源碼形式提供,不能以庫或者中間文件的形式

2)參數(shù)類型更改需要重新編譯軟件

圖片

*_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的數(shù)據(jù)配置,比如產(chǎn)線出產(chǎn)后的一些標定和校準參數(shù)(這些參數(shù)事先在開發(fā)期間,不知道這些參數(shù),一般每一臺機器的因為硬件的微小差異導致每臺機器的參數(shù)都不一樣),或者每臺機器的序列號、版本配置,都是屬于Post-build time配置。

2)跨不同汽車版本(相同應用,不同配置)的ECU的可重用性,例如 與豪華版轎車的ECU相比,低配版轎車的ECU在總線上傳輸?shù)?a target="_blank">信號更少,其他配置一樣。

Post-build概述

就是單獨把配置的參數(shù)放到一個 內(nèi)存區(qū)域 ,這個區(qū)域可以 單獨被刷寫 (通過flash擦寫工具,通過UDS服務,通過Bootloader修改參數(shù)),這樣做的一個好處是,OEM不需要知道代碼邏輯,甚至不需要編譯器(有些符合功能安全的編譯器是要license才能使用的),也能修改BSW總的部分配置參數(shù)。

Post-build的工作流

如前面所說Post-build time是在鏈接得到二進制后,再進行修改的,下面是Vector給出的一個Post-build的工作流:

圖片

1)分為兩大塊,左邊是TIER 1(零部件廠商,一般只做單個ECU的公司)的工作流,右邊是OEM(整車廠,比如大眾等)的工作流。

2)TIER 1通過Vector的兩個工具Davinci Developer和Dabinci Configrator Pro配置完,開發(fā)后,再用編譯器,編譯鏈接,生成HEX文件。

3)OEM使用Dabinci Configrator可以更改軟件的部分配置(不是全部),然后通過Post Build Tool生成二進制文件,單獨更新配置到ECU

4)Tier1和OEM的主要區(qū)別是,OEM不需要編譯器,并且只能配置部分參數(shù)。

Post-build分為兩種

1) Post-Build Loadable :配置參數(shù)只有一份,單獨保存在flash的一個固定區(qū)域(特定地址),可以修改參數(shù)配置,可以單獨被更新。

圖片

2) Post-Build Selectable :配置參數(shù)預先配置好了幾份放在flash的一個固定區(qū)域(特定地址),不能修改參數(shù)配置,只能從預先放好的配置中選擇一份配置。

圖片

Post-build與Link time的區(qū)別

1)時間上的不同:Link time是鏈接時配置好,Post-build是編譯鏈接完成后,再需要修改參數(shù)

2)Link time完成后,不支持單獨修改參數(shù),要想修改參數(shù)需要重新編譯鏈接,Post-build支持單獨修改參數(shù)(通過flash擦寫工具,通過UDS服務,通過Bootloader修改參數(shù))

07

總結

圖片

注意事項:

1)如果需要使用Post-Build中的Loadable或者Selectable,在購買AUTOSAR時需要選擇,就是說要多給錢。

2)配置參數(shù)不是多有的BSW參數(shù)都可以配置,哪些參數(shù)可以配置,哪些不可以配置需要和OEM溝通好,在AUTOSAR標準中也有定義,比如《AUTOSAR_SWS_COM.pdf》第129頁。

X:表示支持

--:表示不支持

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AUTOSAR
    +關注

    關注

    10

    文章

    339

    瀏覽量

    21359
  • ecu
    ecu
    +關注

    關注

    14

    文章

    853

    瀏覽量

    54217
  • 預處理器
    +關注

    關注

    0

    文章

    13

    瀏覽量

    2213
收藏 人收藏

    評論

    相關推薦

    TC387配置Autosar OS后主核跑飛了怎么解決?

    使用TC387芯片配置Autosar OS發(fā)現(xiàn)主核跑飛了,其他核正常運行OS任務切換,PC指針指向_IF_CONST區(qū)域,D[4]寄存器為1,D[15]寄存器為4,根據(jù)這兩個寄存器用計算規(guī)則計算出的TCN和TIN好像有問題,在Trap
    發(fā)表于 03-06 08:24

    AUTOSAR MCAL驅動程序與演示程序的Libraries的驅動程序有什么不同之處?

    1.關于 AUTOSAR MCAL 驅動程序 與演示程序的 Libraries 的驅動程序 有什么不同之處? 2.AUTOSAR MCAL 驅動程序
    發(fā)表于 05-17 06:55

    autosar架構學習資料

    ECU軟件的AUTOSAR開發(fā)方法方法概述系統(tǒng)設計系統(tǒng)配置ECU配置執(zhí)行文件生成
    發(fā)表于 08-31 17:46

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

    AUTOSAR的工作原理是什么?為什么需要AUTOSAR?
    發(fā)表于 05-17 06:44

    AUTOSAR是什么

    一、AUTOSAR是什么AUTOSAR組織自己的介紹是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development
    發(fā)表于 11-10 07:47

    為什么使用AUTOSAR

    文章目錄一、總概述1 為什么使用AUTOSAR?1.1 AUTOSAR出現(xiàn)之前的行業(yè)現(xiàn)狀1.2 AUTOSAR出現(xiàn)之后可以實現(xiàn)如下目標2、AUTOSAR總概述二、各層分別概述1、BSW
    發(fā)表于 12-09 07:50

    038_AUTOSAR學習筆記分享

    首先需要知道的是McuGeneralConfiguration在AUTOSAR的概念是一個容器,關于容器目前我自己的理解很可能是自己定義的一種數(shù)據(jù)結構。在EB的配置工具,具體信息如
    發(fā)表于 02-08 06:56

    為什么無法在S32DS為S32平臺安裝“S32R41 RTD AUTOSAR”?

    執(zhí)行閃爍的Led基本程序,我已經(jīng)安裝了S32R41開發(fā)包,無法安裝S32R41 RTD AUTOSAR 4.4。因為這兩者都是 S32 配置工具所必需的。 l S32R41 RTD AUTOSAR 未在 S32DS 擴展和更新
    發(fā)表于 04-06 08:59

    如何在非Autosar應用執(zhí)行I2C?

    我是NXP產(chǎn)品的新產(chǎn)品,我試圖了解它的生態(tài)系統(tǒng)。我需要在非Autosar應用執(zhí)行I2C,所以我需要了解它是如何工作的,所以我有一些問題: 1) 在 RTD_I2C_UM.pdf 寫道: I2c
    發(fā)表于 11-13 07:04

    基于AUTOSAR標準的有效協(xié)助用戶完成ECU配置工作

      在AUTOSAR系統(tǒng)開發(fā)流程,ECU(Electrical Control Unit,電子控制單元)配置是其中的-一個重要步驟。本文研究的ECU配置工具的目的就是為了有效協(xié)助用戶
    發(fā)表于 03-29 15:50 ?2次下載

    NvM在AUTOSAR的層次結構

    AUTOSAR的NvM看起來挺難的,特別是在配置的時候,一堆參數(shù),都不知道是干什么用的。想去研究它,卻不知如何下手。其實吧,AUTOSAR的官方文檔講的挺詳細的,但是內(nèi)容很多,網(wǎng)上有
    的頭像 發(fā)表于 04-21 10:47 ?3728次閱讀

    AUTOSAR ComM功能及配置參數(shù)詳解

    AUTOSAR ComM模塊的分享分為ComM模塊概念詳解和ComM模塊配置及代碼分析
    的頭像 發(fā)表于 06-01 10:00 ?6863次閱讀
    <b class='flag-5'>AUTOSAR</b> ComM功能及<b class='flag-5'>配置</b>參數(shù)詳解

    AUTOSAR Fee模塊配置詳解

    AUTOSAR Fee的配置跟Ea類似,方法都可以觸類旁通。
    的頭像 發(fā)表于 06-01 10:05 ?4010次閱讀
    <b class='flag-5'>AUTOSAR</b> Fee模塊<b class='flag-5'>配置</b>詳解

    解讀AUTOSAR模式管理BswM配置

    模式管理是AUTOSAR的一個難點,也可以說是最龐雜的一塊。因為模式管理貫穿整個CP Autosar流程,幾乎所有模塊都跟BSWM發(fā)生著聯(lián)系。
    的頭像 發(fā)表于 10-26 16:55 ?1771次閱讀
    解讀<b class='flag-5'>AUTOSAR</b>模式管理BswM<b class='flag-5'>配置</b>

    AUTOSAR架構復雜驅動設計

    復雜驅動(Complex Driver,CDD)是一種不受 AUTOSAR 標準化約束的軟件實體,它可以通過 AUTOSAR 接口和/或基礎軟件模塊 API 進行訪問 AUTOSAR 組件或者被
    的頭像 發(fā)表于 12-21 10:13 ?3330次閱讀
    <b class='flag-5'>AUTOSAR</b>架構<b class='flag-5'>中</b>復雜驅動設計