硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8789|回复: 14
收起左侧

[有问必答] stm32, bootloader里面的全局变量,跑到app会继续占用ram吗?

  [复制链接]

101

主题

301

回帖

604

积分

金牌会员

123

积分
604
发表于 2018-7-20 10:14:33 | 显示全部楼层 |阅读模式
stm32,  bootloader里面的全局变量,跑到app会继续占用ram吗?我在boot里定义了比较大的全局变量数组,比较担忧这个
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2018-7-20 10:23:48 | 显示全部楼层
进入APP后,bootloader的所有变量全部销毁。
回复

使用道具 举报

101

主题

301

回帖

604

积分

金牌会员

123

积分
604
 楼主| 发表于 2018-7-20 10:38:06 | 显示全部楼层
eric2013 发表于 2018-7-20 10:23
进入APP后,bootloader的所有变量全部销毁。

大神全局变量也销毁了吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2018-7-20 10:39:40 | 显示全部楼层
ssssssss 发表于 2018-7-20 10:38
大神全局变量也销毁了吗

变量的数值也许还在,看你APP变量的覆盖情况了,但是已经不起作用了。
回复

使用道具 举报

101

主题

301

回帖

604

积分

金牌会员

123

积分
604
 楼主| 发表于 2018-7-20 10:43:08 | 显示全部楼层
eric2013 发表于 2018-7-20 10:39
变量的数值也许还在,看你APP变量的覆盖情况了,但是已经不起作用了。

boot里面的全局变量肯定是在ram静态区的,我跳到app后这个全局变量所占用的地方我app还能用吗?编译器有没有允许app里的全局变量覆盖它?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2018-7-20 10:49:30 | 显示全部楼层
ssssssss 发表于 2018-7-20 10:43
boot里面的全局变量肯定是在ram静态区的,我跳到app后这个全局变量所占用的地方我app还能用吗?编译器有 ...

没问题,你想太多了。除非你的boot有一些全局变量还想在app里面使用。

你再捋捋。
回复

使用道具 举报

101

主题

301

回帖

604

积分

金牌会员

123

积分
604
 楼主| 发表于 2018-7-20 11:07:38 | 显示全部楼层
eric2013 发表于 2018-7-20 10:49
没问题,你想太多了。除非你的boot有一些全局变量还想在app里面使用。

你再捋捋。

好吧,大神我信你
回复

使用道具 举报

0

主题

31

回帖

31

积分

新手上路

积分
31
发表于 2018-8-9 21:05:23 | 显示全部楼层
一直比较担心这个问题,现在得到大神的答案,可以在BOOT里面放开使用了。
回复

使用道具 举报

2

主题

118

回帖

124

积分

初级会员

积分
124
发表于 2022-7-20 15:14:23 | 显示全部楼层
eric2013 发表于 2018-7-20 10:49
没问题,你想太多了。除非你的boot有一些全局变量还想在app里面使用。

你再捋捋。

boot有一些全局变量还想在app里面使用,该怎么处理了?
回复

使用道具 举报

5

主题

31

回帖

46

积分

新手上路

积分
46
发表于 2022-7-20 22:06:11 | 显示全部楼层
image.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2022-7-21 10:06:06 | 显示全部楼层
西点钟灵毓秀 发表于 2022-7-20 15:14
boot有一些全局变量还想在app里面使用,该怎么处理了?

就是这个帖子的玩法。

实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时制作了一个视频操作说明
https://www.armbbs.cn/forum.php? ... 9595&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-2-24 23:21:14 | 显示全部楼层
eric2013 发表于 2018-7-20 10:23
进入APP后,bootloader的所有变量全部销毁。

大佬我有一个疑问,bootloader在跳转到APP时,SRAM是否会清空?那么如果不清空的话,Bootloader的SRAM有剩余的SRAM数据,且APP的__main中并没有把之前的SRAM数据清空,仅仅只是处理特定的段空间。会不会出现由于SRAM有前数据的残留而导致的数据错误跑飞的情况?
回复

使用道具 举报

2

主题

69

回帖

75

积分

初级会员

积分
75
发表于 2025-2-25 08:36:12 | 显示全部楼层
非0的全局变量初值存在flash中,具体在flash中的位置由编译器决定,由启动脚本赋值到SRAM中;
回复

使用道具 举报

2

主题

69

回帖

75

积分

初级会员

积分
75
发表于 2025-2-25 08:38:52 | 显示全部楼层
1159767161 发表于 2025-2-24 23:21
大佬我有一个疑问,bootloader在跳转到APP时,SRAM是否会清空?那么如果不清空的话,Bootloader的SRAM有 ...

其实就设想一个场景,正常重启后SRAM中的数据就是没有意义的,是需要初始化的;跳转到app后进行同样的初始化操作就行
进阶用法是强制指定某个变量不进行初始化操作,这样跳转app没有断电自然没有丢失数据
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2025-2-25 08:44:58 | 显示全部楼层
1159767161 发表于 2025-2-24 23:21
大佬我有一个疑问,bootloader在跳转到APP时,SRAM是否会清空?那么如果不清空的话,Bootloader的SRAM有 ...

就算数据残留那也是脏数据,变量是根据地址来的,原先有数据也是覆盖原来的数据而已。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 14:02 , Processed in 0.531825 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表