打印

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

[复制链接]
4649|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

使用特权

评论回复
5
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.这样对么?

使用特权

评论回复
6
hdp7891000|  楼主 | 2012-3-1 13:52 | 只看该作者
3# yewuyi
我想知道产生这样现象的原因啊

使用特权

评论回复
7
hdp7891000|  楼主 | 2012-3-1 13:52 | 只看该作者
4# ayb_ice
这个或许吧

使用特权

评论回复
8
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

使用特权

评论回复
9
hdp7891000|  楼主 | 2012-3-1 14:24 | 只看该作者
8# uc_stm32f050
是啊,小于64K啊。为什么在问题1所说的情况下编译不通过啊,说Flash不够

使用特权

评论回复
10
ayb_ice| | 2012-3-1 14:31 | 只看该作者
这一点点就没有必要纠结了

使用特权

评论回复
11
hdp7891000|  楼主 | 2012-3-1 14:33 | 只看该作者
10# ayb_ice
现在的关键是代码升级不了啊。。。flash不够。换芯片事情就麻烦啦

使用特权

评论回复
12
原野之狼| | 2012-3-1 14:46 | 只看该作者
生成HEX文件再用jtag或isp下载  不要使用out文件

使用特权

评论回复
13
ayb_ice| | 2012-3-1 14:52 | 只看该作者
65536-(64578+688)=270字节
难道这270就够用了

使用特权

评论回复
14
hdp7891000|  楼主 | 2012-3-1 15:04 | 只看该作者
12# 原野之狼 编译就通不过,貌似还没到链接步骤。我现在估计缺少的那部分空间就是留给编译器塞调试信息的吧。。。

使用特权

评论回复
15
hdp7891000|  楼主 | 2012-3-1 15:07 | 只看该作者
13# ayb_ice
这个是问题2中所述,调整xcl文件为128k后得到的数据,也即修改后的代码量应该为64578+688

使用特权

评论回复
16
yewuyi| | 2012-3-1 17:15 | 只看该作者
1、如果担心那部分空间被编译器分配给了调试使用,这个很好处理,直接把编译模式切换到release再编译看看不就知道了吗?
2、编译连接不通过的原因,也可能是再额外加入的那些函数代码超过了余额空间
3、这类情况,只有代码没有语法等错误的话,一般编译能执行,基本都是在连接时失败,你可以看看连接前的结果。

使用特权

评论回复
17
原野之狼| | 2012-3-1 17:18 | 只看该作者
12# 原野之狼 编译就通不过,貌似还没到链接步骤。我现在估计缺少的那部分空间就是留给编译器塞调试信息的吧。。。
hdp7891000 发表于 2012-3-1 15:04

嘿嘿  非常有可能  看看有没有禁用相关功能的设置吧  
查查编译器官方文档  这东西靠谱  我是瞎猜的:lol

使用特权

评论回复
18
hdp7891000|  楼主 | 2012-3-3 10:27 | 只看该作者
18# yewuyi 改成release版解决了,一下少了十几K,不过那个问题的原因还是没找到,呵呵

使用特权

评论回复
19
hdp7891000|  楼主 | 2012-3-3 10:28 | 只看该作者
谢谢各位大侠,结贴了

使用特权

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

本版积分规则

14

主题

322

帖子

4

粉丝