我正在使用带有基于Cortex M4的MCU的IAR IDE。当我声明一个数组是const时它会自动将它分配给闪存而不是RAM吗?
答案 0 :(得分:0)
通过实验,使用标记为const的全局数组,它被加载到flash。如果省略const,它将被映射到RAM
答案 1 :(得分:0)
这取决于您的链接器配置。您可以将链接器配置为完全不接触闪存,但它不会非常有用,因为在开机时,处理器不会包含代码或初始化数据来初始化内存。通常,代码(未定义为ramfunc),只读数据和读/写数据的初始化值最终将在flash中结束,我相信IAR的链接器脚本默认设置为以这种方式映射。
在您的实验中,使用const将变量直接放入flash中。如果你有一个初始值(大概是你做的,因为它是const),那么删除const意味着它将被置于读/写数据部分,但是flash中会有一个副本(如果使用默认脚本)来初始化RAM拷贝来自。