【介绍】
ARM的开发,我自己一般使用2个环境。
一个是IAR EWARM 5.11 KS,虽然有32K的代码空间限制,但基本够用,而且这个版本可以用于商业开发(对比于eval30天限制版本是不可以用于商业开发的)。
另一个就是Codesourcery的GCC Lite for ARM了。
支持ARM的GCC Toolchain有几个,但Codesourcery的GCC Lite应该可以认为是官方版本了(与ARM公司合作)。Codesourcery每半年会发布一个新版本,今年的第三季度版本也是刚刚发布,基于GCC4.3.2。后面会做一个于IAR的比较(应该是不很科学,就当看着玩玩)。
由于我的Versaloon开发的时候,固件代码就可以直接使用IAR或者GCC来编译(通过Port目录下不同的移植代码)。所以可以直接用这个代码比较一下IAR和Codesourcery。
首先让我最吃惊的是Codesourcery的-s优化。同样的代码,在2008q1版本'-s'优化下编译的结果要比用EWARM的代码空间最高优化的结果大1K左右(总共大概25K的程序量)。使用2008q3版本后,同样的配置,结果只比EWARM大了70多字节。这个让偶灰~~常的满意。
【比较】
以下是详细的对比数据(代码空间和运行速度):
其中JTAG接口IAR编译的版本有一定的优势,因为使用了RamFunc。
S51和C8051F的ISP使用到了延时函数,同样的代码(延时1ms),IAR下延时为1.00048ms,GCC为1.1111ms。
同样配置下,Versaloon全功能编译(速度测试为5次平均):
项目<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> | Codesourcery GCC Lite 2008q3 | IAR EWARM 5.11 KS |
代码空间(最高空间优化) | 25716 Byte | 25644 Byte |
CY8C27443_ISSP(16384Bytes) | 11.27s | 11.27s |
AT89S52_ISP(4016Bytes) | 2.45s | 2.23s |
C8051F020_JTAG(31976Bytes) | 11.95s | 12.00s |
LPC2148_JTAG(IAR下DebugInFlash,1MHz) | 5.694KB/s | 5.696KB/s |
STM32F101C8_JTAG(IAR下DebugInFlash,18MHz) | 7.534KB/s | 7.66KB/s |
用户131114 2008-10-17 22:18
用户1569463 2008-10-17 21:14