原创 RealView MDK链接时空间溢出解决方案

2008-8-1 13:55 4173 13 19 分类: MCU/ 嵌入式

RealView MDK具有强大的编译、链接功能。嵌入式设备拥有的资源往往有限,如果一个程序编译、链接之后的可执行文件大小略大于存储大小时,则不能生成可执行文件进行调试或固化到Flash中。


这样的情况在以前已经提到过了,但是还好,我们还有链接脚本,呵呵,在链接脚本中可以指定代码的存储布局,可以将代码段、只读数据段、可读写的数据段分别存放,甚至可以精确地指定代码放置的位置,这一点是很NB的,譬如说启动代码就必须放在可知型文件的开始位置。


在这种情况下我们一般不去从硬件上调整存储空间的大小(有些存储空间在片内,实在无法调整),而是去修改程序,试图将程序简化、将缓存减小、减少全局变量、少用大数组多用指针等等人工方法,有些时候这些方法很有效。但如果使用的开发工具是RealView MDK,则有一系列方法,可以达到这一目的,比起手动方法真的好方便。这些方法仅仅需要在编译、链接之前对某些配置做一些修改即可,使用非常简单。当然,如果将这些方法和人工修改程序的方法结合起来,效果更佳。有时单独使用以下三种方法中的一种即可解决问题,有时需要结合其中两种,甚至三种才能解决问题。


如果出现类似:


.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(_scanf_int.o).<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


的错误,解决方法有:


解决方法一:使用微库。


使用微库时,将以更精简短小的C库替代标准C库,减小代码大小,使用微库的方法如下:


打开Project->Options->Target,将Use MicroLIB前面的复选框勾上。如下图:


 


点击看大图


 


解决方法二:修改链接脚本。


修改链接脚本的方法有两种一种是直接修改分散加载文件,另一种是使用默认分散加载文件,这时仅需修改Project->Options->Target中的存储空间起始和大小。为了简单直观,本例中使用后者。在使用后者时,需要在Project->Options->Linker中将Use Memory Layout from Target Dialog前面的复选框勾上。如下图:


 


点击看大图


 


然后在Project->Options->Target中修改存储空间中只读部分和可读写部分的起始和大小,一般来说加大只读部分大小(该部分存放程序中的指令),而减小可读写部分的大小(该部分存放堆栈、局部变量等)。


根据错误提示可知,只读部分空间最少需要加大0x86c bytes,总空间固定16KB,相应地需要减小可读写部分大小。


点击确定之后,重新编译、链接即可。


 

文章评论6条评论)

登录后参与讨论

用户377235 2012-4-11 11:37

有谁有下载了这两个文件,请发份给我,谢谢,我的E-MAIL:LYPADSL@163.COM

xucun915_925777961 2010-11-8 22:21

呵呵,学习一下……

用户160037 2008-8-3 09:06

yes, 加油!

用户158440 2008-8-2 22:37

thanks~likee.

用户160112 2008-8-2 18:42

嗯,支持一下.

用户391193 2008-8-2 00:30

有一次我就遇到这样的情况,好久都没有解决。真是小处不容忽视。

用户154505 2008-8-1 17:02

确实,技术体现于细节啊!

用户89953 2008-8-1 14:51

不错,在编译的时候绝对有用。
相关推荐阅读
daiqiumiao_806246054 2011-01-06 13:57
linux下yum代理设置
    我们在安装好linux后,经常会使用yum来更新系统,但是系统默认的代理是国外的,国内一般的网络不能访问,这里讲解具体做法,把代理换成国内的。attachment download      ...
daiqiumiao_806246054 2010-12-30 09:48
【转】ORACLE 10g下载地址
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit...
daiqiumiao_806246054 2010-11-29 11:06
找工作的进来看
如下是我所有的开放性问题回答,希望对大家有帮助!1.      When choosing your first job/employer, what will you consider and wh...
daiqiumiao_806246054 2010-11-29 09:47
中长期规划---螺旋式上升方式修改完善职业之路
一、中长期职业发展的自我准备1、心态上随时做好准备 机会是给有准备的人的------“有准备”是你在做准备的过程中让“别人”认为你“有准备”!别人是包括你现在的老板和别的老板,以及你身边的人!他们对你...
daiqiumiao_806246054 2010-03-17 21:26
移动
分集方式传输损耗和距离关系光纤网络G网...
daiqiumiao_806246054 2010-03-17 09:40
GSM
特点  使用直观  GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低。  技术特点  1.频谱效率。由于采用了高效...
我要评论
6
13
关闭 站长推荐上一条 /2 下一条