您的位置:首页 > 其它

遇到segment .ubsct size overflow的错误

2017-06-12 22:13 239 查看
遇到#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]

注:本文章内容来源网络,由博主整理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐