這里我們討論的AVR和ARM都是泛指,就是說,包括所有機器指令集和這兩個體系的都通用的眾多芯片,不單單指某項技術或者某塊芯片。
首先是相同點,兩者都是現(xiàn)代的CPU設計范例,基于RISC的指導思想,在體系設計初期時就充分考慮到了CPU內核面積,速度,高級語言支持等很多因素。又吸取了51、x86等20年前就商業(yè)化的體系所暴露出的問題,所以從現(xiàn)代眼光來看,都是非常先進的設計。最重要,GCC對ARM和AVR都提供了相當好支持,而且可以免費使用。網(wǎng)上,特別是外國網(wǎng)上都有很多開放資源可以參考。兩者在國內都屬于市場引入階段。銷售方面,各有兩大著名國內MCU公司做代理,而且巧合的是都是來自廣東的奸商(哈,開玩笑,勿當真)。
AVR和ARM的區(qū)別就比較多了:
ARM是IP核,可供各大芯片商集成到各自的設計中,好比是軟件語言中的C++,如果你想換一家廠商或者某家的貨太貴,都會有其它的廠商來競爭,至少從理論上,你不會被一家廠商套住。
AVR這方面就差點,ATMEL一家,別無分號。你只能在他的系列中選一個型號,無法選廠家。好比是軟件語言中的Java,雖然現(xiàn)在免費(指Java的SDK,不是AVR)或價格低,但市場前景更多的掌握在廠商手中。
實際產品成本方面,AVR優(yōu)于ARM,畢竟AVR是8位機,配什么外設都便宜,由于速度比ARM低,PCB版也好設計,20MHz的數(shù)字電路基本上只要通就行了,不用過多考慮信號完整性什么的。而ARM的速度能輕易上100MIPS,32位的CPU也不是吹的,速度上AVR根本沒法比,不過帶來的問題就多了,要4層PCB,而且外設也貴多了。
功能方面,ARM大大優(yōu)于AVR,ARM可以做PDA,手機,AVR顯然不行,最糟糕的是ARM上可以跑Linux,Linux可以做多少事啊,雖說國內實際在ARM平臺上跑出Linux而又愿意公開技術的人幾乎沒有(我正在努力朝這個方向發(fā)展),但前途絕對是光明的。功能上的優(yōu)勢意味著ARM比AVR有著更廣的應用范圍,所以,雙龍耿先生所說的“中學用AVR”如果是對的話,大學里就應該用ARM。
外設方面AVR稍強,實際上我們可以看到Atmel公司的基于ARM核的AT91M55800A包括了很多AVR的外設,但還缺TWI/I2C,可變增益ADC,EEPROM等好用的部件。但毫無疑問,ARM的外擴外設能力比AVR強的多,所以外設方面算平手吧
操作系統(tǒng)和軟件源碼資源方面,ARM拜Linux之賜,比AVR有優(yōu)勢點。但AVR上的嵌入式操作系統(tǒng)也不是沒有,uC/OS-II就不錯,如果能在Mega8515等便宜的芯片上跑起來的話,我看350元的ARM版也難賣,這一點雙龍不知有沒有計劃?
調試手段方面,ARM應該優(yōu)于AVR,AVR就一個JTAG接口的仿真器我個人還可以買一下,但所支持芯片有限,ARM方面書上有相當多的方法調試,這里我不熟也缺經(jīng)驗,就不瞎說了。
最后來個有個性的結尾,鑒于GCC對AVR和ARM的支持都很好,所以我決定都好好學,這里順便給GCC打個廣告,大家也看得出RISC的MCU最好還是直接使用C語言,GCC編譯器顯然是最明智的選擇。
這樣,你對arm和AVR的聯(lián)系與區(qū)別有理解了嗎?