打印

data segment too large出现这种错误提示如何修改?

[复制链接]
10137|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yin050232|  楼主 | 2012-11-27 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
南宫云明| | 2012-11-27 17:11 | 只看该作者
你是用什么做的,KEIL?

写单片机程序RAM分配很重要,写程序最好区分xdata,pdata,data,idata,code等,要不然很容易超出片内RAM

使用特权

评论回复
板凳
xuyaqi| | 2012-11-27 17:15 | 只看该作者
用的什么软件

使用特权

评论回复
地板
yin050232|  楼主 | 2012-11-28 08:21 | 只看该作者
嗯 keil

使用特权

评论回复
5
yin050232|  楼主 | 2012-11-28 08:24 | 只看该作者
但是 怎么区分xdata,data,pata,idata等?我怎么懂啊!有没有相关的资料能介绍我看看呢?

使用特权

评论回复
6
yewuyi| | 2012-11-28 08:32 | 只看该作者
data segment too large:

在使用C语言编写代码时,C编译器最终会把各个函数生成的目标文件连接成一个完全的HEX文件,而连接就必须要有连接的规则,于是在编译器和连接器中就约定了很多关键字用来说明各个目标文件到底应该对应哪个程序空间地址,出现以上的这个报错,一般要么是你代码中送入data segment 空间的数据量太大了,超过了连接文件中对其最大空间地址的限制,既然放不下,就肯定会报错。

xdata,data,pata,idata在大量的有关C51的书中都讲解了,如果你的大学课程中有单片机类课程的话,在教材多数都会相关内容,自己去查查吧。

使用特权

评论回复
7
yin050232|  楼主 | 2012-11-28 08:40 | 只看该作者
:victory:3Q

使用特权

评论回复
8
ayb_ice| | 2012-11-28 10:02 | 只看该作者
数据段太大了,超过范围

使用特权

评论回复
9
南宫云明| | 2012-11-28 10:04 | 只看该作者
Keil里面默认吧数据放在data里面,不过data的容量只有128字节,所以很容易超出。

在定义数组等比较占用RAM的地方时,最好用xdata,xdata的空间比较大,8051的有64K呢,大大于data的128字节

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

24

帖子

0

粉丝