stm8使用总结--segment .ubsct size overflow
来源:互联网 发布:一听音乐软件下载 编辑:程序博客网 时间:2024/05/22 12:22
导致COSMIC报告segment .ubsct overflow错误的根本原因是内存溢出, 相关原因分析如下:
例如,如果使用的是STM8S105系列MCU,MCU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 。在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct,.bit,.share,各段的含义如下:
# .bsct段服务于定义在0页(地址小于0x100)以内需要初始化的全局变量(如@tiny char a = 9;)
+seg .bsct -b 0x0 -m 0x100 -n .bsct
# .ubsct段服务于定义在0页(地址小于0x100)以内不需要初始化的全局变量(如@tiny char b;)
+seg .ubsct -a .bsct -n .ubsct
# .bit表示位域段,定义后即可在程序中使用_Bool变量(如_Bool c = 1;),-id表示该段需要初始化。
+seg .bit -a .ubsct -n .bit -id
# 这是ST7时代(STM8是基于ST7发展而来的)由于物理堆栈小,速度慢,使用内存来模拟堆栈的变通手段。
+seg .share -a .bit -n .share -is
# .data段服务于定义在0页(地址大于0xFF)以外需要初始化的全局变量(如@near char d = 8;)
+seg .data -b 0x100 -m 0x1300 -n .data
# .bss段服务于定义在0页(地址大于0xFF)以内不需要初始化的全局变量(如@ near char e;)
+seg .bss -a .data -n .bss
# 段定义结束,下面放置的库及Obj文件中的变量、常量、程序就按照上面的规定进行分配。
当segment .ubsct overflow错误出现时, 应该是低0~FF段空间出现溢出。
cosmic默认将所有变量存储在zero page段, 如要将变量置于0x100~0x5FF的空间里, 需要将变量前添加@near的申明, 如同idata的功能通常将所有全局变量都加上@near申明, 以放置在zero page外的存储空间
转载地址:http://www.xuebuyuan.com/1731115.html
- stm8使用总结--segment .ubsct size overflow
- 遇到segment .ubsct size overflow的错误
- stm8s使用问题总结1——segment .text size overflow
- STM8L编程问题之segment .text size overflow
- IAR FOR STM8使用问题总结
- Temp segment 使用的一些总结
- (Manual) maximum segment size(MSS)
- overflow总结
- STM8问题总结
- STM8|STM32 看门狗使用
- stm8中断使用
- stm8使用atomthreads项目
- stm8使用printf问题
- iar for stm8初学总结
- stm8s使用总结--no default placement for segment .
- Microsoft.Excel.Formula.Size.Stack.Overflow
- overflow与VC stack size参数/stack:
- STM8
- 【Linux网络编程】基于TCP多进程(fork)版本客户端/服务器
- 欢迎使用CSDN-markdown编辑器
- NYOJ60 谁获得了最高奖学金
- js引用公用头部底部
- win8.1中xshell输入中文显示问号问题
- stm8使用总结--segment .ubsct size overflow
- 教你在iMindMap中添加背景图像
- 桥接模式
- gitlab的用户使用手册
- angular-ui-tree的使用总结
- Jenkins使用说明
- 密码存储中MD5的安全问题与替代方案
- 伪类选择器
- JNI 与AIDL