OpenEdv-开源电子网

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

程序编译后数据段与堆栈段空间分配冲突

[复制链接]

2

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-7-27
在线时间
6 小时
发表于 2016-7-27 16:56:34 | 显示全部楼层 |阅读模式
5金钱
今天写个程序用的单片机是STM32F103RB。使用了 microlib库在主函数中定义了一个数组类型的全局变量 double a1[2][360];  这个数据总共占用了5760字节。
这个数组的首地址为:0x2000 0B60  末尾地址为:0x2000 21D8
问题出在堆栈的初始地址为:0x2000 1AA0
这就表示堆栈段与数据段的空间分配上发生了冲突。
我我试着将全局变量数据变小 设置为 double a1[2][90]; 但发现还是会占用 堆栈区域。
我自己检查过启动文件使用的:startup_stm32f10x_md.s
编译之后RAM使用情况如下:      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name

         0          0          0          0          0         32   core_cm3.o
       364         66          0          0       5760     231847   main.o
         0          0          0          0          0     201652   misc.o
        36          8        236          0       1024        756   startup_stm32f10x_md.o
       162          0          0          0          0       1740   stm32f10x_gpio.o
        18          0          0          0          0       3346   stm32f10x_it.o
       168         22          0         20          0       3677   stm32f10x_rcc.o
       214          6          0          0          0       3796   stm32f10x_usart.o
       248         24          0          0          0       1325   system_stm32f10x.o

    ----------------------------------------------------------------------
      1220        126        268         20       6784     448171   Object Totals
         0          0         32          0          0          0   (incl. Generated)
        10          0          0          0          0          0   (incl. Padding)



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-7-27
在线时间
6 小时
 楼主| 发表于 2016-7-27 17:03:48 | 显示全部楼层
我尝试着把二位数组分成两个一维数据定义就不会有问题
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-7-27
在线时间
6 小时
 楼主| 发表于 2016-7-27 17:10:34 | 显示全部楼层
我发现定义二位数组的: double a[2][360]  
a[1]的地址为:0x2000 0B60   
a[2]的地址为:0x2000 16A0
堆栈地址为   :0x2000 1AA0
也就是说定义的二位数据的中的a[2]中的数据占用了堆栈区   
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-7-27
在线时间
6 小时
 楼主| 发表于 2016-7-27 17:12:40 | 显示全部楼层
发错地方了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 20:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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