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”获得更多实战教程。

图片

### 回答1: MATLAB是一种广泛使用的工程软件,它可以被用于建模、仿真、数据分析和可视化等多个领域。自动化汽车软件体系结构(Autosar)是一种用于开发汽车软件的行业标准,其目的是提高软件开发的效率和可重用性。 在MATLAB,导入Autosar标准配置文件可以用于快速生成汽车软件开发的基础结构。具体来说,可以通过以下步骤实现: 1. 打开MATLAB软件并创建一个新的Simulink模型。 2. 在Simulink界面,点击"Autosar"选项卡,并在下拉菜单选择"从Autosar文件导入"选项。 3. 在弹出的"Autosar文件导入"对话框,选择要导入的Autosar配置文件,然后点击"打开"按钮。 4. 导入完成后,会在模型浏览器生成与Autosar文件的设置对应的文件夹。 通过导入Autosar标准配置文件,可以快速完成汽车软件的开发和配置,提高开发效率和质量。同时,MATLAB也支持与其他软件的集成,例如Simulink与Stateflow的组合,可以更加方便地实现对汽车系统的建模和仿真。 ### 回答2: MATLAB是一个用于数学计算、可视化及编程的软件。在汽车电子的应用,MATLAB可以用来导入autosar标准配置文件Autosar是一种汽车电子领域的标准化架构,可以方便地管理从不同供应商获取的软件组件。 导入autosar标准配置文件的过程主要分为两步:首先是准备autosar配置文件,然后是在MATLAB导入配置文件。 在准备autosar配置文件时,需要先选择要使用的autosar版本,并下载autosar标准文档。然后,根据实际需要在autosar配置工具进行相关配置,并生成所需的XML文件。 在MATLAB导入autosar标准配置文件时,首先需要使用autosar包,该包可通过MATLAB官网下载。然后,使用该包提供的函数将autosar配置文件加载到MATLAB工作空间。在加载过程,将根据autosar配置文件的结构生成相应的MATLAB数据结构,以方便进一步的操作。 导入autosar标准配置文件后,MATLAB用户可以根据实际需要使用各种函数对配置进行处理。例如,可以使用函数来读取和修改配置参数,以及创建特定类型的模型。此外,还可以通过MATLAB和Simulink进行更深入的分析和仿真,以验证系统的性能和正确性。 总之,MATLAB和autosar标准相互结合,可以更加方便地管理和分析汽车电子系统。通过正确地使用MATLAB和autosar配置文件,可以加快系统开发和测试的速度,同时减少开发过程的错误和成本。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值