找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5296|回复: 7
打印 上一主题 下一主题
收起左侧

Keil构建的时候出现error C249: 'DATA': SEGMENT TOO LARGE

[复制链接]
跳转到指定楼层
楼主
本帖最后由 dlk48920101 于 2021-7-20 06:14 编辑

麻烦问一下,编译通过,构建的时候提示这个

是SYSTEM.C这个文件太大了么?网上搜的办法都不能解决。我在怀疑是keil设置问题么?怎么查看代码有多大?
开发板的芯片是89c52。应该有8K512字节。
查了查移植的SDK说明占用的大小,感觉应该够用了啊。
我上网搜到了个信息,说如果程序中函数没被调用keil会把它定义为中断服务函数,然后都存放在DATA里的原因么?所以我找到那些SDK中没调用过的函数,然后把他们都注释掉就行了对么?

多谢几位兄弟,问题基本解决了。我这里总结下,让以后遇到的兄弟们看到。
1、首先KEIL必须要破解,不然只能编译2KB的程序。
2、确实要在图中那个位置选XDATA,因为KEIL默认编译的时候不选XDATA或者PDATA。那么程序里用到的变量只会存放在RAM的前128字节,肯定是不够用的。勾选后就会占用整个的512字节。(我查资料再结合我的理解的好像是这样,或许不对,但是应该出入不大)
3、附加一个,勾选XDATA后从逻辑上改变了变量存放的位置,所以调用不如原先快了(有些时候程序不能正常运行,我怀疑是读取速度慢了后变量还没更改完就执行了)。可以在定义变量的时候在关键字和变量名中间加上data或者idata来改变某个变量的存放位置来提高读取速度。(从汇编上可以看出调用的代码不同),但还是得注意
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2021-7-18 23:56 | 只看该作者




回复

使用道具 举报

板凳
ID:911621 发表于 2021-7-18 23:58 | 只看该作者

试过了,不行的。
回复

使用道具 举报

地板
ID:911621 发表于 2021-7-19 00:05 | 只看该作者

对了,我看到你的图跟我的不一样。你是怎么导入的STC89C52RC这个芯片的?我们导入的方式不同所以不一样?你看我的这个界面箭头的两个选项都是空的没有内容。不能选。
回复

使用道具 举报

5#
ID:911621 发表于 2021-7-19 00:13 | 只看该作者

不显示是汉化包的原因。没问题了。但是确实用XDATA还是不行。
回复

使用道具 举报

6#
ID:161164 发表于 2021-7-19 09:18 | 只看该作者
dlk48920101 发表于 2021-7-19 00:13
不显示是汉化包的原因。没问题了。但是确实用XDATA还是不行。

会出什么提示?
回复

使用道具 举报

7#
ID:839438 发表于 2021-7-19 10:25 | 只看该作者
还有个问题,要开看下你的keil有没有完全破解,我前段时间也出现过类似问题,最后重新破解就好了
回复

使用道具 举报

8#
ID:123289 发表于 2021-7-19 13:37 | 只看该作者
如果硬件用的是89C52,而程序代码长度的确超出的范围。
那么是必须设法优化程序,或换芯片型号的。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表