BOOT APP 传递超级全局变量的3种方法
方法一:
参考:https://blog.csdn.net/liyang121316/article/details/12782403
在IAR中成功使用过。
当然,这个方法既可以保存在RAN中,也可以保存在FLASH中。
保存在RAM中:
*.icf配置文件中加入:
place at address mem:0x20001FF0 { readwrite section .test };
C文件里加入:
#pragma location = ".test"
u32 g_to_be_boot;
方法二:
在IAR和KEIL中都有成功使用过。
内存中留出一点空间不使用,然后保存在这段内存中的变量,只有不断电,都不会改变。
代码中的写法如下:
typedef struct
{
uint32_t value;
}GlobalRamValueType;
GlobalRamValueType *g_pGlobalRamValue = (GlobalRamValueType*)0x20001FF4;
方法三:
在IAR中成功使用过。
觉得这种方法最好,不用改工程配置。
uint8_t Boot_value __attribute__((section(".ARM.__at_0x20000000"))) = 0x00; //在RAM定义一个Flag
在BOOT和APP两个不同的程序中都这样定义,就可以直接使用这个可在两个程序中使用的“超级全局变量”了。