发新帖我要提问
12
返回列表
打印
[STM32F4]

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

[复制链接]
楼主: happy_10
手机看帖
扫描二维码
随时随地手机跟帖
21
llljh| | 2019-8-4 14:46 | 只看该作者 回帖奖励 |倒序浏览

ram变量初始化会被编译成指令放在flash中,运行后修改RAM的内容。

使用特权

评论回复
22
heweibig| | 2019-8-4 14:50 | 只看该作者

程序加载的时候初始化,你可以在变量前加CONST和不加分别进行编译看RAM和ROM大小的变化

使用特权

评论回复
23
happy_10|  楼主 | 2019-8-4 14:56 | 只看该作者

__iar_program_start这个函数我在启动文件中看见过,不过一直没找到在哪儿,应该是IAR编译器内部函数。
我在网上找到了关于这个函数的说明,里面确实是完成初始化的,包括初始化初始值为0的全局变量和初始值非0的全局变量,其中涉及到从Flash拷贝非0初始值到RAM中的过程。还是学艺不精啊,要不是之前接触到启动文件,链接器和icf配置文件,这个问题估计现在还是想当然呢...太可怕了。

使用特权

评论回复
24
dengdc| | 2019-8-4 14:59 | 只看该作者
可以去看TI的CCS,28糸列的DSP的CMD文档来得更明白。

使用特权

评论回复
25
heweibig| | 2019-8-4 15:02 | 只看该作者

flash不是存储空间吗

使用特权

评论回复
26
wuhany| | 2019-8-4 15:05 | 只看该作者
5楼正解,要让变量能初始化为某个值这个值当然要保存在flash里,而变量本身是在ram区,flash里保留的仅是它的初始值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则