我是 AUTOSAR 和嵌入式系统的新手 我的项目将变量与 memmap 一起定义为 autosar 标准的一部分,如下所示
#define ABC_START_SEC_VAR_CLEARED_BOOLEAN
#include "abc_MemMap.h"
boolean var1_b;
boolean var2_b;
#define ABC_STOP_SEC_VAR_CLEARED_BOOLEAN
#include "abc_MemMap.h"
-> var1_b 和 var2_b 将被安排到特定的内存中 所以如果有人犯了如下错误
boolean var1_b;
boolean var2_b;
他们忘记了包括 ABC_START_SEC_VAR_CLEARED_BOOLEAN 和 STOP,当我进行构建时 -> 没有发生错误 那么您对此有何看法?
var1 和 var2 将在内存中排列在哪里? 你有什么方法可以检测到这一点,因为构建已通过并且编译器无法识别此错误
谢谢
最佳答案
您应该按照 AUTOSAR 正确初始化变量。您可以从 AUTOSAR 编译器抽象规范文档中找到变量声明原型(prototype)。
根据 AUTOSAR,您的变量声明应如下所示:
#define ABC_START_SEC_VAR_CLEARED_BOOLEAN
#include "abc_MemMap.h"
VAR(boolean, ABC_VAR_CLEARED) var1_b;
VAR(boolean, ABC_VAR_CLEARED) var2_b;
#define ABC_STOP_SEC_VAR_CLEARED_BOOLEAN
#include "abc_MemMap.h"
您必须将 ABC_VAR_CLEARED 内存类添加到链接器文件中,完成编译过程后,var1_b
和 var2_b
将在 ABC_VAR_CLEARED 部分下分配 map 文件。
关于c - AUTOSAR 的内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59356154/