8564|18

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

这是怎么回事 [复制链接]

segment .bsct size overflow (911) segment .ubsct size overflow (436)
代码编译后出现以上错误
高手帮分析下,由于本人是新手,不知这个出错在哪?
代码可以保证在32K以内(我使用的是STM8S105C6)
此帖出自stm32/stm8论坛

最新回复

                                 借avr-size来显示stm8代码大小。 Post-Build加上: avr-size $(OutputPath)$(TargetSName).elf avr-size Debug\demo.elf    text    data     bss     dec     hex filename   27580       7      92   27679    6c1f Debug\demo.elf  详情 回复 发表于 2009-9-24 14:42
点赞 关注
 

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 这个是RAM冒了,不是FLASH的容量不够 不知道你用什么样的MEMORY MODEL,试试STACK LONG. 在project setting 里面改
此帖出自stm32/stm8论坛
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢,按照你方法解决了问题,但是出现了bss size overflow
这又是什么原因!谢谢大侠
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
大侠们,帮帮小弟,看看是什么原因引起的啊?
segment .bss size overflow
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
memory model还用stack long, 然后看segment .bss size overflow了多少个(假设n个),只要n<255,就比较好办。
办法是:挑n个全局变量,将它们的定义和声明前面添加 @tiny ,这样将把这些变量定义在0~0xff中。

说明:
stack long默认将变量放在0x100以后(@near)。stack short默认将变量放在0xff以内(@tiny)。如果变量比较多,单放在那边都不够,可以强行指定其存放空间(加@tiny或@near)。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
非常感谢你的帮助,问题的解决办法应该 就是这个了,但是我想多问一句,这个变量的数量有限制吗?因为我的一个系统内肯定有很多变量的啊。
还有就是只要是全局变量都要进行@tiny 或是@near定义?
为什么@tiny  u8 g_temp[30];就会出错,说编译不成功
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
变量以@near定义表示要求分配该变量在0x0100~0xFFFF之间的存储空间。

变量以@tiny定义表示要求分配该变量在0x0000~0x00FF之间的存储空间。

不管哪段存储空间,大小都是有限制的。因为你之前在@near空间分配的变量太多,所以5楼才建议你挑几个变量放到@tiny空间,但如果你在@tiny空间分配太多变量,当然编译不能成功。
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 STM8号称Flash是线性地址分配,为什么COSMIC偏要搞出一个分页,搞得客户问我为什么RAM、ROM这么大,编译器为什么不会学会自动分配空间,我无语了。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
STM8继承了ST7的指令系统,在这套指令系统中采用不同的指令操作地址段0x0000~0x00FF(tiny)和地址段0x0100~0xFFFF(near),操作处于tiny变量的指令比操作near变量的指令具有更高的效率(指令长度短、执行时间短),位操作指令也只能作用于tiny变量。

这就是为什么要分段的原因。

当然如果编译器足够聪明,它可以自动地把最常用到的、需要进行位操作的变量分配到tiny段,把其它变量分配到near段,可惜这个编译器做的不够好,需要用户的人工干预。
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 我的项目以前是用三星的830,现在移植到ST这颗芯片上发现RAM不够啊,同样是2K的最高容量,这是什么原因啊,所以问问大侠们:怎样看代码用了多少RAM?还有是否有哪里设置的原因?
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 .map文件中可以看到变量的分配情况和存储器(RAM和Flash)分配的数目。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 [img][/img]
此帖出自stm32/stm8论坛
 
 
 

回复

11

帖子

0

TA的资源

禁止访问

13
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 补充,现在.MAP文件都没有产生啊,所以我也无法看内存的分配情况
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 你的堆栈是不是设置的太大了,占用了很多RAM空间?
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

16
 
谢谢,今天在同事的帮助下解决了问题!
现在原因写在这,希望和我一样的菜鸟不会犯这个错误。
其实就是:如何将一个表放到ROM里去。
解决:
keil有code关键字方便的指定;STVD中用const,它会自动优化到rom里面。

这个东西其实在其他的论坛上有过发表,一直没注意!
呵呵,谢谢这几天版主和大侠们的帮助!
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

17
 
const

const 应该是C的关键字,跟IDE(STVD)以及C编译器没什么关系。
此帖出自stm32/stm8论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

18
 
10楼:怎样看代码用了多少RAM?
在debug的.map文件中可以看到,而且要计算,这也是cosmic讨厌地方之一!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

19
 
借avr-size来显示stm8代码大小。
Post-Build加上:
avr-size $(OutputPath)$(TargetSName).elf

avr-size Debug\demo.elf
   text    data     bss     dec     hex filename
  27580       7      92   27679    6c1f Debug\demo.elf
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表