OpenEdv-开源电子网

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

请教一下程序的空间不够的问题

[复制链接]

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
发表于 2011-12-6 09:02:39 | 显示全部楼层 |阅读模式
最近写了个程序,错误都改好了,但是还有一个错误,提示空间不够,但是我把STM32从RB改到了RG,也就是Flash从128K变到了1M,但是仍然提示空间不够,而且差的空间不变,一直是0x18f10个字节,以下是错误提示:
.\obj\舞动.axf: Error: L6406E: No space in execution regions with .ANY selector matching adc_dma.o(.bss).
.\obj\舞动.axf: Error: L6407E: Sections of aggregate size 0x18f10 bytes could not fit into .ANY selector(s).
后来新建了一个工程,用RG后辍的STM32,Flash是1M的,但是仍然出现同样的错误,大家帮忙看看,呵呵
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-2 15:13:45 | 显示全部楼层
我的改了MALLOC.C,就好了
#define MEM1_BLOCK_SIZE 8 
#define MEM1_MAX_SIZE 8*1024
把這些值改小,就好了,你試試
坚持学习!就能成功!
回复 支持 5 反对 0

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1702
金钱
1702
注册时间
2012-5-10
在线时间
439 小时
发表于 2016-5-6 18:31:57 | 显示全部楼层
找你的数组,很明显的问题,ram被你的大数组撑爆了
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复 支持 1 反对 0

使用道具 举报

2

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
373
金钱
373
注册时间
2018-9-14
在线时间
51 小时
发表于 2018-12-6 16:46:08 | 显示全部楼层
明白了  原子有这么一个帖子说的很明白
http://www.openedv.com/forum.php ... A%B4%E6%B9%DC%C0%ED
回复 支持 1 反对 0

使用道具 举报

48

主题

376

帖子

0

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2011-3-18
在线时间
7 小时
发表于 2011-12-6 09:47:07 | 显示全部楼层
可能是RAM吧
回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
 楼主| 发表于 2011-12-6 09:54:51 | 显示全部楼层
回复【2楼】mbass51:
---------------------------------
STM32F103RG是1M的Flash、96K的RAM,应该足够了哦
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-12-6 11:08:59 | 显示全部楼层
回复【楼主位】baiydcwy:
---------------------------------
这个重新新建工程吧。不是容量的问题,应该是程序上的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2013-3-22
在线时间
0 小时
发表于 2013-4-2 13:27:02 | 显示全部楼层
原子哥,那这种问题程序需要怎么修改啊?重建工程么?
回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-2 15:05:57 | 显示全部楼层
兄弟你解決了,我也是這個問題
坚持学习!就能成功!
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1815
金钱
1815
注册时间
2011-10-9
在线时间
230 小时
发表于 2013-4-2 15:13:45 | 显示全部楼层
会与 项目名称是中文名有关系?
回复 支持 反对

使用道具 举报

0

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2012-8-20
在线时间
1 小时
发表于 2014-5-4 11:13:14 | 显示全部楼层
学习了啊!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-9-27
在线时间
0 小时
发表于 2015-9-27 17:26:11 | 显示全部楼层
把ram改大点就可以了。
回复 支持 反对

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-3-12
在线时间
9 小时
发表于 2015-11-26 15:13:07 | 显示全部楼层
回复【7楼】1501697860:
---------------------------------
你好,我开始是和你一样的问题,这样解决了,后来不是了,RAM够了,其他好像不够,请问其他代码不能超过多少?
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2014-10-5
在线时间
37 小时
发表于 2016-5-6 16:48:41 | 显示全部楼层
如果你是使用一个很大的数组导致这个问题的话,可能是你的变量都存在内存中,内存十分小,故导致报错.
你说的容量为1m大部分是指 flash的空间.
把变量存在flash中只需要在 变量定义时加个const即可
回复 支持 反对

使用道具 举报

10

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2016-8-25
在线时间
62 小时
发表于 2016-9-9 22:51:22 | 显示全部楼层
xsx127 发表于 2016-5-6 18:31
找你的数组,很明显的问题,ram被你的大数组撑爆了

在定义数组时在前面加个const还是这种错误  咋回事
回复 支持 反对

使用道具 举报

10

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2016-8-25
在线时间
62 小时
发表于 2016-9-9 22:54:57 | 显示全部楼层
请问,楼主解决的方法是什么,我的也是出现这种错误,我觉得我的芯片内存足够大啊:1MFlash,192+4 Kbytes of SRAM ;option那边可以改的都改了,我一个2000多行的数组也定义为了unsigned const char XX[]; 再次编译仍然错误,而且错误没减少。
回复 支持 反对

使用道具 举报

4

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2016-1-25
在线时间
75 小时
发表于 2016-10-10 10:41:59 | 显示全部楼层
本帖最后由 ljmf5 于 2016-10-10 15:54 编辑
1501697860 发表于 2013-4-2 15:13
我的改了MALLOC.C,就好了
#define MEM1_BLOCK_SIZE                        8
#define MEM1_MAX_SIZE                        8*1024
...

就这么改了,修改之后可能会出现Library reports error: __use_no_semihosting was request的新错误,不过参照http://www.openedv.com/posts/list/2520.htm这里面的解决方法就能搞定了
可是,虽然编译没问题了,但单片机执行时还是出现问题了,预计还是把RAm给撑爆了
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-12-23
在线时间
1 小时
发表于 2016-12-23 10:14:58 | 显示全部楼层
1501697860 发表于 2013-4-2 15:13
我的改了MALLOC.C,就好了
#define MEM1_BLOCK_SIZE                        8 
#define MEM1_MAX_SIZE                        8*1024
...

为什么要改这个,我改了这个就没有错误了,能解释下吗
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2016-12-23 10:34:45 来自手机 | 显示全部楼层
ram空间不够。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-1-30
在线时间
4 小时
发表于 2018-1-30 15:57:01 | 显示全部楼层
1501697860 发表于 2013-4-2 15:13
我的改了MALLOC.C,就好了
#define MEM1_BLOCK_SIZE                        8 
#define MEM1_MAX_SIZE                        8*1024
...

正解!
回复 支持 反对

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-30 16:07:04 | 显示全部楼层
你应该调整的是ram的大小,而不是flash的大小。可以试着参阅一下:https://www.cnblogs.com/ironx/p/5474935.html。但是自己写到空间不足应该不太可能,多半是程序中有了地址的错误。
回复 支持 反对

使用道具 举报

2

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
373
金钱
373
注册时间
2018-9-14
在线时间
51 小时
发表于 2018-12-2 15:18:33 | 显示全部楼层
刚遇到这个问题,我是把malloc.h里边#define MEM1_MAX_SIZE  100*1024  这句的100改小,80以下都可以编译通过。 但还是不明白这个error问题出在哪?明明错误提示no space...,按理说应该增大100这块的数值  为什么减小才能解决问题?哪位大佬可以点拨点拨               
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-10-26
在线时间
8 小时
发表于 2018-12-14 15:32:08 | 显示全部楼层
看看ROM空间设置的是不是小了,我也遇到 了类似的问题,找了半天RAM的问题,后来发现ROM我只设置了32K,在新增了FAT后代码超过了,改成64K后就正常了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 21:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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