打印
[STM8]

STM8L152R8 超过32KB之后代码编译出错问题

[复制链接]
1929|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天再请教个问题

我在使用 STM8L152R8 做的一个项目,这颗芯片FLASH应该是 64KB,IAR查看 lnkstm8l152r8.icf 文件,有如下定义:
define region NearFuncCode = [from 0x8000 to 0xFFFF];
define region FarFuncCode = [from 0x8000 to 0xFFFF]
                          | [from 0x10000 to 0x17FFF];
define region HugeFuncCode = [from 0x8000 to 0x17FFF];

但是,我在程序中,如果编译代码超过 32KB,则编译出错,提示:
Error[Lp011]: section placement failed
          unable to allocate space for sections/blocks with a total estimated minimum size of 0x8986 bytes in <[0x008000-0x00ffff]> (total uncommitted space 0x7f80).

如果调高优化级别,代码量控制在32KB以内,则可编译通过。

在项目设置, Optione->Target->Device 选择 stm8l152r8; stm8l152.h 中,选择 #define STM8L15X_HD
不知道还有什么可能导致此错误? 还是会不会我买到的芯片有问题呢?
沙发
chenpads| | 2015-10-26 11:00 | 只看该作者
我遇到过程序里有数组类型定义小了时会出现这种情况,用了“__huge”就不会出错。

使用特权

评论回复
板凳
wyde518| | 2015-10-26 12:43 | 只看该作者
看看是不是这个原因

无标题.jpg (173.48 KB )

看看是不是这个原因

看看是不是这个原因

使用特权

评论回复
评论
liuguobing 2015-10-26 16:02 回复TA
多谢,我用的 IAR,不过也是一样的,Code模式改为 Large 就可以编译通过了。 
地板
liuguobing|  楼主 | 2015-10-26 16:27 | 只看该作者
chenpads 发表于 2015-10-26 11:00
我遇到过程序里有数组类型定义小了时会出现这种情况,用了“__huge”就不会出错。 ...

数组这么加可以,不过我用的数组比较少,函数就不知道怎么弄了:(

使用特权

评论回复
5
wahahaheihei| | 2015-10-26 19:11 | 只看该作者
Error[Lp011]: section placement failed
          unable to allocate space for sections/blocks with a total estimated minimum size of 0x8986 bytes in <[0x008000-0x00ffff]> (total uncommitted space 0x7f80).
是不是没有**彻底。

使用特权

评论回复
6
643757107| | 2015-10-26 22:06 | 只看该作者
这个问题真的要考虑是不是没有**彻底,32k是没有**的使用大小

使用特权

评论回复
7
309030106| | 2015-10-26 22:31 | 只看该作者
Code模式改为 Large 就可以编译通过了

为什么会这样,是代码过长吗

使用特权

评论回复
8
whyhhh| | 2015-12-24 08:44 | 只看该作者
楼主解决了吗?

使用特权

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

本版积分规则

14

主题

86

帖子

4

粉丝