遇到segment .ubsct size overflow的错误

遇到#error clnk Debug\roewe.lkf:1 segment .ubsct size overflow的错误。

原因:导致COSMIC报告segment .ubsct overflow错误的根本原因是内存溢出, 相关原因分析如下。
(1) 变量存储空间结构。
STM8系列CPU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 。在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct,.bit,.share。
可见, 当segment .ubsct overflow错误出现时, 应该是低0~FF段空间出现溢出。cosmic默认将所有变量存储在zero page段, 如要将变量置于0x100~0x5FF的空间里, 需要将变量前添加@near的申明, 如同idata的功能。通常将所有全局变量都加上@near申明, 以放置在zero page外的存储空间
(2) 具体解析请参考:http://www.waveshare.net/article/STM8-3-1-10.htm

解决方法:在“工程选项”(project settings)中,确定“Settings”下树状列表中工程被选中点选右边“C Compiler”选项卡,在C Compiler中有一个“Category”下拉列表,选此下拉列表中”General”会在下面显示Memory Models中把选项Short Stack[+mods0]选择更改为Long Stack[+modsl]

注:本文章内容来源网络,由博主整理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值