打印

决定只用IAR了

[复制链接]
楼主: machunshui
手机看帖
扫描二维码
随时随地手机跟帖
21
gainst| | 2009-10-28 22:10 | 只看该作者 回帖奖励 |倒序浏览
一直在用IAR..
430,8051,renesas,arm..感觉确实比较好用,另外那个license..;P

使用特权

评论回复
22
winloop| | 2009-10-29 08:55 | 只看该作者
恭喜楼主的选择是正确的

使用特权

评论回复
23
shockwave| | 2009-10-29 14:21 | 只看该作者
以前用IAR做了一个项目,只要看门狗一动作(故意测试),系统跑的就出问题了。重新上电就好了。
后来把项目移植到MDK下面,没再发现问题。
从此再不用IAR。

使用特权

评论回复
24
machunshui|  楼主 | 2009-10-29 21:56 | 只看该作者
多可惜啊.
因为没搞清楚到底程序哪里出了问题,
放弃了一个高效编译器.

因噎废食啊

使用特权

评论回复
25
coreduo| | 2009-10-30 08:42 | 只看该作者
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字节
-------------------------------
我没做过速度评估实验。但是我知道:
代码量不代表速度。这是最基本的优化原理。
编译器选项里面可以选速度优先,size优先,速度优先出来的代码肯定远大于size优先。
对于流水线处理器这是基本原理。
不要老拿单片机时代的计算方法来评估,那个时候没有流水线的。

使用特权

评论回复
26
coreduo| | 2009-10-30 08:45 | 只看该作者
本帖最后由 coreduo 于 2009-10-30 09:02 编辑

再说一句,据说(据说而已)rvds4.0的编译器是业界最高效的,mdk3.5以后版本用的就是4.0编译器。
我只是好奇,不知道哪位有空做下运算时间的比较。比代码量还是8位单片机的思维。
并且对于arm9和arm7是完全不一样的,arm9有icache,可以大大降低代码量对速度的影响。
我是做汇编优化工作的,pc和dsp上,arm9也稍微优化过。dsp代码量对速度影响很大,影响程度在50%-60%之间,但是不是全部影响。pc上的代码量影响很小,pc上主要影响是流水线和simd指令

使用特权

评论回复
27
shockwave| | 2009-10-30 09:48 | 只看该作者
回26楼,恰恰是找到原因了,是IAR初始化C环境有问题。
IAR和MDK,C文件一样,只是启动的asm不一样。
后来在iar下面的启动asm里面自己加了个重新初始化的程序,就没有看门狗复位后跑不正确的问题了。
所以后来不敢用IAR了。

使用特权

评论回复
28
shockwave| | 2009-10-30 10:01 | 只看该作者
本帖最后由 shockwave 于 2009-10-30 10:03 编辑

27楼说的对,size小不能代表运行效率高,往往size大的反而运行快。
我之前也做过运行效率的比较mdk一般比iar最少快20%~30%。
不过我测试的程序是我们自己用的一个算法,比较片面。

使用特权

评论回复
29
desert_hawk| | 2009-10-30 10:06 | 只看该作者
我想楼主的意思并不是比较两个编译器编译出来的程序执行速度。是在比较实现相同功能的代码量的大小,而实现相同功能的代码量的大小,将直接影响到产品的成本,尤其是对ARM7,cortex-M3之类对成本比较敏感的应用。

使用特权

评论回复
30
desert_hawk| | 2009-10-30 10:13 | 只看该作者
29楼的朋友,能否把你所说的问题比较详细地描述一下,因为我也用IAR比较长的时间了,倒是没发现你所说的问题。个人觉得,看门狗复位与上电复位的区别是一个是热启动,一个是冷启动,SRAM中的数据初值不同而已,IAR应该不大可能有这么大问题,热启动的初始化导致程序没**常运行吧。

使用特权

评论回复
31
wlq_9| | 2009-10-30 13:12 | 只看该作者
IAR和MDK,C文件一样,只是启动的asm不一样。
后来在iar下面的启动asm里面自己加了个重新初始化的程序,就没有看门狗复位后跑不正确的问题了。
所以后来不敢用IAR了。
--------------------------------------
坦白说,你这样子的态度做产品,偶真不好评价什么.
无论IAR也好,MDK也好,ASM部分起码你要能看懂,虽然不一定能自己写.还真有人认为MDK/IAR提供的起动代码是万能的,估计又是"模板"流.........
这样搞产品,何其浮躁............

使用特权

评论回复
32
shockwave| | 2009-10-30 14:23 | 只看该作者
回33楼:
阁下凭什么就认为我没看懂ASM部分?盲目的去下结论评价别人我看才比较浮躁。
IAR和MDK启动部分的ASM各有风格,MDK一般把一些硬件初始化的放在启动ASM里面。
IAR则所尽量把这些放在C中。要两个环境同时用,肯定要去修改一个ASM。
不知道阁下从哪一眼就看出“模板流”?还是阁下有火眼金睛?

使用特权

评论回复
33
wlq_9| | 2009-10-30 14:34 | 只看该作者
如果你稍微懂一点混编,就不会把ASM里面代码的错误认为是编译器的问题.
早一些的ADS基本上不提供示例的ASM,几乎都是由厂家各自完成的.是否这种开发环境当年连存在的必要都没了?
很明显是自己代码的错误,而认为是编译器的问题...........这个理谁也讲不清,这两东西有必然关系?

使用特权

评论回复
34
wlq_9| | 2009-10-30 14:39 | 只看该作者
IAR和MDK启动部分的ASM各有风格,MDK一般把一些硬件初始化的放在启动ASM里面。
IAR则所尽量把这些放在C中。要两个环境同时用,肯定要去修改一个ASM。
----------------------------------------
这种说法也不尽然,两者对初始化代码放什么位置根本没什么要求,也没什么习惯放C或者放ASM里.MDK的人机界面做的友好一些,减轻了编程人员的工作量.而IAR则大部分都需要自己写,无所谓把初始化程序放在C里或者混编里,完全看个人习惯.
不过两者都有不少例程.

使用特权

评论回复
35
shockwave| | 2009-10-30 14:55 | 只看该作者
回33楼:你认为是ASM里面代码错误?你有证据?连啥代码都没看到就认为是ASM代码问题?你是大牛,来给我上上课吧,是什么代码出错了。我也希望是我搞错了。
要不您给我们这些小虾米细细讲讲怎么去写ASM也行呀。

使用特权

评论回复
36
machunshui|  楼主 | 2009-10-30 15:11 | 只看该作者
27# coreduo

我比较的当然都是最大代码优化方式,IAR大幅度领先MDK

使用特权

评论回复
37
cool_coder| | 2009-10-30 16:59 | 只看该作者
做ARM如果上Linux, 就只有GCC了; 否则用IAR是个不错的选择.

使用特权

评论回复
38
gainst| | 2009-10-30 18:43 | 只看该作者
回26楼,恰恰是找到原因了,是IAR初始化C环境有问题。
IAR和MDK,C文件一样,只是启动的asm不一样。
后来在iar下面的启动asm里面自己加了个重新初始化的程序,就没有看门狗复位后跑不正确的问题了。
所以后来不敢用I ...
shockwave 发表于 2009-10-30 09:48

回:
原因应该是IAR 的启动代码里没有执行关看门狗的动作,而如果您刚好定义了一个很大的static类型的数组的话,IAR的这段代码会执行对这数组的初始化,而造成看门狗复位.
这个问题应该存在于iar for 430 的一个早期版本里的.这个问题早就已经被解决了.
您不该放弃如此优秀的一款编译器的.

使用特权

评论回复
39
shockwave| | 2009-10-30 19:57 | 只看该作者
回:
原因应该是IAR 的启动代码里没有执行关看门狗的动作,而如果您刚好定义了一个很大的static类型的数组的话,IAR的这段代码会执行对这数组的初始化,而造成看门狗复位.
这个问题应该存在于iar for 430 的一个早期版 ...
gainst 发表于 2009-10-30 18:43

抱歉不是您说的这个问题,我用的5.2的版本,后来出了5.3版本也测试了一下。
编译器有点问题很正常,MDK一样出问题,在两年前的MDK有个编译选项有BUG,我在KEIL论坛提交了问题点,KEIL的人员也承认了,说下一版本改进,结果下一个版本我一看是改了,但又把另一个地方改错了。

使用特权

评论回复
40
machunshui|  楼主 | 2009-10-30 22:17 | 只看该作者
到底是啥问题?

不要搞莫须有

使用特权

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

本版积分规则