搜索
bottom↓
回复: 246

IAR VS Keil MDK,你会选择哪个?

  [复制链接]

出0入0汤圆

发表于 2012-4-1 16:27:51 | 显示全部楼层 |阅读模式
发现,网络上找的ARM视频或STM32视频,都是教IAR的,IAR真的就比Keil好用?
但坛子里却很多Keil的教程,说明Keil用户多?
求高手详细说下这两者的使用率及优缺点。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-1 22:44:19 | 显示全部楼层
喜欢哪个就用哪个。
当然,iar是大名鼎鼎的。

出0入0汤圆

发表于 2012-4-1 22:45:20 | 显示全部楼层
主要用keil的,偶尔也用IAR

出0入0汤圆

发表于 2012-4-1 22:46:56 | 显示全部楼层
一直用KEIL,IAR有一个蛋疼的地方就是无法像KEIL那样打开多个独立的工程

出0入0汤圆

发表于 2012-4-1 22:56:52 | 显示全部楼层
IAR编译效率高,编译速度快,支持多种RTOS,相比之下Keil就跟个玩具似得,都是小孩子玩的。

出0入0汤圆

发表于 2012-4-1 22:58:41 | 显示全部楼层
i55x 发表于 2012-4-1 22:56
IAR编译效率高,编译速度快,支持多种RTOS,相比之下Keil就跟个玩具似得,都是小孩子玩的。 ...

晕倒,这么评价MDK啊,只是个编译工具不同而已把,

出0入0汤圆

发表于 2012-4-1 23:00:38 | 显示全部楼层
http://www.ourdev.cn/forum.php?mod=viewthread&tid=5252775
这个帖子22楼有我的测试代码,同一个工程用MDK和IAR编译,出来的代码数量差异惊人,IAR可以说直接拍飞MDK。

出0入0汤圆

发表于 2012-4-1 23:00:56 来自手机 | 显示全部楼层
都不错,习惯就好。

出0入0汤圆

发表于 2012-4-1 23:01:16 | 显示全部楼层
i55x 发表于 2012-4-1 22:56
IAR编译效率高,编译速度快,支持多种RTOS,相比之下Keil就跟个玩具似得,都是小孩子玩的。 ...

就是,说明你不了解keil,keil还是ARM官方的~~

出0入0汤圆

发表于 2012-4-1 23:01:52 | 显示全部楼层
MDK,ARM公司旗下的,不二之选

出0入0汤圆

发表于 2012-4-1 23:03:59 | 显示全部楼层
wuguoyan 发表于 2012-4-1 23:01
就是,说明你不了解keil,keil还是ARM官方的~~

事实已经经过我本人测试,官方的编译器根本没资格跟IAR叫板。
你们这些人不认真学习,不实践,一听官方两字就崇拜地五体投地,真是可笑至极。

出0入0汤圆

发表于 2012-4-1 23:06:56 | 显示全部楼层
从8051到ARM,我全套都用IAR,毕竟我更注重代码效率。
不过,也要感谢KEIL让我步入单片机的世界。
没有最好,只有最合适,合适的就是最好的。

出0入0汤圆

发表于 2012-4-1 23:11:25 | 显示全部楼层
嘻嘻,个人觉得是习惯而已,哪个自己觉得好用,公司支持哪个就用哪个,

出0入0汤圆

发表于 2012-4-1 23:12:19 | 显示全部楼层
其实我最早用的单片机C语言是Franklin C51,后来据说是Keil代工的。Keil C51要2000年才出来。

出0入0汤圆

发表于 2012-4-1 23:13:04 | 显示全部楼层
有时间尝试一下IAR

出0入0汤圆

发表于 2012-4-1 23:21:42 | 显示全部楼层
习惯为先。。。

出0入0汤圆

发表于 2012-4-1 23:23:01 | 显示全部楼层
回复14楼:
看来你是前辈,我是2000之后才慢慢开始接触单片机的

出0入0汤圆

发表于 2012-4-1 23:23:31 | 显示全部楼层
MDK.现在芯片性能强,效率的差异不在是问题

出0入0汤圆

发表于 2012-4-1 23:31:17 | 显示全部楼层
习惯了就好,一直用Keil

出0入0汤圆

发表于 2012-4-1 23:33:21 | 显示全部楼层
i55x 发表于 2012-4-1 23:03
事实已经经过我本人测试,官方的编译器根本没资格跟IAR叫板。
你们这些人不认真学习,不实践,一听官方两 ...

呵呵,MDK对代码的优化还是很好的,至少能满足我的需求,

我也有过简单的测试,只是没对比,

现在够用就行,编译器也就一工具,何必这么较真,

哪个更好上手用哪个。

PS:我的简单的测试不在本论坛,可以看这个链接 11 - 15楼:http://www.openedv.com/posts/list/3134.htm

出0入0汤圆

 楼主| 发表于 2012-4-1 23:33:50 | 显示全部楼层
i55x 发表于 2012-4-1 23:03
事实已经经过我本人测试,官方的编译器根本没资格跟IAR叫板。
你们这些人不认真学习,不实践,一听官方两 ...

你说得没错,不能因为是官方就认定100%权威。
但是你说的代码实验,你做的仅仅是一个代码的测试实验,并不能说明IAR的效率就一定比Keil高,说不定恰好是这一个代码的效率IAR高了点罢了。
除非你做过好几类的代码实验,才能比较客观的证明,IAR的确代码效率高,呵呵。
至于官方,我想说的不是因为它是官方效率就高,但有一点是不能否认的,那就是既然Keil是官方的,那么它就能伴随着ARM成败,只要我们还在用ARM,那么官方配套的Keil也会不停的升级或维护。
而IAR,第三方的很多时候就不能接轨了,哪天不干了也说不定,至少Keil跟ARM的同步率应该是最高的,开发优先级应该也是最高。
个人观点,高手们评论下我会不会说错了……

出0入0汤圆

发表于 2012-4-1 23:45:35 | 显示全部楼层
Pony279 发表于 2012-4-1 23:33
呵呵,MDK对代码的优化还是很好的,至少能满足我的需求,

我也有过简单的测试,只是没对比,

我现在离开RTOS已经不会写程序了,偏偏IAR对各种主流RTOS支持的非常好,各种运行时的状态都看的很清楚,Keil只支持自家的RLARM,所以用MDK调试ucos这样的RTOS,莫名其妙的死掉都不知道怎么死的,任务栈大小分配更是完全不可控。这就是我说Keil是玩具的原因。

出0入0汤圆

发表于 2012-4-1 23:48:31 | 显示全部楼层
raxfeer 发表于 2012-4-1 23:33
你说得没错,不能因为是官方就认定100%权威。
但是你说的代码实验,你做的仅仅是一个代码的测试实验,并 ...

IAR光是在做8051的编译器都已经20年了,人家还在做,这么优秀的编译器厂家是不可能死掉的。我的代码又不是几k的小玩意,是几十k的东西,这都说明不了问题,还有什么能说明问题,我发现你根本就是刚刚做单片机的菜鸟,字里行间只有对“原厂”两个字莫名其妙的崇拜和由此引发的思路广欢乐多。

出0入0汤圆

发表于 2012-4-1 23:49:26 | 显示全部楼层
大家发言都注意点语气,或许会比较好
在此刻,我们评论的是这两个编译器当前的优略
至于这两个编译器以后的发展,谁都说不准
没人规定说只允许用一种编译器,自然是哪种好用就用哪种
暂时不用KEIL,不代表我永远都放弃KEIL
KEIL和IAR都有各自的粉丝,存在就是合理

出0入0汤圆

发表于 2012-4-1 23:51:04 | 显示全部楼层
i55x 发表于 2012-4-1 23:45
我现在离开RTOS已经不会写程序了,偏偏IAR对各种主流RTOS支持的非常好,各种运行时的状态都看的很清楚,K ...

其实很多玩51的高手,不需要仿真器,一样能把程序调得很好,而过分依赖仿真器的话,效果反而就不好了。

个人习惯,现在也不乏RTOS在MDK下的应用,

不想与你争论这个问题,没多大意义。个人用着爽就行。

出0入0汤圆

发表于 2012-4-1 23:53:57 | 显示全部楼层
都是使用工具,用啥都可以,只要自己喜欢

出0入0汤圆

发表于 2012-4-1 23:55:00 | 显示全部楼层
本帖最后由 i55x 于 2012-4-1 23:58 编辑
Pony279 发表于 2012-4-1 23:51
其实很多玩51的高手,不需要仿真器,一样能把程序调得很好,而过分依赖仿真器的话,效果反而就不好了。

...


我就是你说的不用仿真器的51高手,废掉1片2764(大约可以擦除20次)就能写出8k的汇编程序,那都是10多年前的事情了。
但是回头看看,这是很愚昧的做法,有仿真器可以大大提高开发效率,降低开发难度,何乐而不为呢?

同样的,使用RTOS就是提高编写程序的速度,使得程序的可读性大大提高。人就是应该不断的自我否定,才可以不断的自我提高,现在还在不用仿真器调试51的,那是极品学不会新把戏的老狗。

出0入0汤圆

发表于 2012-4-1 23:59:33 | 显示全部楼层
相当技术geek,玩gcc才是正道,我玩过yagarto,还可以,就是调试起来不如IAR和MDK方便。

出0入0汤圆

发表于 2012-4-2 00:06:08 | 显示全部楼层
楼上的言辞真是够激烈的,
我就是现在还在不用仿真器调试51的,
对于STM32我也有买JLINK,用着不爽,已经压箱底很长时间了。

出0入0汤圆

 楼主| 发表于 2012-4-2 00:14:34 | 显示全部楼层
i55x 发表于 2012-4-1 23:55
我就是你说的不用仿真器的51高手,废掉1片2764(大约可以擦除20次)就能写出8k的汇编程序,那都是10多年 ...

弱弱地问一下,你今年奔四了吧?
呵呵,用仿真器调51,额……
说实话,我觉得像51这种比较简单的东西,用不用仿真器应该差别不大吧。
你就继续骂我新手不懂事吧,呵呵,习惯了。
如果一被骂就不敢说话的,永远不进步不了,呵呵。

出0入0汤圆

 楼主| 发表于 2012-4-2 00:15:55 | 显示全部楼层
Pony279 发表于 2012-4-2 00:06
楼上的言辞真是够激烈的,
我就是现在还在不用仿真器调试51的,
对于STM32我也有买JLINK,用着不爽,已经压 ...

话说我也不太喜欢“调试”这玩意,不是因为要装牛B什么的,就是感觉麻烦,呵呵。

出0入0汤圆

发表于 2012-4-2 00:27:42 | 显示全部楼层
raxfeer 发表于 2012-4-2 00:14
弱弱地问一下,你今年奔四了吧?
呵呵,用仿真器调51,额……
说实话,我觉得像51这种比较简单的东西,用 ...

还没到40.
51要用汇编写3000行,8k的bin,对于现在的小盆友那是星际传说。

出0入0汤圆

 楼主| 发表于 2012-4-2 00:31:45 | 显示全部楼层
i55x 发表于 2012-4-2 00:27
还没到40.   
51要用汇编写3000行,8k的bin,对于现在的小盆友那是星际传说。 ...

汇编,厉害。
我都用C写,51的,程序一般不多,但51的速度太不给力了,中断被用完,速度也被耗光。
这不,奔着跟大家来学STM32了嘛。

出0入0汤圆

发表于 2012-4-2 00:32:31 | 显示全部楼层
IAR刚接触一个月,感觉IAR强大的地方是对错误的提示比较清晰

出0入0汤圆

 楼主| 发表于 2012-4-2 00:35:30 | 显示全部楼层
rifjft 发表于 2012-4-2 00:32
IAR刚接触一个月,感觉IAR强大的地方是对错误的提示比较清晰

其实我两个软件都装了。
但用的一直都是Keil,看过这个帖子,也许该花点精力来搞下IAR~

出0入0汤圆

发表于 2012-4-2 00:37:04 | 显示全部楼层
Pony279 发表于 2012-4-2 00:06
楼上的言辞真是够激烈的,
我就是现在还在不用仿真器调试51的,
对于STM32我也有买JLINK,用着不爽,已经压 ...

RTOS对于你种水平的,就是传奇,你还差100个台阶呢,我都不惜说你了。

出0入0汤圆

发表于 2012-4-2 00:37:58 | 显示全部楼层
IAR里面代码编辑是件痛苦的事,听说要加个插件才好用

出0入0汤圆

 楼主| 发表于 2012-4-2 00:50:02 | 显示全部楼层
rifjft 发表于 2012-4-2 00:37
IAR里面代码编辑是件痛苦的事,听说要加个插件才好用


不会吧,做了20年的软件应该不会有这么低级的失误啊,具体是怎么回事?

出0入42汤圆

发表于 2012-4-2 01:33:16 | 显示全部楼层
虽然刚开始用的时候IAR会麻烦一些,但不得不说目前IAR的代码效率和编译速度比Keil强。

而且Keil有一个致命的问题,就是工程视图下只能有一级目录。这在写较大的程序时是难以接受的。

出0入0汤圆

发表于 2012-4-2 08:24:07 | 显示全部楼层
两个都在用,主要用IAR, 但是IAR有时候让人很蛋疼,比如在使用scanf的时候,IAR编译后用scanf会丢失数据,MDK就没问题。如果要用MDK建议使用3.90版本,4.xx版本的编译效率太低

出0入0汤圆

发表于 2012-4-2 08:24:24 | 显示全部楼层
两个都在用,主要用IAR, 但是IAR有时候让人很蛋疼,比如在使用scanf的时候,IAR编译后用scanf会丢失数据,MDK就没问题。如果要用MDK建议使用3.90版本,4.xx版本的编译效率太低

出0入0汤圆

发表于 2012-4-2 08:43:09 | 显示全部楼层
i55x 发表于 2012-4-2 00:27
还没到40.   
51要用汇编写3000行,8k的bin,对于现在的小盆友那是星际传说。 ...

那我就成传说了,5000行的汇编也是常事

出0入0汤圆

发表于 2012-4-2 08:46:37 | 显示全部楼层
请问,现在的RTOS那个好用?

出0入0汤圆

发表于 2012-4-2 09:35:21 | 显示全部楼层
只是对一个开发工具的取舍而已,理性谈论需求,建议不要拿个人的喜好当作结论。
这两款我都在用,各有特点,依自己的需要选择即可。

出0入0汤圆

发表于 2012-4-2 09:41:18 | 显示全部楼层
i55x 发表于 2012-4-2 00:37
RTOS对于你种水平的,就是传奇,你还差100个台阶呢,我都不惜说你了。

你爱怎么说怎么说,
也许我没资格说你,但是作为网友,我不得不提醒你一下。
就算你有十几年的经验,给我的感觉,你很浮躁,甚至是骄躁。

有心的,静下心来,做些研究,多花些功夫造福后人吧。

别把51写8K代码拿出来显摆,用汇编那是瞎折腾。
现在对51稍微熟练的都能做到,我也独立写过上20K的bin。

出0入0汤圆

发表于 2012-4-2 13:16:38 | 显示全部楼层
本帖最后由 Pony279 于 2012-4-2 13:21 编辑
i55x 发表于 2012-4-1 23:00
http://www.ourdev.cn/forum.php?mod=viewthread&tid=5252775
这个帖子22楼有我的测试代码,同一个工程用MD ...

mdk的优化是可以配置的,刚刚简单测试了一下,
以前我只用O3,编译出来的实验代码2k左右,如果加上跨模块优化,生成的代码1k3
MDK默认的优化是最低的,就拿我的代码来说,生成的代码有4k+


敢问您的测试有没有考虑到优化等级?您对MDK有多少了解?IAR代码过多优化有没有可能导致程序出现问题?
希望您有时间,做更详细的测试,不要一个简单的测试,就妄下定论哦,您这样的态度,会坑害新人的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-2 13:28:23 | 显示全部楼层
Pony279 发表于 2012-4-2 13:16
mdk的优化是可以配置的,刚刚简单测试了一下,
以前我只用O3,编译出来的实验代码2k左右,如果加上跨模块 ...

他历来这个风格。

出0入0汤圆

发表于 2012-4-2 13:31:33 | 显示全部楼层
i55x 发表于 2012-4-2 00:37
RTOS对于你种水平的,就是传奇,你还差100个台阶呢,我都不惜说你了。

感觉这位大哥很自大,都什么年代了,还拿51汇编这吃力不讨好的功夫来说事!!还把话说得那么激烈,十几年的经验就是这种德性?

出0入0汤圆

发表于 2012-4-2 13:44:29 | 显示全部楼层
本帖最后由 240671900 于 2012-4-2 13:45 编辑

其实没有什么可比的,KEIL公司毕竟支持的单片机不多,而IAR相对来说几乎覆盖了所有的可编程MCU。假如说我们用51做一件事,去学KEIL,再用AVR,再去学AVRStudio,用PIC,去学MPLAB,用HOLTEK,再去学HTKC。好吧,个人是学会了很多编译器的使用,编程水平和单片机理解能力也上了一个大台阶。但是呢,公司会给你这么长的时间去做这么多的项目准备工作么。很显然不会。公司为了争取最大利益会尽快让你完成这件产品的开发,不可能让你想学校里面边玩边学,什么时候领会了什么时候算。这时候再去看看IAR和KEIL,你差不多有点觉悟了

出0入0汤圆

发表于 2012-4-2 13:50:43 | 显示全部楼层
个人感觉IAR更好用一些

出0入0汤圆

 楼主| 发表于 2012-4-2 13:52:03 | 显示全部楼层
Pony279 发表于 2012-4-2 09:41
你爱怎么说怎么说,
也许我没资格说你,但是作为网友,我不得不提醒你一下。
就算你有十几年的经验,给我 ...

用汇编写51的确是一件只能用来炫耀的事。
现在都提倡程序能被别人看懂才是好程序,而不是效率,汇编写的,3000行,让别人看那是一件很蛋疼的事。
所以说汇编代码只能用来炫耀,无其它用处了,呵呵。
换种说法,用比汇编效率低的C写的程序在51运行不了了,那就换Cortex呗,现在Cortex也降到白菜价了,干嘛用汇编折腾51,人工成本都划不回来。

出0入0汤圆

 楼主| 发表于 2012-4-2 13:53:45 | 显示全部楼层
Pony279 发表于 2012-4-2 13:16
mdk的优化是可以配置的,刚刚简单测试了一下,
以前我只用O3,编译出来的实验代码2k左右,如果加上跨模块 ...

这个好,我之前也知道有这么一个设置,就是没怎么用过,所以也一时半会想不起来。
回头好好研究一下Keil了,呵呵。

出0入0汤圆

发表于 2012-4-2 13:55:25 | 显示全部楼层
我使用的MDK,因之前用到51,所以感觉入手很容易。
IAR,使用ARM7的时候用过一段时间,但是不怎么入手。
最后选择了MDK。
有能力,可以两个软件都用,多学无害!!

出0入0汤圆

发表于 2012-4-2 13:55:44 | 显示全部楼层
IAR与keil都装了,平常还是用keil多些,至于某些人说的keil与iar比就是玩具,不敢苟同

出0入0汤圆

 楼主| 发表于 2012-4-2 13:56:12 | 显示全部楼层
lyyyuna 发表于 2012-4-2 13:28
他历来这个风格。

看来你们认识啊,呵呵。
这种风格也没啥不对的,至少我是那种骂不动、喷不歪的,一切言论攻击对我无效,哈哈。
反而觉得,有时候这种风格能爆发出一些强悍的东西。
以上仅供参考,呵呵。

出0入0汤圆

 楼主| 发表于 2012-4-2 13:58:06 | 显示全部楼层
chenyuqiu 发表于 2012-4-2 13:31
感觉这位大哥很自大,都什么年代了,还拿51汇编这吃力不讨好的功夫来说事!!还把话说得那么激烈,十几年 ...

你是专门来喷人的?
晕,也不对IAR、Keil说一些自己的想法……

出0入0汤圆

 楼主| 发表于 2012-4-2 14:01:09 | 显示全部楼层
240671900 发表于 2012-4-2 13:44
其实没有什么可比的,KEIL公司毕竟支持的单片机不多,而IAR相对来说几乎覆盖了所有的可编程MCU。假如说我们 ...

弱弱地问一下,你所说的那几种MCU,IAR都可以搞定吗?没用过IAR……

出0入0汤圆

发表于 2012-4-2 14:04:13 | 显示全部楼层
呵呵,在做MCU程序时,俺很少会用到SCAN PRINTF等与目标相关的函数即所谓的Semihosting机制。
个人觉得IAR确实比KEIL更专业!

出0入0汤圆

发表于 2012-4-2 14:10:52 | 显示全部楼层
当初学单片机是51,用的是KEIL,在加上后来在单位学ARM,用的是KEIL中国代理提供的各种资源,所以就一直保持着keil环境用下去了。

话说回来,keil也好,IAR也好,只不过是个工具罢了。工具是为人所用的,而不是人为工具所限制。你用自动焊接机器人能焊出精密车身,我用手焊条也能焊出万吨水压机,事在人为。有爱孙猴的,就有爱八戒的,没有绝对。

出0入0汤圆

发表于 2012-4-2 14:21:15 | 显示全部楼层
raxfeer 发表于 2012-4-2 14:01
弱弱地问一下,你所说的那几种MCU,IAR都可以搞定吗?没用过IAR……

哈哈,必须的。其实我认识IAR的时候是在做MSP430的一个活的时候发现的。那时候觉得IAR比ICC神奇啊,但是后面做ARM7用了ADS就发现,这个还不如IAR。又无意中发现IAR还有ARM版本的。最后接二连三的发现IAR支持几乎所有MCU,像富士通啊,瑞萨啊,流明啊,NXP啊,还有上贴我提到的那些,好多好多。你要想想,你要做的很多MCU程序调试全部都由一种编程风格的编译器来写是不是很爽呢,哈哈。现在我个人的430,arm,avr,51都用IAR呢。楼主对它有兴趣的话自己去看看IAR官网吧。哈哈。

出0入0汤圆

发表于 2012-4-2 14:22:40 | 显示全部楼层
Pony279 发表于 2012-4-2 13:16
mdk的优化是可以配置的,刚刚简单测试了一下,
以前我只用O3,编译出来的实验代码2k左右,如果加上跨模块 ...

我那个测试全都是最高优化等级,两个编译器用不同优化等级这么RZ的事情我还做不出来。
话说我的工程都已经上传了,你自己下载看看再批评也不迟,连看都不看就拍脑袋胡说这是你的风格吗?

出0入0汤圆

 楼主| 发表于 2012-4-2 14:27:57 | 显示全部楼层
240671900 发表于 2012-4-2 14:21
哈哈,必须的。其实我认识IAR的时候是在做MSP430的一个活的时候发现的。那时候觉得IAR比ICC神奇啊,但是 ...

好吧,又是一个牛人。
我觉得两个都得玩了,呵呵。

出0入0汤圆

发表于 2012-4-2 14:29:09 | 显示全部楼层
还是用Keil好,因为我的另外一个项目必须要用keil+eclipse配合;后来搞stm32也用keil了。一直用ucos+ucgui,早就习惯了。
所以习惯性问题;
大家讨论技术,但是不要攻击别人么;总是攻击别人的,估计在哪个公司都没有朋友,都招领导讨厌。

出0入0汤圆

发表于 2012-4-2 14:32:14 | 显示全部楼层
siriusspy 发表于 2012-4-2 14:29
还是用Keil好,因为我的另外一个项目必须要用keil+eclipse配合;后来搞stm32也用keil了。一直用ucos+ucgui ...

我请教你一下,ucos+ucgui的话,你怎么确定任务栈大小?既不浪费资源,又不至于崩溃的?
在IAR下面做到以上几点很easy,在MDK下面如何实现?????

出0入0汤圆

发表于 2012-4-2 14:37:37 | 显示全部楼层
一直IAR。

出0入0汤圆

发表于 2012-4-2 14:38:24 | 显示全部楼层
都只是个工具而已。用好了才是王道。

出0入0汤圆

 楼主| 发表于 2012-4-2 14:39:04 | 显示全部楼层
siriusspy 发表于 2012-4-2 14:29
还是用Keil好,因为我的另外一个项目必须要用keil+eclipse配合;后来搞stm32也用keil了。一直用ucos+ucgui ...

eclipse,貌似这个在Java开发上比较多人用。
你别说喷人的事,我觉得可恨之人必有可怜之处。(我这个比方会不会打得不太恰当?)
他固执可能有他的原因,说不定人家牛到我们无法相像的程度呢。
做学术,尽量不要参杂个人情感哈,至少我是这么认为的。一个人他有道理,那么他用何种语气说我都会接受;一个人没有道理,他再温柔我也会反驳。这跟攻击不攻击没关系,也跟朋友不朋友没关系。
学学那些大师们,爱因斯坦当年跟波尔争论的量子力学不也是在学术上吵翻天了吗,但在生活中又是好朋友,是吧。

出0入0汤圆

发表于 2012-4-2 14:53:07 | 显示全部楼层
i55x 发表于 2012-4-2 14:22
我那个测试全都是最高优化等级,两个编译器用不同优化等级这么RZ的事情我还做不出来。
话说我的工程都 ...

抱歉,MDK对我来说已经够用了,所以我是懒得测试的,如果您坚持要我测试,那我就把您在那个帖子22楼的代码下载下来编译好了,
以图为证:
编译结果

设置:



IAR我没装,懒得测,

4.22 MDK,STM32的库的类型定义可能和现在的不兼容,编译的时候出错了,所以我在MDK工程的目录里加了个type.h。


至于能不能正常运行,我这也没法测试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-2 14:55:32 | 显示全部楼层
本帖最后由 Pony279 于 2012-4-2 15:59 编辑
i55x 发表于 2012-4-2 14:22
我那个测试全都是最高优化等级,两个编译器用不同优化等级这么RZ的事情我还做不出来。
话说我的工程都 ...


编译结果图看不清,
我再发个:


code 12996
ro 524
rw 188
zi 10980



对比下面的IAR的结果(那个帖子的内容,不是我亲测):

[1] = D:\temp\Micrium\Software\EvalBoards\ST\STM3210E-EVAL\IAR\OS-Probe\Flash\Obj
[2] = command line
[3] = dl7M_tlf.a
[4] = m7M_tl.a
[5] = rt7M_tl.a
[6] = shb_l.a

  18 148 bytes of readonly  code memory
     436 bytes of readonly  data memory
  11 004 bytes of readwrite data memory

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-2 14:55:42 | 显示全部楼层
Pony279 发表于 2012-4-2 14:53
抱歉,MDK对我来说已经够用了,所以我是懒得测试的,如果您坚持要我测试,那我就把您在那个帖子22楼的代 ...


既然你懒得测,我就只能无视你的一切言论了。这里是技术论坛,一切拿证据说话。

出0入0汤圆

发表于 2012-4-2 14:58:03 | 显示全部楼层
i55x 发表于 2012-4-2 14:55
既然你懒得测,我就只能无视你的一切言论了。这里是技术论坛,一切拿证据说话,没证据拍脑袋胡说的还是滚 ...

请不要进行人身攻击,谢谢。

MDK的证据已经发上来的,和你之前的结果是不一样的,看爱理不理,我只是把事实写上来,
至于IAR你爱测不测,关我什么事。

出0入0汤圆

发表于 2012-4-2 15:05:57 | 显示全部楼层
Pony279 发表于 2012-4-2 13:16
mdk的优化是可以配置的,刚刚简单测试了一下,
以前我只用O3,编译出来的实验代码2k左右,如果加上跨模块 ...

MDK的优化代码是可以减小很多,但是我优化后的C++ stm32程序就没法运行了。我一直没优化。反正空间都非常大。

出0入0汤圆

发表于 2012-4-2 15:08:46 | 显示全部楼层
本帖最后由 Pony279 于 2012-4-2 15:10 编辑
source.ant 发表于 2012-4-2 15:05
MDK的优化代码是可以减小很多,但是我优化后的C++ stm32程序就没法运行了。我一直没优化。反正空间都非常 ...


嗯,一般是不需要优化的

看你提到 C++ stm32,我挺感兴趣的,
能不能把你的代码传上来一起交流交流,
我在这个帖子里有有讨论C++的问题,现在在自己建C++版的固件库
http://www.ourdev.cn/thread-5401612-1-1.html

出0入0汤圆

发表于 2012-4-2 15:19:47 | 显示全部楼层
Pony279 发表于 2012-4-2 15:08
嗯,不到一般是不需要优化的

看你提到 C++ stm32,我挺感兴趣的,

不好意思!这个代码现在是公司的主打产品。出于职业道德,不方便上传。可以简单说一下:底层的驱动就是用的st的库,上层应用用的C++。应该算是c和C++混合着用的吧。而且我觉得去改底层的st固件没多大必要吧。C++做上层应用还是很爽的。最喜欢那个虚函数。

出0入0汤圆

发表于 2012-4-2 15:26:38 | 显示全部楼层
本帖最后由 Pony279 于 2012-4-2 15:27 编辑
source.ant 发表于 2012-4-2 15:19
不好意思!这个代码现在是公司的主打产品。出于职业道德,不方便上传。可以简单说一下:底层的驱动就是用 ...


呵呵,这个我能理解,

虚函数在比较大的系统里确实少不了,

至于底层库,因为感觉官方的用得着不爽,我才去改的。
比如说GPIO输入输出的,官方还专门有个函数来做这事,而且不是内联的,速度太慢。
所以我就干脆边学习,边积累自己的代码库了,我的51也是这么过来的,在学习中积累,养成习惯了~

经过我的测试,虽然C++看上去效率低,但是实际上编译器是会优化的,用C++做底层,一点也不比C差。

出0入0汤圆

发表于 2012-4-2 15:54:24 | 显示全部楼层
raxfeer 发表于 2012-4-2 14:39
eclipse,貌似这个在Java开发上比较多人用。
你别说喷人的事,我觉得可恨之人必有可怜之处。(我这个比方 ...

呵呵,有些人就是惹人讨厌的,

以前看过一自大的极品,
http://www.ourdev.cn/thread-846636-1-1.html

这两天又见一个。

出0入0汤圆

发表于 2012-4-2 16:01:08 | 显示全部楼层
MDK界面好看,所以我选MDK
MDK支持相对路径,所以我选MDK

基本不用在线调试,程序也不用那么优化
原因很简单:需求决定供给

出0入0汤圆

发表于 2012-4-2 16:02:59 | 显示全部楼层
51和ARM 用KEIL 多 STM8和三星的就用IAR 主要还是用keil

出0入0汤圆

发表于 2012-4-2 16:07:32 | 显示全部楼层
IAR 编译效率高 代码执行速度快 但是MDK界面友好,就好比Linux和Window,Linux稳定性和实时性均高于Window, 但是Windos就是解码友好,简单易用

出20入0汤圆

发表于 2012-4-2 16:08:52 | 显示全部楼层
AVR时我就用keil,51,stm32时用keil

出0入0汤圆

 楼主| 发表于 2012-4-2 16:23:55 | 显示全部楼层
Pony279 发表于 2012-4-2 15:54
呵呵,有些人就是惹人讨厌的,

以前看过一自大的极品,

你发的这个链接简直就是神帖啊,呵呵。
正在看,挺有趣的。
还有阿莫说的那个上海交大学生发起的神帖,也想找来看看,不知道可否有链接或关键字?
以下为引用阿莫的回复:
我突然记得了以前,网上好像有一个关于软件讨论的帖子,好像是由一个上海交大的学生发起的, 开始这个学生表现得很无知,引来无数的砖头, 然后他慢慢反_攻, 后来大家才明白是一个绝顶的高手 ....这个讨论好像是被称为网上最牛的技术帖子,讨论时间与回复数目都是破纪录的 ....

不知道我们这里是否也会出现这个景象? 呵呵,现在看看好像有点啊。。。搬个橙子看热闹先 ..

出0入0汤圆

发表于 2012-4-2 16:27:29 | 显示全部楼层
newcanking 发表于 2012-4-2 16:08
AVR时我就用keil,51,stm32时用keil

你穿越了吧?看看Keil粉丝的素质多么低劣。

出0入0汤圆

发表于 2012-4-2 16:30:54 | 显示全部楼层
那个菜鸟还越来越来劲了,不敢对比IAR和MDK,只是闷着头说原厂好,你以为你是戈培尔,把谎言重复一万遍就能成真理了?

出0入0汤圆

发表于 2012-4-2 16:38:41 | 显示全部楼层
raxfeer 发表于 2012-4-2 16:23
你发的这个链接简直就是神帖啊,呵呵。
正在看,挺有趣的。
还有阿莫说的那个上海交大学生发起的神帖,也 ...

呵呵,这个得问莫大了

出0入0汤圆

发表于 2012-4-2 17:04:03 | 显示全部楼层
其他的不知道,反正从coremark的分数上来看,这2个编译器就是伯仲之间的,每MHZ分数差在小数点后2位,最后总分差别也就是个位数的。。。。所以说iar效率超过mdk很多的,那只说明你的代码有问题
这两个都被GreenHills Multi 6.1 Compiler 2012打到满地找牙,人家的coremark分数高了32%。。。。阿米妥佛,就不要打架了

出675入8汤圆

发表于 2012-4-2 17:10:32 | 显示全部楼层
回复一下,新改版后的第一次回复

出0入0汤圆

发表于 2012-4-2 17:12:03 | 显示全部楼层
jisaowang 发表于 2012-4-2 17:04
其他的不知道,反正从coremark的分数上来看,这2个编译器就是伯仲之间的,每MHZ分数差在小数点后2位,最后 ...

呵呵,这个编译器我还是第一次听,能否推荐点上手的资料?

出0入0汤圆

发表于 2012-4-2 19:28:02 | 显示全部楼层
本帖最后由 uc_cpp 于 2012-4-2 19:40 编辑

所谓的测评(一般,大量地调用了C库函数),在某种程度上就是比较库函数运行快慢。

为了提高测评分数,一般的代码很难提高,但库函数,却可以以投机取巧。比如
使用最小库,内联库。

老老实实使用一般库的编译器,肯定比不过。

这一点,IAR其实很吃亏,一般某某测评,基本上IAR都排在最末。



出0入42汤圆

发表于 2012-4-2 21:03:57 | 显示全部楼层
工具而已,那个用得惯用那个,没有必要多花时间将这些工具挨个用顺手来比较。

出0入0汤圆

发表于 2012-4-2 21:14:56 | 显示全部楼层
主要还是看公司的环境了,和个人的习惯有关系

出0入0汤圆

发表于 2012-4-2 21:45:14 | 显示全部楼层
i55x 发表于 2012-4-2 14:32
我请教你一下,ucos+ucgui的话,你怎么确定任务栈大小?既不浪费资源,又不至于崩溃的?
在IAR下面做到以 ...

呵呵,你说的IAR很容易做到,说的是IAR自带的UCOS-II的插件吗?
其实这种插件对于UCOS-III已经无效了!
一般我会用串口的把任务堆栈、优先级、挂起原因等的情况打印出来。

我倒觉得IAR比较专业,对于C的标准支持的比较好!

记得当初在keil 51移植ucos-ii,得把所有的函数改成reentrant,
还把idata, pdata等变量名改下,不过iar挺好编译器的关键字基本使用__开头
比如:__idata __xdata,重入在编译器里设置就可以使所有的函数重入!

出0入0汤圆

发表于 2012-4-2 21:55:56 | 显示全部楼层
electrlife 发表于 2012-4-2 21:45
呵呵,你说的IAR很容易做到,说的是IAR自带的UCOS-II的插件吗?
其实这种插件对于UCOS-III已经无效了!
...

我记得C51也是可以把所有的设置成重入的,不过效率低,一般人不这么干。。。

出0入0汤圆

发表于 2012-4-2 21:58:04 | 显示全部楼层
panda1985 发表于 2012-4-2 08:24
两个都在用,主要用IAR, 但是IAR有时候让人很蛋疼,比如在使用scanf的时候,IAR编译后用scanf会丢失数据, ...

可以是你选择了scan连接的库是small的原因,选择full应该就没有问题了。
当然full的代码会大很多。

出0入0汤圆

发表于 2012-4-2 22:03:49 | 显示全部楼层
个人使用IAR好多年了,还是比较习惯!

出0入0汤圆

发表于 2012-4-3 02:22:03 | 显示全部楼层
jisaowang 发表于 2012-4-2 17:04
其他的不知道,反正从coremark的分数上来看,这2个编译器就是伯仲之间的,每MHZ分数差在小数点后2位,最后 ...

coremark不过是个山寨测试软件,又没有什么权威性,你笑的满地是牙都没有用。
我已经下载了源码,可惜下载到的STM32 port里面只有mdk,没有iar,没有gcc,更没有green hills,这种山寨网站。。。。。也就是你这种小白会拿鸡毛当成令箭。
而STM32F4的mdk、iar、greenhills都通过了这个网站的certification,简直无语了,连测试代码都不放出来,就敢下结论,这个网站也太业余了吧?

我争取用2~4周的时间看看测试代码,用mdk、iar、gcc编译一下,如果电驴速度给力能下到greenhills4,也可以测试。

出0入0汤圆

发表于 2012-4-3 02:32:06 | 显示全部楼层
electrlife 发表于 2012-4-2 21:45
呵呵,你说的IAR很容易做到,说的是IAR自带的UCOS-II的插件吗?
其实这种插件对于UCOS-III已经无效了!
...

你搞错了吧。

IAR是个开放系统,ucos-ii插件是micrium给做的,同样的其他RTOS插件也是这些RTOS厂家推出的,不是IAR做的。

MDK是个封闭系统,只认自家的RLARM一种RTOS(mqx是特例)。

出0入0汤圆

发表于 2012-4-3 04:08:57 | 显示全部楼层
我只知道现在st,nxp,microchip,arm通通用coremark做标准。也不知道是哪个山寨,哈哈

出0入0汤圆

 楼主| 发表于 2012-4-3 04:11:48 | 显示全部楼层
本帖最后由 raxfeer 于 2012-4-3 04:12 编辑

我争取用2~4周的时间看看测试代码,用mdk、iar、gcc编译一下,如果电驴速度给力能下到greenhills4,也可以测试。

期待你的测试和测试的结果。

出0入0汤圆

发表于 2012-4-3 08:19:42 | 显示全部楼层
i55x 发表于 2012-4-3 02:32
你搞错了吧。

IAR是个开放系统,ucos-ii插件是micrium给做的,同样的其他RTOS插件也是这些RTOS厂家推出 ...

你说的对的,ucos-ii插件确实是micrium自己做的,但是IAR的开放只是针
对各个厂商,对我等用户插件的接口是不提供的。
我曾发邮件要过IAR的插件相关的接口,本想自己可以利用这个接口来做
些东西,但是得到的回复是只提供合作的厂商,不提供个人用户。

出0入0汤圆

发表于 2012-4-3 08:58:17 | 显示全部楼层
IAR 兼容性好!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-19 01:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表