STM8全局变量溢出问题解决
2016-01-27 10:27
316 查看
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外的存储空间
ir.lkf
# Segment Zero Page:
+seg .bsct -b 0x0 -m 0x2f -n .bsct
+seg .ubsct -a .bsct -n .ubsct
+seg .bit -a .ubsct -n .bit -id
+seg .share -a .bit -n .share -is
# Segment Ram:
+seg .data -b 0x2f -m 0x600 -n .data
+seg .bss -a .data -n .bss
@加上@near表示放在0x2f-0x600之间。
不加上@near表示放在0x00-0x2f之间。
# Object files list - section reserved
for STVD
#<BEGIN OBJECT_FILES>
Debug\alloter.o
Debug\comfunc.o
Debug\dev_ctrl.o
Debug\smart_plc.o
Debug\protocol.o
Debug\update.o
Debug\main.o
Debug\stm8s_flash.o
Debug\stm8s_tim1.o
Debug\stm8s_tim3.o
Debug\stm8s_tim4.o
Debug\stm8s_rst.o
Debug\stm8s_adc1.o
Debug\encode.o
Debug\task.o
Debug\state_synchronization.o
#<END OBJECT_FILES>
需要编译的文件放在上面
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外的存储空间
ir.lkf
# Segment Zero Page:
+seg .bsct -b 0x0 -m 0x2f -n .bsct
+seg .ubsct -a .bsct -n .ubsct
+seg .bit -a .ubsct -n .bit -id
+seg .share -a .bit -n .share -is
# Segment Ram:
+seg .data -b 0x2f -m 0x600 -n .data
+seg .bss -a .data -n .bss
@加上@near表示放在0x2f-0x600之间。
不加上@near表示放在0x00-0x2f之间。
# Object files list - section reserved
for STVD
#<BEGIN OBJECT_FILES>
Debug\alloter.o
Debug\comfunc.o
Debug\dev_ctrl.o
Debug\smart_plc.o
Debug\protocol.o
Debug\update.o
Debug\main.o
Debug\stm8s_flash.o
Debug\stm8s_tim1.o
Debug\stm8s_tim3.o
Debug\stm8s_tim4.o
Debug\stm8s_rst.o
Debug\stm8s_adc1.o
Debug\encode.o
Debug\task.o
Debug\state_synchronization.o
#<END OBJECT_FILES>
需要编译的文件放在上面
相关文章推荐
- C#计算时间秒数差
- Oracel JDBC URL 和 Driver 的获取
- 对象作为 handleEvent
- d3js+svg
- Android的死机、重启问题分析方法
- TCP解决connect函数的超时问题
- iOS原生项目中集成React Native
- 【三层架构】——C#代码分析
- 拣阅一:缘由和系统设计
- Module模式
- Amr and Chemistry---cf558C(暴力,加技巧)
- Source Multiplayer Networking【转】
- java内存分配问题详解
- Android WebView使用经验总结
- input 全新属性
- 超图对接伟景航osg数据使用说明
- iOS 插件开发
- Linux系统中的异常堆栈跟踪简单实现
- 生成android证书
- 【Java多线程】之二:synchronized详解