edaworld 发表于 2010-5-18 12:28:05

据说IAR开发arm比keil方便,没有用过IAR,是这样吗?用过的大虾给说下如何?

据说IAR开发arm比keil方便,没有用过IAR,是这样吗?用过的大虾给说下如何?我主要用keil+jlink来调试arm7了!

wanglituan 发表于 2010-5-18 12:47:52

我 也想了解

ShawnLinson 发表于 2010-5-18 12:51:19

这两个其实都差不多,
IAR多了一些调试插件(uCOS、Threadx),
Keil可以做软件直观的IO口的仿真;
楼下继续。。。

418425051 发表于 2010-5-18 12:53:48

重IAR转向KEIL的飘过。。。。

tangwei039 发表于 2010-5-18 13:12:50

回复【楼主位】edaworld 笨笨小熊
-----------------------------------------------------------------------

lz能不能发一份,keil与arm7教程。谢谢,这方面资料少

xzbx 发表于 2010-5-18 14:40:42

没有好与不好,只有会与不会。

Excellence 发表于 2010-5-18 14:42:22

还是KEIL(MDK)好。

schwarz 发表于 2010-5-18 16:56:41

IAR代码执行效率比MDK高多了,而且比MDK稳定。

bbandpp 发表于 2010-5-18 17:00:49

IAR单键就可完成编译,下载。mdk需要2个按键。

nazar 发表于 2010-5-18 17:05:30

没有关系的,用熟了,用什么都一样。

没有足够的理由,不要折腾工具,够用就好。

只会keil,不会iar。

minux 发表于 2010-5-18 18:15:17

en, IAR的编译器是最好的……

haeha 发表于 2010-5-18 18:31:18

如果两者都用熟的话应该区别不大吧。不过IAR能设置的东西更多一些,有时候会很有帮助

june4th 发表于 2010-5-18 18:32:39

我也觉得IAR是最好的,很多人没做过项目,没做过对比,仅仅听到MDK是原厂的,就产生了盲从。

fanwt 发表于 2010-5-18 20:38:27

IAR,MDK都是双鞋子,跑的快不快和鞋子关系不是很大,关键看自己,不是所有的人穿上刘翔的鞋子就能跨栏的

zhwm3064 发表于 2010-5-18 21:30:28

我穿刘翔的鞋子跑 肯定比 我穿自己的鞋子跑的快。
有没有人比较一下。它们俩个编译器 谁 生成 的代码 少。

june4th 发表于 2010-5-19 03:04:56

Micrium.com上面下载的uc/osii2.86在STM32B-EVAL上面的Port。IAR和MDK都是最高优化:
MDK4.11编译结果
Program Size: Code=33466 RO-data=4870 RW-data=196 ZI-data=9296
".\rvmdk\STM3210B-EVAL-OS-Probe.axf" - 0 Error(s), 2 Warning(s).
IAR5.412编译结果
14 412 bytes of readonlycode memory
   5 616 bytes of readonlydata memory
   8 636 bytes of readwrite data memory

结论:IAR是宝马,MDK是老牛破车。

june4th 发表于 2010-5-19 03:12:24

点击此处下载 ourdev_555184.rar(文件大小:2.80M) (原文件名:Micrium.rar)
Micrium的官方代码在这里,原IAR和MDK项目都是较低优化等级,为了公平起见都开到最高优化等级,其他未作改动,感兴趣的童鞋可以自行比较一下。

Excellence 发表于 2010-5-19 08:15:02

我也觉得IAR是最好的,很多人没做过项目,没做过对比,仅仅听到MDK是原厂的,就产生了盲从。
=======================================================================================
搞笑。

fetish 发表于 2010-5-19 08:51:17

MDK不仅效率低下,而且Bug还挺多。Printf函数导致死机一直莫名奇妙的存在,勾microlib的解决方法有的版本好用有的版本就不行,真不知道他们是怎么搞的。

eworker 发表于 2010-5-19 09:05:02

回复【18楼】fetish
mdk不仅效率低下,而且bug还挺多。printf函数导致死机一直莫名奇妙的存在,勾microlib的解决方法有的版本好用有的版本就不行,真不知道他们是怎么搞的。
-----------------------------------------------------------------------

能详细的说说?

eworker 发表于 2010-5-19 09:06:21

转:

RV下使用printf时要加多RETARGET.C

以前CARM下只要加个putchar或getchar就行,现在要加个RETARGET.C,,,,这个文件在arm\Startup 下
这个文件中有个#pragma import(__use_no_semihosting_swi)   // disable semihosting
如果这没有这句就会死在SWI_Handler   B       SWI_Handler这句

具体的大家可以试试..

其实用新的编译器,一定要看一下帮助,这个问题浪费了我20分钟......

eworker 发表于 2010-5-19 09:08:47

关于在MDK中使用 printf 函数,可以软件仿真,不能硬件仿真的解决

http://blog.csdn.net/laorenshen/archive/2009/11/07/4782339.aspx

edaworld 发表于 2010-5-19 09:24:03

说了这么多 看来仁者见仁智者见智啊

fetish 发表于 2010-5-19 09:26:32

re【20楼】:
MDK只要用到了printf()函数,加载到目标CPU上面的就是一堆乱码,main()函数都进不去,跟你说的无关。
但是某些版本可以通过勾上use microlib解决掉。我已经对MDK彻底绝望了,所以那个版本好使哪个不好使记不清了。

你还可以看看15楼的测试结果,MDK生成的代码居然是IAR生成代码量的2倍,这已经不能用垃圾来形容这个编译器了。

垃圾中的垃圾!

qwerttt 发表于 2010-5-19 11:16:31

回复【23楼】fetish
-----------------------------------------------------------------------

2倍就是垃圾?你开发个IDE、编译器看看是不是垃圾

看来你的水平一定是很垃圾

fetish 发表于 2010-5-19 11:22:56

回复【24楼】qwerttt
回复【23楼】fetish
-----------------------------------------------------------------------
2倍就是垃圾?你开发个ide、编译器看看是不是垃圾
看来你的水平一定是很垃圾
-----------------------------------------------------------------------

MDK的粉丝真不争气啊,现在只能靠抒情来挺这个垃圾乐。./emotion/em006.gif
可惜的是,搞工程靠的是理论和实践,抒情是没有用的。

Excellence 发表于 2010-5-19 11:26:16

不能光比代码大小。
否则大家都用汇编算了。
用什么VC,BCB。。。

ilcvm 发表于 2010-5-19 11:27:34

最好也比比速度。看一些国外测试,RVCT比GCC快不少。但好像没有跟IAR比较的测试。

Excellence 发表于 2010-5-19 11:29:36

还用一个问题就是:不是每个人都用UCOS。
编译一般的无OS程序,IAR编译的代码比KEIL少一些,但达不到2倍。
我测试了一下:IAR 297K .KEIL320k。。。BIN文件。
对我来说,无所谓,因为FLASH 512K ...

ilcvm 发表于 2010-5-19 11:37:10

另外,最好找一些没有针对编译器优化过的代码,我感觉UCOS这类小系统主要应用在低端单片机,IAR无疑是这个领域的王者,其代码很有可能有针对IAR进行过优化。

就我自己写过的CM3和ARM7代码而言(10-30K,没用任何C库,单片机的库也是源码编译),用最高代码优化选项下MDK和IAR编译出来的大小不相伯仲,差别在5%以内。GCC则大20%左右。

lgl_debug 发表于 2010-5-19 12:03:31

不想多加评论,看一下这个帖子.

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3896257&bbs_page_no=1&search_mode=4&search_text=lgl_debug&bbs_id=9999

MDK的优化是有分类的,当你用全是自己定义函数时,你不用MicoLIB程序会小几百字节到1~2K不等,这要看你和程序大小了.
还有实时性优化和函数是否多次调用的函数进行优化.
刚又式了一下,最大与最小的比较如下,用的是KEIL的例子:
D:\Keil\ARM\Boards\Keil\MCBSTM32\USBMem

MicoLIB 关
优化等级 -O0

Program Size: Code=7118 RO-data=4722 RW-data=68 ZI-data=8908

MicoLIB 关
优化等级 -O3
Program Size: Code=5366 RO-data=4722 RW-data=68 ZI-data=8908

MicoLIB 开
优化等级 -O3
Program Size: Code=5118 RO-data=4722 RW-data=68 ZI-data=8812

MicoLIB 开
优化等级 -O0
Program Size: Code=6870 RO-data=4722 RW-data=68 ZI-data=8812

还有速度方面的优化就这样说没有什么意思,要用示波器看实际运行的.

IAR 是分Size和Speed优化的,还有什么循环,函数优化....用的也不是很多.

Cliff 发表于 2010-5-19 12:06:15

回复【15楼】june4th
micrium.com上面下载的uc/osii2.86在stm32b-eval上面的port。iar和mdk都是最高优化:
mdk4.11编译结果
program size: code=33466 ro-data=4870 rw-data=196 zi-data=9296   
".\rvmdk\stm3210b-eval-os-probe.axf" - 0 error(s), 2 warning(s).
iar5.412编译结果
14 412 bytes of readonlycode memory
   5 616 bytes of readonlydata memory
   8 636 bytes of readwrite data memory
结论:iar是宝马,mdk是老牛破车。
-----------------------------------------------------------------------

我也编译了一下,Realview MDK 3.50
你楼下的工程,打开后更改配置:
1、优化选 -O3(原来 -O1)
2、去掉按时间优化(原来 -Otime)
3、选 One ELF Section pre function
4、选 microlib
最后结果是:
Program Size: Code=15144 RO-data=4892 RW-data=196 ZI-data=9200

Cliff 发表于 2010-5-19 12:10:20

所以呀,差距是绝对不可能这么大的,MDK毕竟也是ARM家的,差距要真这么大,ARM也别出编译器了

Cliff 发表于 2010-5-19 12:11:37

另,IAR 对空间的优化确实做得好,好到近乎变态的地步了
我常用的是 AVR
看它生成的代码,简直就是恐怖啊

lgl_debug 发表于 2010-5-19 12:36:48

回【31楼】 Cliff ,

谢谢你提供的参考.

IAR
14 412 bytes of readonlycode memory(CODE)
   5 616 bytes of readonlydata memory(RO)
   8 636 bytes of readwrite data memory(RW+ZI)

CODE+RO=14 412+5 616=20028

MDK
Program Size: Code=15144 RO-data=4892 RW-data=196 ZI-data=9200
CODE+RO=15144 +4892 =20036

其实相差又有多少呢?
其实用的顺手就可以了,MDK用多多Flash,RAM的区选择,可以单个文件设定的.
在高效运行模式可以把一个C 文件写到一个RAM去运行,那种效率是无法说的,用LPC2210,44B0的话,就知道了.
IAR只有可能写预编译实现在,烦都烦死了.还不一定.

Cliff 发表于 2010-5-19 12:56:49

补充:用了 MDK 411
Program Size: Code=15232 RO-data=4892 RW-data=196 ZI-data=9200

qwerttt 发表于 2010-5-19 13:13:30

回复【25楼】fetish
-----------------------------------------------------------------------
MDK的粉丝真不争气啊,现在只能靠抒情来挺这个垃圾乐。
可惜的是,搞工程靠的是理论和实践,抒情是没有用的
-----------------------------------------------------------------------


你的代码有多少K?你做过产品吗?还工程
就靠优化你的工程就能完成,切,一边玩去
别在这人云亦云

再说你了解IAR优化吗,一个看不懂汇编的人,还说IAR的优化
真搞笑fetish同学

fetish 发表于 2010-5-19 13:18:30

回复【34楼】lgl_debug
其实用的顺手就可以了,MDK用多多Flash,RAM的区选择,可以单个文件设定的.
在高效运行模式可以把一个C 文件写到一个RAM去运行,那种效率是无法说的,用LPC2210,44B0的话,就知道了.
IAR只有可能写预编译实现在,烦都烦死了.还不一定.
-----------------------------------------------------------------------

IAR选用不同的ICF文件即可选择Flash和RAM区,修改ICF文件就可以指定位置。

【36楼】:
摆事实讲道理我可以跟帖,胡乱咒骂只能丢MDK粉丝的脸,没什么别的道理,跪安吧!

Cliff 发表于 2010-5-19 13:39:13

回复【37楼】fetish
回复【34楼】lgl_debug
【36楼】:
摆事实讲道理我可以跟帖,胡乱咒骂只能丢mdk粉丝的脸,没什么别的道理,跪安吧!
-----------------------------------------------------------------------

你喜欢IAR可以,但是不要通过贬低MDK的方式
是你先大言不惭,说什么“MDK生成的代码居然是IAR生成代码量的2倍,这已经不能用垃圾来形容这个编译器了。垃圾中的垃圾!”
既然你可以骂,为什么又不允许人家骂你呢?
还是请你先搞懂为什么“MDK生成的代码居然是IAR生成代码量的2倍”

或者,你是否能够回应36楼,说出他“胡乱”的依据?比如一开始的问题:你的代码有多少K?你做过产品吗?
如果你能回答,就是对36楼最好的反击

qwerttt 发表于 2010-5-19 13:51:49

回复【37楼】fetish
-----------------------------------------------------------------------

这种比较,已经不是热门话题,任何人都可以比较IAR和MDK的优化性能
但选择一个IDE作为产品开发,不是只看优化。

我可不是MDK的粉丝,我用IAR的时候你还在学电路吧
只是我发现fetish说2倍尽然是垃圾,你是在误导初学的人,这么浮躁的愤青
你的摆事实讲道理就是2倍代码的关系吧,只见树叶不见森林

结贴,没必要在往下讨论,踏实做好产品

tiancaigao7 发表于 2010-6-21 15:56:28

结果到最后也没有说明白为什么MDK生成的代码是IAR的两倍。楼上的发了那么多牢骚,真正有用的一句也没有讲出来。哎。

edaworld 发表于 2010-6-21 16:43:40

O(∩_∩)O哈哈~,还是用mdk了,方便,熟悉,多谢楼上各位了,没想到惹出这么多话题,啊哈哈!

southpolefirn 发表于 2010-6-21 19:31:49

ads1.2又何如?

Swordman 发表于 2010-6-21 21:21:42

IAR有几个问题

1.编译速度比较慢.有时候容易死掉需要有比较好配置的机器才能很好的工作.
2.仿真起来不太好.像cortex/ucos无法仿真任务切换.试了下mdk.仿真好像是很强大.

marx 发表于 2010-6-21 22:19:55

楼上你说反了,MDK不仅编译出来的代码执行速度慢,而编译时间也要慢得多。同样一个ucos项目,在Athlon1700+的机器上,MDK全部编译要50秒左右,而IAR不到30秒就可以完成。
仿真方面,MDK只支持一种RTOS——他自己的RLARM,其他所有RTOS都不支持。而IAR支持的RTOS就太多了,就仿真这个层面上,MDK依然不及格。而RLARM是MDK独有的,你用了它就要吊死在MDK这棵树上了,同样的IAR的PowerPac也是这个毛病。

ilovezeno 发表于 2010-6-21 22:36:08

只说IDE的程序编辑器,这两家做的都是不及格的水平.......就不能学学eclipse,集成个能用的编辑器么.....

real_zyf 发表于 2010-6-29 01:42:16

呃,最近看到有人做了个比较新的横向对比:
http://www.mcuzone.com/MAN/MAN3004A_CH.pdf


这对比用的版本都比较新,里面MDK已经用rvds4的编译器了,就DMIPS的成绩来看,keil最好

usecool 发表于 2010-6-29 11:10:32

MDK的好处是可以和gcc结合,源码级调试。
比如说要调试ecos,可以用MDK

taoist 发表于 2010-6-29 11:28:24

to 【44楼】 marx ●█〓

PowerPac就是embos。。。呵呵


to 【45楼】 ilovezeno 鸣

eclipse就不能学学IAR和MDK少占点资源。。。呵呵


其实没啥好比的,喜欢用哪个就用哪个。。。一般的应用都可以实现。。。
我是喜欢用IAR,不论用51,AVR,AVR32,SAM8,ARM,430,78k,H8,ColdFire都是统一界面。。。

最不喜欢就是ARM公司自己搞的编译器。。。
从SDT2.5,SDT2.51,ADS1.2,到realview2.0,2.1,2.2,3.0,直到4.0,例程少得可怜,而且稳定性极差,界面乱78糟。。。唯一可以show的就是它的编译效率。。。这个没办法,谁让人家是亲生的呢。。。

另外,我个人觉得大家技术讨论,摆事实讲道理,没必要开骂嘛,对吧。。。

dr2001 发表于 2010-6-29 16:20:03

回复【44楼】marx●█〓
-----------------------------------------------------------------------

RTOS的支持,如果你指代码编译,那么,基于标准C的,两家差不多。
不太清楚IAR是否支持C90,MDK v4是已经支持的了。这个是末节。

如果说在调试的时候查看RTOS状态,那么这个是IDE插件开发的问题。
IAR自己不做RTOS,有更开放的接口,所以大家都写插件给他;Keil自己开发RTOS,自然不太乐意让别人的RTOS插件加入进来。

IAR好在统一的界面,所有芯片系列都是那个样子开发。Keil就是绑在ARM上。

编译器和IDE是两个概念。不好混起来讨论。


编辑补充:
IAR基本上专注于编译器,别的都是合作出去,所以,支持的东西会广泛,而且比较好。
Keil调试工具,编译器,RTOS,什么都搞,为保证自己的利益,开放性肯定要差的多,这没太多好说的。

hpdell 发表于 2010-7-9 09:17:05

都是牛x

zlog 发表于 2010-7-11 17:09:24

个人感觉IAR比MDK稳定,但仿真没有MDK做的好。

fengpc 发表于 2010-7-11 18:48:37

新版的MDK4.x编译慢了好多,旧版本的快

MDK编译的代码大小比IAR大一倍不至于吧,是不是开了最高速度优化啊,优化也有不同方向的

shdjdq 发表于 2010-7-13 07:58:27

以前用KEIL C51,感觉还好。后来用IAR-》AVR,只是很多标准的C函数不支持,走了很多弯路。在用CM3中,IAR支持行汇编,这个比较方便,还没有试过标准的C函数,是不是都支持。至于大小不是最重要的,有差别,但不会相差太大。

zf8848 发表于 2010-7-13 08:07:37

呃,最近看到有人做了个比较新的横向对比:
http://www.mcuzone.com/MAN/MAN3004A_CH.pdf


这对比用的版本都比较新,里面MDK已经用rvds4的编译器了,就DMIPS的成绩来看,keil最好
===============================================
这个结论是:
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_567416H2PAWC.jpg
各个平台 Dhrystone 最高分比较 (原文件名:Dhrystone.jpg)

zf8848 发表于 2010-7-13 08:22:08

下面发一个ICC 11.0,GCC 4.4.4 ,VC++ 9/10,Keil 4.12 最高优化下都能编译通过但 IAR 5.412 / IAR 5.501 在最高优化下无法编译通过的例子程序,在 Debug 模式下都能通过。

具体错误在 IAR 5.412 / IAR 5.501 的优化中不能选择: Type-based alias analysis 这个优化选项。

一个测试 CM3 平台的 FFT 程序;邪门的是在Debug模式下从运行结果看 IAR 比 Keil 快.一些输出结果片段:

MDK FFT 1024 ms:79
MDK FFT 1000 ms:88

IAR FFT 1024 ms:73
IAR FFT 1000 ms:75

同样的程序在 OMAP3530 平台上,不开优化大概在 21/17 ,打开硬浮点和 A8 指令优化后在 9/7 毫秒.

FFT 测试程序ourdev_567419I8JZRV.rar(文件大小:1.48M) (原文件名:FFT.rar)

后注:
在 5 月份向 IAR Email 反映此结果后,在今天最新版的 IAR 5.505 版本中最高优化下已经能够编译通过。

lycsqq 发表于 2010-7-15 15:53:23

回复【20楼】eworker
转:
rv下使用printf时要加多retarget.c
以前carm下只要加个putchar或getchar就行,现在要加个retarget.c,,,,这个文件在arm\startup 下
这个文件中有个#pragma import(__use_no_semihosting_swi)   // disable semihosting
如果这没有这句就会死在swi_handler   b       swi_handler这句
具体的大家可以试试..
其实用新的编译器,一定要看一下帮助,这个问题浪费了我20分钟......

-----------------------------------------------------------------------

对printf进行重定向,很正常啊~

swustlx86 发表于 2010-7-16 08:58:18

学习了

ggg12345 发表于 2010-8-24 22:50:20

学习中,2个都想搞,这些东西应该切换很快的吧

luy3728000 发表于 2010-8-25 19:09:01

回复【7楼】schwarz
iar代码执行效率比mdk高多了,而且比mdk稳定。
-----------------------------------------------------------------------

很赞同!!!刚从MDK转向IAR的话有点不习惯,用了一段时间才发现,IAR有很多优点

dickjtk 发表于 2010-11-28 20:02:32

mark

ohmytime 发表于 2011-3-8 23:14:04

讨论的这么激烈啊!呵呵!

yzvip7 发表于 2011-4-20 14:45:31

iar 好比vc++ ,keil 好比c++ bu。。。。。 iar好,keil写法好点,严谨度方面iar好。我只用过nec for iar的,感触

xtaens 发表于 2011-6-5 09:39:16

mark

cyxavr 发表于 2011-6-5 11:09:41

IAR MDK都用过,但我喜欢IAR,生成代码小,编译速度也快。

leavic 发表于 2011-6-5 13:10:34

说到代码量,你们让GCC用户情何以堪

linghu2 发表于 2011-6-5 13:18:31

IAR兼容性能好,你如果更换MCU,基本IAR都有,430,AVR,STM8,FREECALE都有非常多,界面都一样,非常爽

KEIL只有ARM和51的,

ioro55555 发表于 2011-6-23 13:53:21

keil只支持到arm9,iar能到A8

anovo 发表于 2011-9-7 15:20:05

没用用过IAR,感觉MDK也就是不咋的。

sweetzzh 发表于 2011-12-29 13:18:55

学习

reflecter 发表于 2011-12-29 14:03:41

好久没碰软件的飘过~

Altium12A 发表于 2013-2-1 13:58:51

又来口水战了。

Alien2012 发表于 2013-2-1 23:42:08

不要过于纠结工具,只是个工具而已

netawater 发表于 2013-2-1 23:50:59

Alien2012 发表于 2013-2-1 23:42 static/image/common/back.gif
不要过于纠结工具,只是个工具而已

对的,赞同!

3050311118 发表于 2014-2-1 13:39:07

对MDK发几个牢骚:
1.MDK函数库没有IAR做的好, 试了库函数 很多都没有,而且有点问题,IAR下正确
2.支持中文GB2312也有问题 比如数组 char buf[]="此处为中文.....",转换过的GB2312码有的中文会错误,在IAR下没发现
3.只支持51和ARM,没有iar全
4.S5PV210等最新的cortex芯片IAR支持,MDK没有
5.......
因为编译器的莫名的问题,浪费了我很长时间, 只是习惯了MDK,正适应IAR中。。。。。。

奮闘ing 发表于 2014-3-5 22:14:16

Alien2012 发表于 2013-2-1 23:42
不要过于纠结工具,只是个工具而已

我也表示同意!

lw32 发表于 2014-3-6 08:18:26

用不起正版的IAR和MDK,GCC挺好

xjtyOnly51 发表于 2014-4-11 10:06:39

yong zhe shun shou jiu hao

xiaoquguang 发表于 2014-7-8 16:56:34

关注中!!!

zhonggp 发表于 2014-7-9 14:18:27

写代码从来没有觉得编译器有什么差异。。。。。可能自己了解不够深,不过一般场合也没有必要那么考虑,只要不给你编译出bug就可以了,

zhonggp 发表于 2014-7-9 14:18:54

写代码从来没有觉得编译器有什么差异。。。。。可能自己了解不够深,不过一般场合也没有必要那么考虑,只要不给你编译出bug就可以了
页: [1]
查看完整版本: 据说IAR开发arm比keil方便,没有用过IAR,是这样吗?用过的大虾给说下如何?