公眾號:汽車ECU開發

在AUTOSAR基礎軟體中,支援Pre-compiletime、Link time、Post-build time配置方式,下面分別對其進行介紹。

Pre-compile time

​採用宏開關的形式,在編譯預處理階段,處理預編譯指令,對宏定義進行替換。其使用場景比如:1、啟動或禁用功能,這樣可以僅對有效的程式碼進行編譯,減少編譯時間和記憶體空間的使用。2、使用#define定義,可以比訪問常量甚至透過指標訪問常量效率更高,提高執行速度。

Pre-compile time配置在AUTOSAR中通常在模組的*_Cfg。h、*_Cfg。c中實現,其中*_Cfg。h儲存宏定義、#defines,*_Cfg。c儲存常量。

如圖1所示,在Spi_cfg。h中透過配置 SPI_DEV_ERROR_DETECT為ON,在Spi。c中就使能了向Det報錯功能​。

AUTOSAR配置類介紹

圖1 Pre-compile配置

Link time

在連結時配置,有些常量資料存在於模組程式碼之外,因此在模組編譯好之後進行資料進行配置,而不需要重新編譯模組,這種方式適合匯入庫檔案來配置程式碼功能。

Link time配置在AUTOSAR中通常在模組的*_lcfg。h、*_lcfg。c。

如圖2所示,Fls_WriteFailed[2]定義於Fls_Lcfg。c中,Fls。c中聲明瞭Fls_WriteFailed[2]來自外部,在Dem_SetEventStatus()中使用了變數,在編譯Fls。c時不需要Fls_WriteFailed的原型。

AUTOSAR配置類介紹

圖2 link time配置

Post-build time

其包含兩種型別,分別是Post-build Loadable和Post-build selectable,其中Post-build Loadable與link time的方式非常類似,不同點在與Post-build Loadable的資料位於允許重新載入的特定記憶體段,而Post-build Selectable時,提供了多個配置集,在執行時載入特定的配置集,其方式如圖3所示。

Post-build time配置在AUTOSAR中通常在模組的*_pbcfg。h、*_pbfg。c。

AUTOSAR配置類介紹

圖3 post buile配置

Post-build這種方式可以用於協調OEM和Tier1之間的ECU開發,例如ECU需要匹配不同的車型,而其中BSW中的差別僅在通訊矩陣,則可以透過Post-build方式,將通訊模組交由OEM負責,這樣即使匹配不同車型或者頻繁更改dbc,都可以快速響應。