Monday, July 07, 2014

ARM-based SOC vs 8051-base USB device solution

目前我遇到的USB device控制方案有兩種:一種是8051-based,另外一種是ARM-based。這兩種控制方案基本上是兩種不同的硬體思維所產生的。

8051-based USB devices

會採用這種方式的公司通常是要生產[固定功能]的USB裝置,也就是這家公司出的USB裝置幾乎只有一種功能(了不起再多一種)。要改成其他的,不好意思,等下一版IC吧。

因為USB功能大多固定,所以許多功能直接用硬體做掉會比較有效率。相較之下,CPU只是拿來做一些客製化或流程控制用,因此用8051綽綽有餘了。當然,重點是[授權金很便宜,甚至不用錢],這永遠是台灣IC設計的最愛

我之前的公司就是做這一類的,8051負擔的工作很簡單:

1.          初始化USB controller
2.          提供 USB descriptors USB Host
3.          處理一些 standard/class/vendor requests

有沒有發現,USB資料傳輸根本不需要8051介入,狠一點的公司可能可以連8051都不要了。

優點

1.          便宜(功能固定)
2.          效能好(還是因為功能固定)

缺點

1.          支援的記憶體大小有限。雖然大多數的8051開發環境宣稱支援C,但是為記憶體大小的關係,大多數還是得用組合語言寫程式。更慘的是,用C編出來的組合語言有時還會有問題。而且幾乎不可能在8051上執行OS,這代表所以事情都得自己來。
2.          支援的周邊有限,擴充能力有限。

ARM-based USB devices

會採用這種方式通常是希望同一顆IC可以支援的USB功能越多越好。這種想法所導致的結果就是USB device controller的功能會非常有彈性,而CPU控制所有事情。8051當然沒辦法負擔這種差事-它跑太慢了,而且支援的周邊有限。

ARM架構就不用多說,用google可以查出一狗票資料。

優點

1.          有彈性,不論是硬體或軟體
2.          支援很多周邊

缺點

1.          比較貴,不過現在ARM已經有便宜版
2.          效能一般會比純硬體的裝置差

結論

就軟體工程師的角度來看,當然是後者比較好玩,因為軟體複雜度比較高,可以調整的東西比較多。

No comments:

codeblock