[STM32F4] IAR环境下,定义的全局变量是存储在Flash中吗?

[复制链接]
llljh 发表于 2019-8-4 14:46 | 显示全部楼层

ram变量初始化会被编译成指令放在flash中,运行后修改RAM的内容。
heweibig 发表于 2019-8-4 14:50 | 显示全部楼层

程序加载的时候初始化,你可以在变量前加CONST和不加分别进行编译看RAM和ROM大小的变化
 楼主| happy_10 发表于 2019-8-4 14:56 | 显示全部楼层

__iar_program_start这个函数我在启动文件中看见过,不过一直没找到在哪儿,应该是IAR编译器内部函数。
我在网上找到了关于这个函数的说明,里面确实是完成初始化的,包括初始化初始值为0的全局变量和初始值非0的全局变量,其中涉及到从Flash拷贝非0初始值到RAM中的过程。还是学艺不精啊,要不是之前接触到启动文件,链接器和icf配置文件,这个问题估计现在还是想当然呢...太可怕了。
dengdc 发表于 2019-8-4 14:59 | 显示全部楼层
可以去看TI的CCS,28糸列的DSP的CMD文档来得更明白。
heweibig 发表于 2019-8-4 15:02 | 显示全部楼层

flash不是存储空间吗
wuhany 发表于 2019-8-4 15:05 | 显示全部楼层
5楼正解,要让变量能初始化为某个值这个值当然要保存在flash里,而变量本身是在ram区,flash里保留的仅是它的初始值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部