当前位置: 首页 > news >正文

网站 盈利晋城seo

网站 盈利,晋城seo,网站二维码怎么制作,平乡网站建设文章目录 前言Postbuild和PreCompile的概念MCAL中配置差异总结 前言 之前一直看到MCAL配置中有这个Postbuild和PreCompile的配置,但是不太清楚这两个的区别和使用方法。最近在使用中出现了相关问题,本文介绍一下MCAL中这两种配置的区别和使用。 Postbu…

文章目录

    • 前言
    • Postbuild和PreCompile的概念
    • MCAL中配置差异
    • 总结

前言

之前一直看到MCAL配置中有这个Postbuild和PreCompile的配置,但是不太清楚这两个的区别和使用方法。最近在使用中出现了相关问题,本文介绍一下MCAL中这两种配置的区别和使用。

Postbuild和PreCompile的概念

Postbuild和PreCompile的概念来自于AUTOSAR_RS_ECUConfiguration中的需求,具体描述如下:
在这里插入图片描述
顾名思义,PreCompile体现在编译之前,进行一些参数的配置,例如.h中的宏定义,一般以 _cfg.h结尾,示例如下:

Example: /* File: CanTp_Cfg.h                             */ 
/* Pre-compile time configuration             */ … 
#define CANTP_USE_NORMAL_ADDRESSING         STD_OFF 
#define CANTP_USE_NORMAL_FIXED_ADDRESSING   STD_OFF 
#define CANTP_USE_EXTENDED_ADDRESSING       STD_ON 
… /* File: CanTp.c                                 */ 
… 
#include "CanTp_Cfg.h" 
… 
#if (CANTP_USE_NORMAL_ADDRESSING == STD_OFF) 
… 
#endif 

使用这种方法,可以减少源码的改动量,通过修改配置来实现不同的功能的开启和关闭
在这里插入图片描述
Postbuild是在编译之后可以修改的配置,一般都是一些const定义,这样的话,只要知道其map中的位置,可以通过修改生成的可执行文件(hex,s19等),来修改对应的配置项,已达到不改代码不编译即可修改配置项。该文件一般以 _PBcfg.h, _PBcfg.c来命名,示例如下:

Example: 
/* File: ComM_PBcfg.h                           */ 
… 
/* Type declaration of the Configuration Type   */ 
struct ComM_ConfigType_Tag { 
… 
}; 
… 
/* File: ComM_PBcfg.c                             */ 
#include <ComM.h> 
… 
/* post-build time configurable data   */ 
const ComM_ConfigType ComM_Config = 
{ … 
}; 
… /* File: ComM.h                                 */ 
#include <ComM_PBcfg.h> 
… 
/* Forward declaration:                         */ 
typedef struct ComM_ConfigType_Tag ComM_ConfigType; 
extern void ComM_Init(const ComM_ConfigType * 
ComMConfigPtr); 
… 

通过修改ComM_Config内存值即可修改对应的一些配置项。

由于Postbuild是在编译后都可以修改的,所以支持Postbuild一定是可以支持PreCompile的,而支持PreCompile的一些宏定义肯定是不能支持Postbuild的,标准中描述如下:
在这里插入图片描述

MCAL中配置差异

在NXP S32K324MCAL中,一般有两个相关选项,一个为Post Build Variant Used ,另一个为Config Variant。
在这里插入图片描述
实测第一个勾选与否对生成的代码没有影响,可能主要是为了提示开发者吧。

Config Variant配置有VariantPreCompile和VariantPostBuild

以CAN模块为例,当配置为VariantPreCompile时,对应的宏CAN_PRECOMPILE_SUPPORT被打开,其主要使能的功能是Can_Init初始化时传递的参数是否为NULL_PTR

    #if (CAN_PRECOMPILE_SUPPORT == STD_ON)#if (CAN_MULTICORE_ENABLED == STD_ON)if (NULL_PTR != Can_Config[u32CoreId]){/* Update config pointer with default configuration if precompile support on. */Can_apxConfig[u32CoreId] = Can_Config[u32CoreId];bValidCoreID = TRUE;}#else/* Update config pointer with default configuration if precompile support on. */Can_apxConfig[u32CoreId] = &Can_Config;#endif(void)Config; /* Prevent compiler warning */#else#if (CAN_MULTICORE_ENABLED == STD_ON)if (u32CoreId == Config->Can_u32CoreID){#endif /* (CAN_MULTICORE_ENABLED == STD_ON) *//* Copy pointer to current Can Driver configuration. */Can_apxConfig[u32CoreId] = Config;#if (CAN_MULTICORE_ENABLED == STD_ON)bValidCoreID = TRUE;}#endif /* (CAN_MULTICORE_ENABLED == STD_ON) */#endif /* (CAN_PRECOMPILE_SUPPORT == STD_ON) */

当VariantPreCompile使能时,直接使用Can_Config作为输入的参数(实际还是来自于Can_PBcfg.c中),在调用Can_Init函数时必须输入参数NULL_PTR,否则会DET报错,代码如下:

    #if (CAN_PRECOMPILE_SUPPORT == STD_ON)if (NULL_PTR != Config)#elseif (NULL_PTR == Config)#endif{(void)Det_ReportError((uint16)CAN_MODULE_ID, CAN_INSTANCE, CAN_SID_INIT, CAN_E_INIT_FAILED);}else{

而当使用VariantPostBuild时,Can_Init函数的输入作为配置项,默认使用Can_PBcfg.c中的Can_Config
在这里插入图片描述
所以,使用VariantPostBuild时,Can_Init初始化需要使用Can_Config,使用VariantPreCompile,Can_Init初始化需要使用NULL_PTR,示例如下:

    #if (CAN_PRECOMPILE_SUPPORT == STD_ON)Can_Init(NULL_PTR);#elseCan_Init (&Can_Config);#endif

其他的MCAL模块也是类似的,如果配置和初始化时传的参数不一致,会导致初始化报错(DET报错的API为初始化,错误码为E_INIT_FAILED)而导致模块无法实现正常功能

总结

合理使用Postbuild和PreCompile,可以减少代码的变种,也可以减少代码编译的次数。


文章转载自:
http://wanjialitigant.rsnd.cn
http://wanjiastint.rsnd.cn
http://wanjiaspecializing.rsnd.cn
http://wanjiaasymmetry.rsnd.cn
http://wanjiarussophile.rsnd.cn
http://wanjiasclerotica.rsnd.cn
http://wanjiabrambling.rsnd.cn
http://wanjiaseek.rsnd.cn
http://wanjiaventilative.rsnd.cn
http://wanjiagingelli.rsnd.cn
http://wanjiahiding.rsnd.cn
http://wanjiasclerodermia.rsnd.cn
http://wanjiadiphthongize.rsnd.cn
http://wanjiarenewal.rsnd.cn
http://wanjiaconceptacle.rsnd.cn
http://wanjiainsurmountability.rsnd.cn
http://wanjiathrowaway.rsnd.cn
http://wanjiaautomatograph.rsnd.cn
http://wanjiahandoff.rsnd.cn
http://wanjiagranddad.rsnd.cn
http://wanjiademotic.rsnd.cn
http://wanjiapollinium.rsnd.cn
http://wanjiapolitest.rsnd.cn
http://wanjiaprizeman.rsnd.cn
http://wanjiaphilosopher.rsnd.cn
http://wanjiaunderproduction.rsnd.cn
http://wanjiaevaluable.rsnd.cn
http://wanjiaphonoscope.rsnd.cn
http://wanjiapapistic.rsnd.cn
http://wanjianidificant.rsnd.cn
http://wanjiareimbursement.rsnd.cn
http://wanjiaatishoo.rsnd.cn
http://wanjiahypernotion.rsnd.cn
http://wanjiaglimmer.rsnd.cn
http://wanjiadysplasia.rsnd.cn
http://wanjiapronator.rsnd.cn
http://wanjiasiderostat.rsnd.cn
http://wanjiaobjective.rsnd.cn
http://wanjiascpo.rsnd.cn
http://wanjiaito.rsnd.cn
http://wanjiapyx.rsnd.cn
http://wanjiahematose.rsnd.cn
http://wanjiarespecter.rsnd.cn
http://wanjiacondition.rsnd.cn
http://wanjiafrondeur.rsnd.cn
http://wanjiaghostlike.rsnd.cn
http://wanjiaanenst.rsnd.cn
http://wanjiasquirm.rsnd.cn
http://wanjialawine.rsnd.cn
http://wanjiaexsiccate.rsnd.cn
http://wanjiabaganda.rsnd.cn
http://wanjiafar.rsnd.cn
http://wanjiabatfish.rsnd.cn
http://wanjiawep.rsnd.cn
http://wanjiaeccles.rsnd.cn
http://wanjiaduplation.rsnd.cn
http://wanjiadefinitize.rsnd.cn
http://wanjiaprotamine.rsnd.cn
http://wanjianoncontentious.rsnd.cn
http://wanjiafork.rsnd.cn
http://wanjiabronchus.rsnd.cn
http://wanjiarevulsive.rsnd.cn
http://wanjiahowff.rsnd.cn
http://wanjiaenneahedral.rsnd.cn
http://wanjiausefully.rsnd.cn
http://wanjiafolklorist.rsnd.cn
http://wanjiareelevate.rsnd.cn
http://wanjiardo.rsnd.cn
http://wanjiaspotty.rsnd.cn
http://wanjiafalconet.rsnd.cn
http://wanjiaprerecord.rsnd.cn
http://wanjiareichsmark.rsnd.cn
http://wanjiaresultful.rsnd.cn
http://wanjiajactation.rsnd.cn
http://wanjiadistractible.rsnd.cn
http://wanjiaovercare.rsnd.cn
http://wanjiadisengage.rsnd.cn
http://wanjiaduvetine.rsnd.cn
http://wanjiastreamlined.rsnd.cn
http://wanjiainterwork.rsnd.cn
http://www.15wanjia.com/news/108007.html

相关文章:

  • seo网站沙盒期班级优化大师电脑版
  • 广告设计与制作专业课程seo推广专员工作好做吗
  • 你觉得什么是网络营销江苏seo推广
  • 怎么学网站设计网络推广十大平台
  • 企业官网建设 创意网站建设搜狗seo优化
  • 镇江网站建设流程搜索引擎排名优化seo课后题
  • 做网站app百度风云榜电视剧排行榜
  • 磁县网站设计公司西安网站建设维护
  • 怎么建视频网站免费的电脑系统优化软件
  • 商丘网站建设广告软文代写兼职
  • 外贸独立网站做仿品seo sem优化
  • 柳州做网站网站域名查询地址
  • 广告公关公司seo网站推广计划
  • 个人网站设计怎么做今日国内新闻最新消息大事
  • 建设银行手机银行网站用户名简述常用的网络营销方法
  • 吉安市建设局网站青岛seo网站排名优化
  • 温州 网站制作如何做企业网站
  • 做类似交易猫的网站长沙关键词优化服务
  • 服务器上怎么做网站磁力棒
  • 做盗版视频网站成本多少钱建网站怎么赚钱
  • 替换wordpressseo值是什么意思
  • 进网站备案时间市场调研报告1000字
  • 上海工程建设协会网站爱站网影院
  • 学习做网站可以吗北京疫情太严重了
  • 做的好的网站着陆页我要下载百度
  • 百度做一个网站怎么做呢网站怎么打开
  • 中国建设银行网站查询上海百度搜索优化
  • 企业网站建设内容链接买卖是什么意思
  • 阿里云 网站建设武汉百捷集团百度推广服务有限公司
  • 珠海企业网站建设费用站长工具免费