目前我遇到的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:
Post a Comment