autosar中各种配置文件cfg、Lcfg、Pbcfg的意义

您所在的位置:网站首页 lfx是什么意思 autosar中各种配置文件cfg、Lcfg、Pbcfg的意义

autosar中各种配置文件cfg、Lcfg、Pbcfg的意义

2024-07-13 20:32| 来源: 网络整理| 查看: 265

才疏学浅,都是大白话,是根据在实际代码中看到的实现方式自己总结的。理论性不强,范围可能也不覆盖所有情况,仅供参考,有问题还请各位大佬指正 xxx_cfg:

这种不带其他字母的,一版都是.h文件,因为其内容一般都是一些宏定义,类型定义等,其内容在编译器编译的时候就已经编到程序里了。

xxx_Lcfg:

这种文件,一般都有.c文件和 .h文件,其内容会有定义的变量(但一般都会用const修饰,也就是定义成了常量),并用其存储设置好的信息。 之后,注意,在其他文件中使用这些变量的时候,是直接使用这些变量的,即直接引用。 例如,在xxx_Lcfg.c中定义 uint8_t test_count_max = 10; 在其他文件中,app.c中,会在程序中直接使用,if(i < test_count_max) 这种使用方式,就是Lcfg的使用方式。对应的变量,其在编译时,都是在各自的.c文件中进行编译,并生成对应的.o文件(目标文件)。(大家应该记得在编译完成后,生成的目标文件都是对应的.c文件生成的吧)。 而在链接时,才会把所有的目标文件给组成一个可执行文件(二进制文件或者16进制文件)。程序在链接的阶段,各种引用的变量才会真正的起作用。 很明显的例子就是,如果你在头文件中声明了一个变量,然后在其他程序中引用此变量,但是此变量没定义,则在编译程序的时候,会在最后的链接阶段提示,找不到此变量的实现。

xxx_Pbcfg:

这种文件,一般都有.c文件和 .h文件。Pb:post build。其本意时,即使在程序编译后,其对应的参数才会起作用。即执行时才起作用。一般这种情况,同样在.c文件中定义了变量,其配置信息,可以是代码中写好的,还有就是 其相当于一个容器,其配置值存储在可以被刷写的存储器上,这样能更进一步的实现其post build的意义。(即如果想修改参数,不用重新编译程序,只需重新刷写修改存储器中的数值即可)。

在使用时,一般是将配置的变量,作为函数的参数传递进去。 例如,在xxx_Pbcfg.c中定义 uint8_t test_count_max = 10; 在其他文件中,app.c中,会在程序中有函数定义void app_test(uint8_t value); 之后还有使用此函数:app_test(test_count_max);(一般如果是定义的大的结构体,则函数的参数都定义成指针形式)  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3