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

?

导致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

时间: 2024-09-30 06:57:16

STM8S编译时内存溢出错误的解决办法的相关文章

安装Oracle客户端时,检查系统要求时状态为错误的解决办法

这是我自己安装oracle11g至win7的错误记录: 正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一实际结果: 6.1 我换了 10g,11g从32bit到64bit折腾了好多次,最后终于找到了解决的方法-- 看到那一个错误了么?实际上是因为配置文件引起的 找到 refhost.xml 文件(位置:database/stage/prereq/db,打开 refhost.xml 配置文件并找到 <CERTIFIED_SYSTEMS> 节点,接着在节点后面修改6.0

安装oracle时,检测系统要求时状态为错误的解决办法

在安装oracle时,检测系统要求时状态为错误的解决办法: 正在检查操作系统要求.... 要求的结果:5.0,5.1,5.2,6.0之一 实际结果:6.1      实际上是因为配置文件引起的      找到 refhost.xml 文件(位置:database/stage/prereq/db,打开 refhost.xml 配置文件并找到 <CERTIFIED_SYSTEMS> 节点,接着在节点后面修改6.0至6.1      <!--Microsoft Windows 7-->

bitmap 内存溢出OOM的解决办法分享

昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bitmap报的错.第一次调用都没问题,第二次再次调用就会报上面那个内存溢出的问题.而且有的手机报有的手机不报.研究了半天终于解决.首先分析了下原因,应该是图片占用的内存超过了系统虚拟机可分配的最大限制.不同手机可能分配的最大值不一样.后来找到解决办法主要是设置BitmapFactory.Options.

QtCreator (Visual C++ 编译器)编译时提示 warning C4819 的解决办法

用 QtCreator + Visual C++ 编译器 编译程序时经常会出现类似的警告. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失 这个警告我们可以忽略,但是编译大一点的项目时经常会提示几十个这样的警告,也挺烦人的. 其实解决办法也很简单,将我们的代码保存为 utf-8 带 BOM 格式的文件就可以了.QtCreator 保存文件默认是 utf-8 格式的,但是不带 BOM. 我们可以修改一下设置,让它

VMWare 10 Ubuntu 虚拟机启动时提示“内部错误”的解决办法

使用VMware新建虚拟机,启动时出现“内部错误”提示,放百度搜一下,是由权限问题造成:权限的问题,在桌面上右键单击VMWare的图标,选择“以管理员身份运行”. 在VMWare中,再次点击“启动客户机”,则可以正常...使用VMware新建虚拟机,启动时出现“内部错误”提示,放百度搜一下,是由权限问题造成:权限的问题,在桌面上右键单击VMWare的图标,选择“以管理员身份运行”. 在VMWare中,再次点击“启动客户机”,则可以正常... v.17173.com/playlist_187307

C#调用excel导出数据时提示000208D5-0000-0000-C000-000000000046错误的解决办法

错误信息:000208D5-0000-0000-C000-000000000046 Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.Application'. This operation failed because the QueryInterface call on the COM component for the interf

使用vs2015编译器编译libpqxx时发生的错误以及解决办法

d:\libpqxx-4.0\libpqxx-4.0\src\strconv.cxx(195): error C2440: "=": 无法从"std::basic_istream<char,std::char_traits<char>>"转换为"bool"d:\libpqxx-4.0\libpqxx-4.0\src\strconv.cxx(195): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运

phpExcel导出大量数据出现内存溢出错误的解决方法

phpExcel将读取的单元格信息保存在内存中,我们可以通过 代码如下:PHPExcel_Settings::setCacheStorageMethod() 来设置不同的缓存方式,已达到降低内存消耗的目的! 1.将单元格数据序列化后保存在内存中 代码如下: PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized; 2.将单元格序列化后再进行Gzip压缩,然后保存在内存中 代码如下: PHPExcel_CachedObject

ArcGIS 10.3编译旧版本Addin错误的解决办法

ArcGIS10.2下VS2010的AddIn,在10.3下在VS2012下重新编译出现missing ESRI ArcGIS Add-in SDK错误,导致无法生成esriAddIn安装文件. 该问题由于ESRI对VS2010和VS2012中SDK命名不一致造成的BUG. VS2010的工程文件中为ESRI.ArcGIS.AddIns.targets VS2012的工程文件中为ESRI.ArcGIS.AddIns.11.targets 解决方法1: 更改工程文件中相关命名 解决方法2:简单 直