决定只用IAR了

[复制链接]
14732|44
 楼主| machunshui 发表于 2009-10-10 21:40 | 显示全部楼层 |阅读模式
IAR for arm的代码率比KEIL MDK高很多.
决定只用IAR了
xinjie1023 发表于 2009-10-11 15:47 | 显示全部楼层
拭目以待。
Simon21ic 发表于 2009-10-11 19:58 | 显示全部楼层
不是以前测试都是MDK的代码效率高吗?
只是因为MDK是一个close的系统,所以偶才8用。。。
coreduo 发表于 2009-10-11 20:12 | 显示全部楼层
应该是mdk效率高
 楼主| machunshui 发表于 2009-10-12 08:18 | 显示全部楼层
比较一下两者编译的ucosII的就知道了。

IAR比MDK高效不是一点半点。

看看Micrium公司提供的UCOSII移植绝大部分是基于IAR
精益求精 发表于 2009-10-12 08:28 | 显示全部楼层
呵呵。。。
 楼主| machunshui 发表于 2009-10-12 08:33 | 显示全部楼层
以Micrium提供的基于lpc2148的ucosii的OS-Probe移植工程为例。(都是ARM指令集编译方式)

KEIL无优化编译:
Program Size: Code=39280 RO-data=400 RW-data=256 ZI-data=15992  

IAR无优化编译:
24 028 bytes of CODE  memory
14 761 bytes of DATA  memory
    550 bytes of CONST memory



KEIL 1级优化
Program Size: Code=31744 RO-data=288 RW-data=248 ZI-data=15992  

IAR低级优化:
22 640 bytes of CODE  memory
14 761 bytes of DATA  memory
    550 bytes of CONST memory


KEIL 2级优化
Program Size: Code=28244 RO-data=288 RW-data=248 ZI-data=15992  

IAR Medim 优化:
17 744 bytes of CODE  memory
14 774 bytes of DATA  memory
    550 bytes of CONST memory


KEIL 3级优化(最高级):
Program Size: Code=28308 RO-data=288 RW-data=248 ZI-data=15992  

IAR High 优化(最高级)
15 036 bytes of CODE  memory
14 738 bytes of DATA  memory
    550 bytes of CONST memory

可以代码效率方面,说差距巨大,
而对于精简指令MCU,代码大小,往往意味着执行速度大小
arm_fan168 发表于 2009-10-12 10:55 | 显示全部楼层
我把ICCAVR下的一个程序移植到IAR EWAVR下,code空间缩小了近一倍,有点夸张。
zhaoyu2005 发表于 2009-10-12 13:02 | 显示全部楼层
好像是keil的代码小,keil的好像是code+RO+RW,而IAR的好像是code+data
 楼主| machunshui 发表于 2009-10-12 14:10 | 显示全部楼层
KEIL小,LS怎么算的?
IAR的代码率比KEIL高效多的。

KEIL 3级优化(最高级):
Program Size: Code=28308 RO-data=288 RW-data=248 ZI-data=15992  

IAR High 优化(最高级)
15 036 bytes of CODE  memory
14 738 bytes of DATA  memory
    550 bytes of CONST memory

KEIL 代码段28308   常量数据段:288  RAM变量:16240 (RW+ZI = 248+15992)
IAR  代码段15036  常量数据段:550  RAM变量:14738

同为最高优化编译,
IAR高效太多了,
真不知说KEIL代码是怎么算的?
mohanwei 发表于 2009-10-12 14:10 | 显示全部楼层
比大小看bin最直接

也可以看“readonly  code memory ”和“readonly  data memory ”之和,通常情况下是KEIL稍微小一点。
 楼主| machunshui 发表于 2009-10-12 14:17 | 显示全部楼层
不存在要看BIN的问题,
根本没必要。

MAP文件清楚的显示了代码段的大小,
IAR高效很多。
 楼主| machunshui 发表于 2009-10-12 14:21 | 显示全部楼层
本帖最后由 machunshui 于 2009-10-12 14:28 编辑
比大小看bin最直接

也可以看“readonly  code memory ”和“readonly  data memory ”之和,通常情况下是KEIL稍微小一点。
mohanwei 发表于 2009-10-12 14:10


KEIL 3级优化(最高级):
Program Size: Code=28308 RO-data=288 RW-data=248 ZI-data=15992  

IAR High 优化(最高级)
15 036 bytes of CODE  memory
14 738 bytes of DATA  memory
    550 bytes of CONST memory


readonly  code memory:
KEIL 28308+288+248 = 28844字节
IAR  15 036+550          = 15586字节


IAR高效很多,
某些同志还是不肯接受啊,
难道连编译器也有FANS?
 楼主| machunshui 发表于 2009-10-12 14:24 | 显示全部楼层
本帖最后由 machunshui 于 2009-10-12 14:26 编辑

实际情况是KEIL差很多,(实际上是RealView编译器差很多)

UCOS编译代码大小关系到ucos本家公司的切身利益,
ucos本家公司的移植,
多用IAR最能说明问题了,
arm_fan168 发表于 2009-10-12 14:57 | 显示全部楼层
看bin文件的大小确实比较直接,但根据楼主的数据,keil的应该不会比IAR的小。
 楼主| machunshui 发表于 2009-10-12 15:21 | 显示全部楼层
Map文件和看BIN和不会有什么差异
Simon21ic 发表于 2009-10-13 22:01 | 显示全部楼层
本帖最后由 Simon21ic 于 2009-10-13 22:03 编辑

最近自己也测试了一下,确实IAR全面领先MDK。还好偶一直都是使用IAR的。
以一个项目代码,比较了MDK、IAR、Codesourcery G++ Lite
http://bbs.stmfans.com/viewthread.php?tid=5167&extra=page%3D1
不过对于我来说,MDK最大的问题是封闭的环境,并且免费版本不可用于商业项目的开发。

LZ对比过执行效率吗?
mcuisp 发表于 2009-10-28 01:44 | 显示全部楼层
用户喜欢IAR,但是芯片原厂喜欢MDK,呵呵。
wlq_9 发表于 2009-10-28 09:16 | 显示全部楼层
用户喜欢IAR,但是芯片原厂喜欢MDK,呵呵。
------------------------------------------------
没这种说法,几家半导体商的DEMO,都是IAR/MDK同时提供的.
而且有几家半导体商的其它芯片还是IAR开发的环境,要谈合作关系,肯定是IAR和半导体商关系密切的多.
每开发一个产品线,半导体商都是要付钱给这些开发工具商的.MDK目前还限于51/arm,IAR的手早就伸得老远了.
mcuisp 发表于 2009-10-28 09:47 | 显示全部楼层
呵呵,我的意思是MDK占FLASH多,芯片厂能卖高端些的芯片,当然喜欢啦。
要付钱给开发工具商?这个为啥?应该不一定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

3224

帖子

4

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