码迷,mamicode.com
首页 > 其他好文 > 详细

STM8S编译时内存溢出错误的解决办法

时间:2014-07-30 00:28:12      阅读:1390      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   os   strong   ar   size   har   

?

导致COSMIC报告"segment .ubsct overflow"错误的根本原因是内存溢出, 相关原因分析如下:

?

1、变量存储空间结构

?

STM8S105系列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外的存储空间

?

但是一个个变量不是太麻烦了,经过仔细查阅资料,发现在project settings 里找到ccompiler 改memort models为long stack即可通过编译 。

?

最后一个方法在stm8s903k3上没有通过,可以采用@near的方法,选择一些使用频率低的变量,在其前面加 @near

?

STM8S编译时内存溢出错误的解决办法,布布扣,bubuko.com

STM8S编译时内存溢出错误的解决办法

标签:style   color   使用   os   strong   ar   size   har   

原文地址:http://www.cnblogs.com/derek32/p/3876532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!