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两个不同的程序中都这样定义,就可以直接使用这个可在两个程序中使用的“超级全局变量”了。

 

 

 

 

posted on 2020-08-27 17:46  lizhuohui  阅读(233)  评论(0编辑  收藏  举报

导航