c - AUTOSAR 的内存映射

标签 c memory memory-management embedded autosar

我是 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_bvar2_b 将在 ABC_VAR_CLEARED 部分下分配 map 文件。

关于c - AUTOSAR 的内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59356154/

相关文章:

C 程序尝试修改文本段中的位置

javascript - 正在分配的内存

java - Java的RAM使用情况与任务管理器所说的不符

c - 按值或按指针传递和返回结构 - 是否有默认指南?

c++ - Visual Studio 版本之间不同的未分配内存行为

C中的命令行参数

python - CTRL+C 不会中断在 Python 中使用 CTYPES 对共享库的调用

c - 确定哪个信号中断了我的系统调用 (Linux)

java - 分配给通过 Java 调用的命令行程序的内存

objective-c - 我应该在 dealloc 中释放实例变量和属性吗?