令人興奮的消息:Microchip併購Atmel

一月 30, 2016
Facebook
Twitter
SEGA對任天堂,Mac對PC,Android對iOS,科技類公司爭奪市占率的「聖戰」至今依然持續。但從90年代以來,Maker和嵌入式系統技術人員就捲入一場戰爭。那就是8位元微控制器,Microchip的PIC與Atmel的AVR之戰。
 
Microchip以35.6億美元併購Atmel的消息公諸於世。這代表戰爭終於結束了嗎?這對開發嵌入式系統的前景來說意味著什麼?
搞不好暫時不會發生任何變動。Microchip和Atmel還是會繼續製造旗下產品,售後服務也會妥善延續下去。因為這兩家公司的產品隨處可見,無論在家中、車上,還是口袋裡。Microchip目前有12億個以上的PIC要出貨,Atmel的megaAVR就用在第一片Arduino當中。這將Maker導向物理計算的天地當中。
 
不過,這其中還有許多值得期待之處。Microchip/Atmel能夠結合AVR和PIC的優點,做出非常棒的微控制器平臺。儘管32位元ARM晶片價格下滑,名氣扶搖直上,但8位元的需求還是很高,用這個就夠了。
 
那麼,PIC和AVR的差別是什麼?而這樣的差別會有什麼問題?剛開始學嵌入式軟體的人最好選Arduino,因為這種工具容易使用。但若想邁向下一步時,就必須兩者擇一。
 
AVR:以開放原始碼的方式對Maker友善

 
假如之前用過Arduino,就等於已經設計過AVR的程式了。這種程式會用在Uno、Pro、Mega、Gemma、LilyPad、Leonardo、Diecimilia、Duemilanove等許多開發板上。由於是靠開放原始碼社群維護,因此在Maker之間很流行。假如想要開始使用AVR單機設計程式,所有需要的工具都免費配齊,能夠用在所有作業系統上。AVR-GCC功能齊全,支援C編譯器(Mac使用者的設定就和安裝CrossPack一樣簡單)。而以Atmel官方認證的AVRISP mkII、Sparkfun的Pocket AVR Programmer,以及用其他眾多程式設計裝置之一編寫的程式,則可以用AVRDUDE工具程式上傳到AVR微控制器。
 
AVR的R指的是RISC(Reduced Instruction Set Computing,精簡指令集)的R。這表示假如想要直接使用組合語言時,就會覺得非常輕鬆。指令集適合搭配C編譯器使用,就算是具有時效性的例行程序也能做人工編碼。用組合語言編寫的優秀AVR專題多不勝數。Linus 「lft」 Åkesson的CraftPhasorBitbanger展示板,Uzebox遊樂器,以及我那可用示波器瀏覽網頁的Terminalscope專題就是如此。
 
遺憾的是,AVR的缺點就在於價格。ATmega328P採用Arduino UNO,即使能用麵包板,DIP套件也要3美元70美分。裡頭的內容是程式碼用的32K的ROM、2K的RAM,以及I /O針腳23根(其中6根可以讀取類比電壓再輸入,還有其中6根可以用來調整LED的光量再輸出PWM信號)。假如需要更多的針腳或記憶體,比方像是想要16K的RAM及32根I /O針腳的40針腳DIP套件,就必須考慮要不要升級到ATmega1284。這一個要7美元67美分。假如表面黏著做得好,即使添加板載USB或其他古怪的功能,也會變得稍微便宜一點。但若選擇別家公司的產品,就能以更便宜的價格取得同等零件。
於是PIC就出現了
图片

Arduino出現之前,Microchip的PIC就受到業餘愛好者和專業人士一致推薦。這些產品陣容龐大,與週邊設備打包銷售,而且價格還有夠便宜。假如想用DIP套件當中的28條類比輸入通道,不妨選用價格2美元的PIC16F1717。假如想用USB製作能與電腦說話的裝置,則可以選用1美元40美分的PIC16F1454,無須額外的配件。
 
Microchip將有趣的週邊設備藏在PIC裡,只要用單一晶片就能一次搞定,總成本會降得更低。還有許多開發板搭載類比數位轉換器(DAC),能夠實際輸出類比電壓。互補波型產生器可以輕鬆操控直流馬達,此外還有CLC這個小型版的FPGA,能夠針對輸入訊號進行簡單的運算(像是AND、OR或XOR),無須藉由主處理器就可以配置路徑輸出,即使在睡眠模式也可以運作。
 
因此,PIC非常便宜,隨處都能取得,搭載許多酷炫功能。那缺點呢?為什麼2000年中旬在Maker之間掀起微控制器革命的是AVR,而不是PIC?相信很多人會回答原因在於工具。現在專為AVR開發的開源免費工具洋溢在各處。反觀想在PIC上設計程式時,則必須使用Microchip的軟體和硬體。
 
直到幾年前為止,PIC的開發環境還僅限於Windows。Microchip現在的開發環境(IDE)MPLAB X建立在NetBeans平臺上,因此在Windows、OS X和Linux上皆可執行。要下載的檔案大小為500MB以上,介面很難用,內有許多工具欄、側邊欄和設定對話框。喜歡命令列的人還可以用藏在MPLAB X應用程式深處的腳本,將程式碼上傳到晶片中。
 
PIC的記憶體與AVR的純RISC架構不同,會分段成128個位元的記憶庫(bank),一次只會啟動其中一組。這種安排會妨礙開源編譯器的開發。Small Device C Compiler是我所知的唯一一個編譯器。儘管我用這項工具留下某種程度的成果,卻不能使用最新型晶片的所有功能,還有bug。假如想靠PIC的C設計程式,就只能使用Microchip的XC8編譯器。免費版不能將程式碼最佳化。假如想要盡快寫出程式碼,就必須購買專業版授權,這玩意也要價1000美元。姑且不論販賣大量裝置的專業工程師,這樣的價格業餘愛好者是出不起的。
 
就如裝置的程式設計師所言,PICkit 3(50美元)是唯一確實支援最新型PIC的裝置。但設定卻很困難(我無法直接以Mac操作,需要用Windows PC升級韌體)。不過執行起來倒是很順暢。
 
未來
 
我的夢想是希望Microchip/Atmel製造的微控制器是AVR架構,擁有開源工具鏈,搭載PIC通用的週邊設備,價格便宜。但這是否為時已晚?TeensyArduino Due這些32位元的ARM Cortex-M裝置開始占領低階市場,而類似Raspberry Pi Zero的全功能Linux系統和CHIP用5美元就買得到。但我們也不能忘了簡單的8位元微控制器。只要有了這個,幾星期內就能學會所需的功能。像是計算時脈週期的方法、如何編寫經手動調整過的組合語言,以及將指令切割,讓程式碼配合便宜的零件等,這些都是讓我和無數駭客對嵌入式系統燃起熱情的地方。

(譯:李友君)
[原文]

Social media & sharing icons powered by UltimatelySocial