日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AUTOSAR架构中的配置文件

發布時間:2024/1/8 编程问答 161 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AUTOSAR架构中的配置文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:本文首發于公眾號“嵌入式軟件實戰派

?

你有沒有發覺AUTOSAR代碼里面有些文件名很是引起你注意,如xxx_PBcfg.c、xxx_Lcfg.cxxx_Cfg.h

看起來,這像是配置文件,實際也證明跟AUTOSAR配置有關(更改配置工具如Davinci Configurator上的配置信息)生成代碼時,這些文件會有相應的變化。

那么,問題來了,一個xxx_cfg.h或者xxx_cfg.c就搞定了,為什么會有三種配置文件呢?

于是,我要刨根問底了。

cfg還好理解,就是configuration的意思,這個PB和L又是什么意思?

翻了很多AUTOSAR官方文檔,終于找到了,其實AUTOSAR Base Software支持以下幾種配置類型:

1. Pre-compile time

  • 處理器指令

  • 代碼生成(選擇和合成)

2. Link time

  • module外的const數據;?模塊編譯后和配置數據

3. Post-build time

  • 加載Module外部的const數據.?加載數據到指定的memory段

獨立于配置類,可以通過變化點提供單個或多個配置集。如果提供了多個配置集,則在運行時綁定變量點的情況下,將在運行時選擇實際使用的配置集。

在許多情況下,一個模塊的配置參數將具有不同的配置類別。

例如,提供構建后時間配置參數的模塊仍將具有一些可進行預編譯時間配置的參數。

這樣看來,這個PB就是post-build time了,而L就是Link time了。那么各個配置文件有什么作用和區別呢?

Pre-compile time

使用:

  • 啟用/禁用可選功能。這樣可以排除不需要的部分源代碼。

  • 優化性能和代碼大小。在大多數情況下,使用#defines比訪問常量甚至通過指針訪問常量的代碼效率更高。

生成的代碼避免了代碼和運行時開銷。

Pre-compile的配置要通過兩個配置文件(xxx_Cfg.h,?xxx_Cfg.c)?實現:

  • xxx_Cfg.h?包含如?宏定義和或者#defines

  • xxx_Cfg.c?包含如const數據

Nm_cfg.c

#include?"Nm_Cfg.h"/*lint?-restore?*/CONST(Nm_NmFunctionTableType,?NM_CONST)?Nm_NmFunctionTable[1]?=?{??/*?PRQA?S?1514,?1533?*/??/*?MD_CSL_ObjectOnlyAccessedOnce?*//*?Index????GetLocalNodeIdentifier????????GetNodeIdentifier????????GetPduData????????GetState????????NetworkRelease????????NetworkRequest????????PassiveStartUp??????????????Referable?Keys?*/{?/*?????0?*/?CanNm_GetLocalNodeIdentifier,?CanNm_GetNodeIdentifier,?CanNm_GetPduData,?CanNm_GetState,?CanNm_NetworkRelease,?CanNm_NetworkRequest,?CanNm_PassiveStartUp?}???/*?[CanNm]?*/};

m_Cfg.h

/*?Global?Properties?*/ #ifndef?NM_DEV_ERROR_DETECT #define?NM_DEV_ERROR_DETECT?STD_ON #endif #ifndef?NM_DEV_ERROR_REPORT #define?NM_DEV_ERROR_REPORT?STD_ON #endif #define?NM_VERSION_INFO_API????????????????????????????STD_OFF

Nm.c

/*?NM?Interface?version?is?decimal?coded.?*/ CONST(uint8,?NM_CONST)?Nm_MainVersion??????=?NM_SW_MAJOR_VERSION; CONST(uint8,?NM_CONST)?Nm_SubVersion???????=?NM_SW_MINOR_VERSION; CONST(uint8,?NM_CONST)?Nm_ReleaseVersion???=?NM_SW_PATCH_VERSION;

Link time

Link time配置用于:

  • 模塊配置僅僅對目標代碼可用(例如IP Protection和warranty原因)

  • 在編譯之后但在鏈接之前創建配置。

例如

Mcu_Lcfg.c

/*?QAC?Warning:?START?Msg(2:3211)-2?*/ /*?Data?Structure?of?RAM?setting?Configuration?*/ CONST(Mcu_RamSetting,?MCU_VAR)?Mcu_GstRamSetting[1]?= {/*?Index:?0?-?McuRamInitConfiguration?*/{/*?pRamStartAddress?*//*?MISRA?Violation:?START?Msg(4:0306)-1?*/ /*?QAC?Warning:?START?Msg(2:0315)-3?*/ /*?QAC?Warning:?START?Msg(2:3892)-4?*/(P2VAR(uint8,?TYPEDEF,?MCU_CONFIG_DATA))?0xFEBD0000UL,/*?END?Msg(2:3892)-4?*//*?END?Msg(2:0315)-3?*//*?END?Msg(4:0306)-1?*//*?ulRamSectionSize?*/0x00000100UL,/*?ucRamInitValue?*/0xFFU,/*?enRamWriteSizeSel?*/MCU_8BIT_SIZE} };

Mcu.c

?/*?Get?the?pointer?to?the?RAM?structure?*/LpRamSetting?=?&Mcu_GstRamSetting[RamSection];

?Post-build time

?Post-build time會用于

  • 數據配置,其中僅定義結構,但在ECU生成期間未知內容

  • 在ECU-build時之后(例如,生產end of line,測試和校準期間)可能會更改或必須修改的數據配置

  • 跨不同汽車版本(相同應用,不同配置)的ECU的可重用性,例如 與豪華版轎車的ECU相比,低成本版轎車的ECU在總線上傳輸的信號更少。

例如

?

關注“嵌入式軟件實戰派”,回復“AUTOSAR”獲得更多實戰教程。

總結

以上是生活随笔為你收集整理的AUTOSAR架构中的配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。