ChamberPlus System Level Studio

  首頁 | Contact to us

 

News
Products
FAQ
Technicality
Links
OldNews

互動區:

留下您的足跡

想討論嗎?

 

                                                            文章主題: USB 系統軼事
------------------------------------------------------------------------------------------------------------------------------------------------
我USB的文章就以這幾個USB的故事說起:來講幾個關於USB好玩的事情。

學USB 會不會很難?!

其實,做USB 的產品最討厭的地方,倒不是寫USB的 Firmware 。 最討厭的地方:應該是相容性問題!!

        只要是做過USB的產品的工程師多多少少都會做過這些事情--解相容性的問題。 也是他們心中最大的夢魘。

        USB 規格不是厚厚的一本嗎?(2.0 比1.1 厚得很多。)大家都不是照規格做,怎麼會有相容性問題呢?

        或許現在USB產品很普遍了,大家也習以為常了,自然都不會留意到這件事。現在的工程師也比較幸福多了,現在連做IC設計工程師,也不必花太多心思去看規格,反正現在USB 2.0 IP(智權)的東西都買得到,當然也不會到處亂買,都得看晶圓代工廠的臉色,調過沒問題才用;而且現在開IC設計公司,弄一點錢或找個『富爸爸』就搞定這個問題了。

        但早期剛開始做時,是抱著規格書跟IC設計工程師,幾個人邊做邊學,是辛苦一點,但學得就紮實多了。相對來說,碰到的問題就千奇百怪了。那時還Win98剛出來,南橋有USB的也不多。最簡單的方法就是買張USB to PCI 卡。而這上面的IC就千奇百怪了。

        先講一個好玩的:我們都知道USB 規格都跟您說在資料傳輸過程中,若是連續幾個1 或0 的話,USB 必須塞 Bit-Stuff。意思就說原本的資料長度有可能因為您的資料內容而會所有變化,可怕的是:他會變長!然後USB 中的SOF(Start of Frame)又是規定每 1 mSec一定會來一個!我在MP3 系統應用中解釋USB時有提到,Bulk Transfer 會在SOF的間隔中,拼命的傳資料,因為若您能在SOF中塞進 15個乃至更多 Bulk Transfer Packet, 那您就幾乎搶到近 1MB/Sec 傳輸速率了。(USB規格號稱12 Mb/Sec, 那還要扣掉SOF ,PID,CRC 等token 的!)結果大家都沒想到我上提的BitStuff 的問題,靠近SOF的最後一筆BULK 卻因頻寬用盡,無法回 NAK 或ACK 時,就 主不知從,從也不知主!(那一Packet 資料就人間蒸發了!)兩邊就還傻傻的在那邊傳。這問題連要複製都很難耶∼因為跟您傳的內容有關耶!真是折騰人∼這個USB IC 還當初股票火紅的威盛做的。不過,查一下規格書,倒也沒解釋這種現象。 所以,死無對證!

        結論就是說:規格寫的一定對;沒寫的不代表他不對啊∼∼

        再來,用USB 最早最透徹的是誰?APPLE 電腦,iMac 七早八早就已經全USB介面了,主機有USB Root Hub不稀奇,鍵盤上有USB Hub ,連螢幕的前前後後都有,好像都不用錢似的。更討厭的是:他不是
MicroSoft 作業系統。完全跟人家玩不一樣的,存心玩要死我們這些工程師。做USB IC設計公司裡都會多多少少買iMac 或iBook ,都不是好玩,都是為了測他的相容性。APPLE 靠這樣賣電腦的啊?!

            當USB Device 插進Host 我們都知道,HOST 都會 Assign 一個Address 給USB Device 。一般習慣上,(所謂習慣上,指的就是MicroSoft 啊!)Address 0 與 1 都會保留給主機板的南橋用。然後,USB Device 會從 Address 2 排列起。它 iMac 就不是這樣給您玩的,他偏偏給您來個亂數取樣,一下子給您個 192 或是 201 的!然後,又因為他又給您用了一大推USb Hub 在上面,意思說,先天上您的USB 裝置在串列上,已經有一大堆人,排在您前面了。您要怎麼死的都不知道。我們曾經碰過,iMac 螢幕上前後USB Hub 是不一樣呢。結果相容性一個會過,另一個卻不會過!傷腦筋呢∼∼人家APPLE 又不會鳥您,最後我們只好跟會客戶解釋,萬一,若有終端使用者碰到問題時,請他麻煩照『正常體位』來,請他插前面。(對不起,有點顏色!)

        我事後想,或許APPLE 也會想到類似的問題,才會前前後後提供這麼多 USB Hub ,又擔心早期作Hub 的品質沒那麼好,只好前後不一樣的,至少不會全掛了吧!

        不過,歷經這幾年下來∼市場的淘汰,或是說因為IC的IP(智權的成熟度的關係),其實,現在USB IC要出這種奇奇怪怪的問題應該很少見了,但問題是否因而減少呢?!結果,還有另一些延伸問題會跑到PC 軟體這邊。就是軟體相容性問題!!

        我想這是最困擾USB團隊的問題,注意喔∼我講的是USB團隊喔。因為USB要寫韌體也要驅動程式也要應用軟體,(有時還包括測試工程師。)這些都不是一兩個人可以完成的。

        首先是PC 端的驅動程式,寫驅動程式可不是我們一般拿VC++或VB來寫的∼雖然有許多驅動程式套裝軟體,但讓工程師最愛的,應該還是MicroSoft 的DDK 。(DDK:Driver Development Kits),可能跟他招牌有關:MicroSoft 。另外是,驅動程式是躲在一般人看不到的地方,出問題也最難解決,有時還不小心來個Blue Screen ,連OS 都死當。以我的經驗來說:整個作USB的產品來說:最辛苦的就屬這一項工程師。您知道嗎?DDK 還分 98DDK、2000DDK及 XP DDK 等。什麼意思?代表寫驅動程式要考慮跨不同OS 平台問題。作產品,您可不能說:我只支援XP 而已∼。您想,連微軟都得分98DDK 、2000DDK 您就知道連微軟本身都搞不太定跨平台驅動程式的問題,您覺得公司內那個小小工程師如何應付得了呢?!

        所以,微軟也不希望客戶太多抱怨,所以,現在USB 盡量以Class 來解決這個問題,但畢竟Class 方式也只能盡量涵蓋多一點運用或向前相容。但對一些DIY族來說,就是最痛苦了,因為不是主流,所以,也最會被忽略。如果,您只是想用傳統DIY觀念來玩USB的話,您可要三思一下,對您來說:最大的挑戰絕對不是來自USB 控制晶片,而是軟體問題。


        若您是要作產品的話∼那就得有更大的決心,因為還有Mac OS 中的USB驅動程式。據我所知,會寫Mac OS 中的驅動程式者,都快變成需要保護的稀有動物了。有些公司連養都不一定想養∼就另尋外包公司解決。

        而這些不管是硬體或軟體 ,相容性的問題也都一直在困擾著這些系統工程師們,每每看到做USB 產品的公司裡,那一大排的個人電腦,上面標示著不同的語系與不同版本的作業系統,甚至乃至不同品牌的主機板。還一副生人莫近的警告牌時就心有戚戚焉∼∼,結果呢!?下次,客戶 Call 您說,USB 相容性有問題時,搞了老半天搞不定,只好硬著頭皮跟客戶說:您這台電腦能不能借我個幾天?! 辛辛苦苦的把他雙手捧回公司。真的,做相容性的電腦多一台都不嫌少啊!!

~~祝福作USB系統的工程師們 幸福美滿,長命百歲!

首頁 | News | Products | FAQ | Technicality | Links | OldNews

Telephone : 886-3-5439918    FAX : 886-3-5437632

Copyright(C) 2005 . ChamberPlus System Level Studio All rights reserved.  Last Update: 2008年01月18日。