搜索
bottom↓
回复: 20

iccavr 如何编译大于64K的程序-提示'text' area size too large (>64K byt

[复制链接]

出0入0汤圆

发表于 2009-5-3 22:58:57 | 显示全部楼层 |阅读模式
我卸载安装了5个不同的icc版本(都已经破解为professional版本),我的程序有将近1万行 编译后程序通过并显示50%空间已用(从progisp.exe可以看出烧进去的将近64K), 可是再加几行,就会报警说flash空间超过64K,需要移除一部分代码到另外的C文件,我按照它的方法,把main.c割成2个文件,还是一样提示
'text' area size too large (>64K bytes). Please move some code to another file,网站上也有类似的问题,不过回答都是模棱两可的,都没有明确的说,普遍的答案是ICCAVR V6.31A 专业版(破解版)里边在 option里打中那个钩,不过试了效果还是一样,我现在用的是7。19版本 里边已经没这个勾了,不知有谁能为小弟指点一下,分C到底怎么跟分发啊,我用的是 m128

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-5-3 23:02:00 | 显示全部楼层
怪事

出0入0汤圆

 楼主| 发表于 2009-5-4 13:58:12 | 显示全部楼层
问题未解决,百度资料都找不到,希望就在此论坛了。

出0入0汤圆

 楼主| 发表于 2009-5-4 14:49:13 | 显示全部楼层
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=547848&bbs_page_no=1&sub_kind_id=1110&bbs_id=1000  
上面楼主出现的问题与我一模一样,为什么分了文件还不行  那个钩打于不打没有区别,也不知道打了是什么意思

出0入0汤圆

 楼主| 发表于 2009-5-7 08:03:39 | 显示全部楼层
还没有解决 顶上来 。盼望高手出现

出0入0汤圆

发表于 2009-6-5 22:19:36 | 显示全部楼层
lz解决了说一下,我和你一样

出0入0汤圆

 楼主| 发表于 2009-7-13 16:43:38 | 显示全部楼层
这件事情 越说越邪,经过我半年来百度加谷歌加本论坛,小白都是说没碰到过,高手都是不屑一顾,或者非常保守的说可能是版本问题,可能是哪里没设置好。。。而iccavr那个提示确又误导了很多人,大意是把一个文件分成几个小文件,居然有些人还说真的行了,这叫以邪诈邪,造成这个问题的根本原因是用M128的很少(他们会选择STM32),用M128flash超过64K的少之又少(我的机器是近1万行的C程序),其实据我理解
m128有128KB的flash没错,其实用于编程的空间只有64KB(8位机的理论最大寻址空间) 另外的64KB 是用来存放常量CONST的,比如用来存放液晶的点阵代码。 不知我的结论是否正确。请大家不赐吝教。

出0入0汤圆

发表于 2009-7-13 16:52:37 | 显示全部楼层
其实用于编程的空间只有64KB(8位机的理论最大寻址空间) 另外的64KB 是用来存放的,比如用来存放液晶的点阵代码。


那你程序小于64K,再放个几K的常量CONST(加起来大于64K).试试...

出0入296汤圆

发表于 2009-7-13 18:13:31 | 显示全部楼层
to 【6楼】 175891641
    不是这样的……M128所有存储器都可以用……我经常超过64K……建议楼上更换最新版本的ICC……通常可以解决问题。

出0入0汤圆

发表于 2009-9-7 12:17:33 | 显示全部楼层
我的也有这个问题,请问现在有人解决了吗

出0入0汤圆

发表于 2009-9-7 12:23:54 | 显示全部楼层
问了N多人,都没有解决办法,NND,换编译器了,不用这个了,建议大家不要用这个了,防止以后麻烦

出0入0汤圆

发表于 2009-9-7 13:05:16 | 显示全部楼层
我使用M128和那个27元的TFT屏时,我的一个数组CONST(其实是图片的数据)大于64K之后,就出过这样的错误,我缩小图片后就没有了。
建议楼主看看是不是有数组大于64K这类?

出0入0汤圆

发表于 2009-9-7 16:17:26 | 显示全部楼层
是这样的,我的芯片是ATMEGA1280的,ICCAVR7.14C ,  当代码量在50%时没有问题,之后在拷一些子程序,分别换个名子加到程序中,当加到超过53%时就出错了,就会'text' area size too large (>64K bytes). Please move some code to another file.所以,和数组没有关系,只是和代码量有关. 但这样,也没有超过128的容量啊,这样的HEX文件也就174K,变成BIN文件也就是54K

出0入0汤圆

发表于 2009-9-7 16:59:06 | 显示全部楼层
怪事儿了,现在的程序,在里面在加一句话,如i=0;就会提示上面这个错误, 但在前面 加 unsigned char test[4000]时,程序指示量会变高,从55%变到57%,编译可以通过,HEX文件也会增加,但把HEX变成BIN后,还是和以前一样,字节数没有变化的.哪位高手知道这是怎么回事儿?

出0入0汤圆

发表于 2009-9-7 17:22:20 | 显示全部楼层
winavr的gcc超过64k没有问题,只是不能设置断点跟踪仿真.

出0入0汤圆

发表于 2009-9-7 21:55:39 | 显示全部楼层
我以前的ICC AVR 6.31A有你说的问题(标准版),后来双龙发一串字符,变成专业版之后,就没这个问题。
估计是破解的专业版并非真正的专业版。

出0入0汤圆

发表于 2010-1-31 21:20:24 | 显示全部楼层
请大家帮忙解决。我怎么都搞不定啊。

出0入0汤圆

发表于 2010-2-3 11:03:38 | 显示全部楼层
有可能是定义的变量太多了,M128的SRAM只有4K,通常全局变量都放在这里的,一旦超出,就这样提示!

出0入0汤圆

发表于 2014-1-3 21:24:30 | 显示全部楼层
wuzhujian 发表于 2009-9-7 21:55
我以前的ICC AVR 6.31A有你说的问题(标准版),后来双龙发一串字符,变成专业版之后,就没这个问题。
估计 ...

你好 你是买的序列号?

出0入0汤圆

发表于 2014-1-3 21:25:49 | 显示全部楼层
你好  你后来怎么解决的啊

出200入2554汤圆

发表于 2019-7-10 19:11:16 | 显示全部楼层
偶然间看到了这个老坑,随即用手上的 7.22 试了试(和谐Prof版):

1. 单个文件疯狂复制 x++,M128下超过 50% 程序区就触发上述 too large 问题;

2. 上述工程,第一个文件占用 49%,再新添加一个 C 文件并复制 x++,可以超过 50%.

结论:ICCAVR7.22 和谐版可能不定期出现 64K 问题,尝试分割多个文件有一定解决的可能。
附上 MAP 文件,text 区就是抽风时不能超过 64K 的,现在分割成两个文件就没事了:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 14:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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