作者:未知 文章来源:互连网
AVR我用过2个月,ARM我只看过2本书,所以,说的有错请各位指教。
这里我们讨论的AVR和ARM都是泛指,就是说,包括所有机器指令集和这两个体系的都通用的众多芯片,不单单指某项技术或者某块芯片。
首先是相同点,两者都是现代的CPU设计范例,基于RISC的指导思想,在体系设计初期时就充分考虑到了CPU内核面积,速度,高级语言支持等很多因素。又吸取了51、x86等20年前就商业化的体系所暴露出的问题,所以从现代眼光来看,都是非常先进的设计。最重要,GCC对ARM和AVR都提供了相当好支持,而且可以免费使用。网上,特别是外国网上都有很多开放资源可以参考。两者在国内都属于市场引入阶段。销售方面,各有两大著名国内MCU公司做代理,而且巧合的是都是来自广东的奸商(哈,开玩笑,勿当真)。
AVR和ARM的区别就比较多了:
ARM是IP核,可供各大芯片商集成到各自的设计中,好比是软件语言中的C++,如果你想换一家厂商或者某家的货太贵,都会有其它的厂商来竞争,至少从理论上,你不会被一家厂商套住。
AVR这方面就差点,ATMEL一家,别无分号。你只能在他的系列中选一个型号,无法选厂家。好比是软件语言中的Java,虽然现在免费(指Java的SDK,不是AVR)或价格低,但市场前景更多的掌握在厂商手中。
实际产品成本方面,AVR优于ARM,毕竟AVR是8位机,配什么外设都便宜,由于速度比ARM低,PCB版也好设计,20MHz的数字电路基本上只要通就行了,不用过多考虑信号完整性什么的。而ARM的速度能轻易上100MIPS,32位的CPU也不是吹的,速度上AVR根本没法比,不过带来的问题就多了,要4层PCB,而且外设也贵多了。
功能方面,ARM大大优于AVR,ARM可以做PDA,手机,AVR显然不行,最糟糕的是ARM上可以跑Linux,Linux可以做多少事啊,虽说国内实际在ARM平台上跑出Linux而又愿意公开技术的人几乎没有(我正在努力朝这个方向发展),但前途绝对是光明的。功能上的优势意味着ARM比AVR有着更广的应用范围,所以,双龙耿先生所说的“中学用AVR”如果是对的话,大学里就应该用ARM。
外设方面AVR稍强,实际上我们可以看到Atmel公司的基于ARM核的AT91M55800A包括了很多AVR的外设,但还缺TWI/I2C,可变增益ADC,EEPROM等好用的部件。但毫无疑问,ARM的外扩外设能力比AVR强的多,所以外设方面算平手吧
操作系统和软件源码资源方面,ARM拜Linux之赐,比AVR有优势点。但AVR上的嵌入式操作系统也不是没有,uC/OS-II就不错,如果能在Mega8515等便宜的芯片上跑起来的话,我看350元的ARM版也难卖,这一点双龙不知有没有计划?
调试手段方面,ARM应该优于AVR,AVR就一个JTAG接口的仿真器我个人还可以买一下,但所支持芯片有限,ARM方面书上有相当多的方法调试,这里我不熟也缺经验,就不瞎说了。
最后来个有个性的结尾,鉴于GCC对AVR和ARM的支持都很好,所以我决定都好好学,这里顺便给GCC打个广告,大家也看得出RISC的MCU最好还是直接使用C语言,GCC编译器显然是最明智的选择。