OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2236|回复: 3

IAP实验编译产生的ZI存放在SRAM里面吗

[复制链接]

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
发表于 2020-2-22 18:44:41 | 显示全部楼层 |阅读模式
4金钱
本帖最后由 taomao 于 2020-2-22 19:30 编辑

在网上的一篇网页查到
FLASH中被占用的空间为:Code + RO Data + RW Data
程序运行的时候,
芯片内部RAM使用的空间为: RW Data + ZI Data
那STM32F103内部RAM只有64K,设置的数据存放地址为0X20001000,也就是4K,图片显示的是ZI就有60K,这么大的吗,还有bootload程序所占用的RAM范围是0X20000000—-0X20001000吧

iap编译结果.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-2-23 23:21:10 | 显示全部楼层
是的ZI 数据是SRAM里面的,ZI+RW,没有超过64*1024就可以。
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
 楼主| 发表于 2020-2-24 08:51:48 | 显示全部楼层
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));

那串口接收的app程序存放地址是0X20001000,也就是说bootload程序所占用的RAM范围是0X20000000—-0X20001000,也就是4K,不够阿
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2017-5-28
在线时间
23 小时
发表于 2020-2-24 22:28:07 | 显示全部楼层
mcu 中内存分为flash和SRAM,Code + RO Data + Text是在flsah 中,  RW Data(也初始化变量) + ZI Data(未初始化变量)+堆+栈
为sram,bootload是固化的一段代码在flash中,不是在SRAM中,哪4k空间可能是栈空间,一般在mcu中不使用malloc,所以堆空间大小一般为0, u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000))) 表示数组USART_RX_BUF的存放地址为为0X20001000,从这个地址开始的USART_REC_LEN个字节,最大为60k(不考虑其它地方使用,所以这里完全够用。ZI-date太大是你定义的全局变量太大,全局变量数组使用较多时,可以使用动态内存管理。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 20:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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