打印
[技术问答]

请问代码只占了空间的一半,但还是报溢出错误,是怎么回事呢?

[复制链接]
1004|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我选的是有128K空间的mcu。目前写的代码只有53K左右,但已经报溢出错误了,请问有可能是怎么回事呢?


目前报错:
section placement failed
unable to allocate space for sections/blocks with a total estimated minimum size of 0x1'02d1 bytes (max align 0x4) in <[0x0-0x1'0000]> (total uncommitted space 0xff41).



这个总代码量应该是只有50多K的空间吧?



程序的基本框架是拿官方的框架直接移值过来的,应该不会发生容量的设置错误吧.....?

拿的是官方的BSP包移植过来


虽然目前压缩了一下代码勉强过了错误,但怎么想这也没道理的阿.....代码才点空间的一半,请问有可能是什么原因引起呢?(还是我看的数值不对?)




使用特权

评论回复
沙发
zgjzgjkyo|  楼主 | 2023-7-28 17:31 | 只看该作者
现在看明白一些,应该是53+13>64K刚好接近那个0x10000的设定,所以报错了。

但还是没达到芯片的容量值阿......

使用特权

评论回复
板凳
zgjzgjkyo|  楼主 | 2023-7-28 17:42 | 只看该作者
本帖最后由 zgjzgjkyo 于 2023-7-28 17:44 编辑

继续研究.map文件,设定确实只有0-0x10000那么多。
但官方写的是0-0x1FFFF的阿,到底是那里设置数据出错了.....捉狂了......
(再细看连SRAM的空间分配也不对阿......)




使用特权

评论回复
地板
zgjzgjkyo|  楼主 | 2023-7-28 17:46 | 只看该作者
靠!是icf文件设置问题,到底为什么设定值这么小?


使用特权

评论回复
评论
dirtwillfly 2023-7-29 07:55 回复TA
@xch :有道理 
xch 2023-7-28 19:07 回复TA
所以说得解放台湾 
5
lemonboard| | 2023-7-29 11:11 | 只看该作者
楼主,你在keil里面的MCU型号是不是选错了?

使用特权

评论回复
6
lvyunhua| | 2023-7-29 12:46 | 只看该作者
路过学习了

使用特权

评论回复
7
caigang13| | 2023-8-1 08:23 | 只看该作者
和程序代码大小没关系,还是软件上有bug。

使用特权

评论回复
8
zgjzgjkyo|  楼主 | 2023-8-1 15:00 | 只看该作者
lemonboard 发表于 2023-7-29 11:11
楼主,你在keil里面的MCU型号是不是选错了?

没,我用的是IAR软件。上面的默认文件全是官方自带的库文件,所以我一直没怀疑这事,结果一查才发现这里设置错了......

使用特权

评论回复
9
jasontu| | 2023-8-3 10:23 | 只看该作者
之後bsp会用nulink 内建的icf档

使用特权

评论回复
10
averyleigh| | 2023-8-5 10:11 | 只看该作者
程序逻辑错误               

使用特权

评论回复
11
uiint| | 2023-8-5 10:22 | 只看该作者
单片机芯片可能存在损坏或错误的焊接,导致内存访问错误。

使用特权

评论回复
12
louliana| | 2023-8-5 10:32 | 只看该作者
须占 RAM 空间,RAM 就溢出了

使用特权

评论回复
13
backlugin| | 2023-8-5 10:37 | 只看该作者
代码的全局变量太多或全局的数组太大导致程序编译后RAM溢出

使用特权

评论回复
14
averyleigh| | 2023-8-5 12:14 | 只看该作者
溢出错误还可能与编译器或链接器的配置有关。

使用特权

评论回复
15
abotomson| | 2023-8-5 12:23 | 只看该作者
代码中存在未使用的变量或函数,导致编译出的程序过大,超出了单片机的存储空间。

使用特权

评论回复
16
pixhw| | 2023-8-5 12:33 | 只看该作者
除了代码空间,单片机还有数据存储空间

使用特权

评论回复
17
tabmone| | 2023-8-5 12:39 | 只看该作者
即使代码本身只占用了一半的空间,但代码中可能存在错误,导致溢出错误。

使用特权

评论回复
18
ingramward| | 2023-8-5 12:44 | 只看该作者
溢出错误可能与硬件问题有关。              

使用特权

评论回复
19
hearstnorman323| | 2023-8-5 12:50 | 只看该作者
如果使用的堆栈空间超过了可用的堆栈大小,就会发生堆栈溢出错误

使用特权

评论回复
20
primojones| | 2023-8-5 12:56 | 只看该作者
即使代码占用的Flash空间较小,但如果数据占用的RAM空间超过了可用的RAM大小,仍然可能导致溢出错误。

使用特权

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

本版积分规则

53

主题

213

帖子

4

粉丝