求助IAR编译器问题,大侠!!!来啊!

[复制链接]
5577|18
 楼主| hdp7891000 发表于 2012-3-1 12:23 | 显示全部楼层 |阅读模式
芯片Flash总共64K,编写代码增加功能。出现如下问题。1.使用芯片型号标准xcl文件,即flash始末总长64k,编译不通过,提示是flash空间不够。
2.更改xcl文件flash部分末地址,使总长为128K,编译通过。但是查看map文件发现总的代码量并未达到64K。
3.删除部分代码,使用64K版本的xcl文件和128K的xcl文件,发现编译出的代码量大小一样。

问:1.是不是iar编译器有什么措施,当代码量快接近总量时候,会强制使一部分空间不能利用,造成编译不通过?
      2.上面128K的xcl文件编译出来的代码总量未达到64K,可以下载。能用么?会有什么隐患么?
aozima 发表于 2012-3-1 13:22 | 显示全部楼层
本帖最后由 aozima 于 2012-3-1 13:24 编辑

TEXT RO RW(RW Data + ZI Data)
yewuyi 发表于 2012-3-1 13:25 | 显示全部楼层
1、不会
2、一般不能用,除非你的特殊
3、IAR的连接文件一般是选择默认路径,如果你想使用自己的连接文件,则需要手工指定XCL连接文件路径。
4、在IAR下设置完芯片型号建立项目后,一般会自动对照一个默认的XCL连接文件,如果你修改这个连接文件超越了芯片型号资源的限制,一般都是自找麻烦。
ayb_ice 发表于 2012-3-1 13:28 | 显示全部楼层
能选择对应的型号就不要改了有些芯片说有多少KFLASH,可能芯片自己会占用一点FLASH
 楼主| hdp7891000 发表于 2012-3-1 13:51 | 显示全部楼层
2# aozima
大哥,你这说的是什么意思啊?我算的是第一个和第三个的和。
64578 bytes of CODE  memory
  1 883 bytes of DATA  memory (+ 45 absolute )
    688 bytes of CONST memory


64578+688<65536.这样对么?
 楼主| hdp7891000 发表于 2012-3-1 13:52 | 显示全部楼层
3# yewuyi
我想知道产生这样现象的原因啊
 楼主| hdp7891000 发表于 2012-3-1 13:52 | 显示全部楼层
4# ayb_ice
这个或许吧
uc_stm32f050 发表于 2012-3-1 14:16 | 显示全部楼层
2# aozima
大哥,你这说的是什么意思啊?我算的是第一个和第三个的和。
64578 bytes of CODE  memory
  1 883 bytes of DATA  memory (+ 45 absolute )
    688 bytes of CONST memory


64578+688 ...
hdp7891000 发表于 2012-3-1 13:51


代码量是:64578+688
 楼主| hdp7891000 发表于 2012-3-1 14:24 | 显示全部楼层
8# uc_stm32f050
是啊,小于64K啊。为什么在问题1所说的情况下编译不通过啊,说Flash不够
ayb_ice 发表于 2012-3-1 14:31 | 显示全部楼层
这一点点就没有必要纠结了
 楼主| hdp7891000 发表于 2012-3-1 14:33 | 显示全部楼层
10# ayb_ice
现在的关键是代码升级不了啊。。。flash不够。换芯片事情就麻烦啦
原野之狼 发表于 2012-3-1 14:46 | 显示全部楼层
生成HEX文件再用jtag或isp下载  不要使用out文件
ayb_ice 发表于 2012-3-1 14:52 | 显示全部楼层
65536-(64578+688)=270字节
难道这270就够用了
 楼主| hdp7891000 发表于 2012-3-1 15:04 | 显示全部楼层
12# 原野之狼 编译就通不过,貌似还没到链接步骤。我现在估计缺少的那部分空间就是留给编译器塞调试信息的吧。。。
 楼主| hdp7891000 发表于 2012-3-1 15:07 | 显示全部楼层
13# ayb_ice
这个是问题2中所述,调整xcl文件为128k后得到的数据,也即修改后的代码量应该为64578+688
yewuyi 发表于 2012-3-1 17:15 | 显示全部楼层
1、如果担心那部分空间被编译器分配给了调试使用,这个很好处理,直接把编译模式切换到release再编译看看不就知道了吗?
2、编译连接不通过的原因,也可能是再额外加入的那些函数代码超过了余额空间
3、这类情况,只有代码没有语法等错误的话,一般编译能执行,基本都是在连接时失败,你可以看看连接前的结果。
原野之狼 发表于 2012-3-1 17:18 | 显示全部楼层
12# 原野之狼 编译就通不过,貌似还没到链接步骤。我现在估计缺少的那部分空间就是留给编译器塞调试信息的吧。。。
hdp7891000 发表于 2012-3-1 15:04

嘿嘿  非常有可能  看看有没有禁用相关功能的设置吧  
查查编译器官方文档  这东西靠谱  我是瞎猜的:lol
 楼主| hdp7891000 发表于 2012-3-3 10:27 | 显示全部楼层
18# yewuyi 改成release版解决了,一下少了十几K,不过那个问题的原因还是没找到,呵呵
 楼主| hdp7891000 发表于 2012-3-3 10:28 | 显示全部楼层
谢谢各位大侠,结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

322

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部