ChamberPlus System Level Studio

  首頁 | Contact to us

 

News
Products
FAQ
Technicality
Links
OldNews

互動區:

留下您的足跡

想討論嗎?

                                         

                                                    文章主題: MP3 系統應用簡介(四)-- USB Part 2
--------------------------------------------------------------------------------------------------------------------------------------------------

接下這個章節我是要講關於USB的東西。 (關於這個部分的其他內容也可以參考USB系統部分的文章)

        我是原本一直想寫一本關於USB的書,但旗威的林伸茂先生和在文魁寫VB與串列通訊的范逸之先生都跟我說:寫書很辛苦,又賺不了什麼錢,尤其是我們這些寫技術書的人。同樣是電腦書籍的書,別人可能只要翻譯或剪剪貼貼就編輯成冊了。而我們的每一字每一個數據,都是驗證所得的。稿費卻都一樣,也不能怪出版社,畢竟會買所謂WORD或EXCEL 的人總比買8051 書的人多啊!希望各位對技術有興趣的人,多給他們好好鼓勵與支持。

        關於USB的內容,我也不想講太細的東西,也不要拿規格書逐一 翻譯給大家看,因為我也這樣走過的,看到難得一本講USB的書,興沖沖的買回家看之後,還是『一目十行,過目即忘』或是『有看沒有懂』。

 
        USB的系統非常抽象,又不如RS232 那麼平易近人,USB 幾乎非得靠PC(HOST)才會WORK,然後USB在PC端的程式又複雜。RS232 在通訊上,只要送您不送資料,他是沒東西的;而USB呢, 隨時隨地的BUS上東西一大堆,只要您掛上USB 裝置後∼他就一直有訊號來來回回∼而這些訊號又可以串一大堆東西∼也不一定是您的東西(指若掛在USB HUB 之後)又看不懂,還要特殊的儀器才看得到,就算看得到,
又看不太懂。所以,大家大部分還是都買書看一看,然後還是停在那。

          USB 雖然複雜,但其實因為他的通訊協定與應用都明確地定義出來, 所以,反過來說:寫USB系統的東西是很簡單的,只要您抓得到精髓即可。


            我在此先聲明一下:我在講的內容會以 USB 1.1 的規格為主, 您不要太訝異,其實精髓是一樣的,而 USB 2.0 只是 Clock 比較快,通訊協定內容還是大同小異,而且很奇怪的是:USB 1.1 還有人會玩蠻底層的東西,譬如說自行定義通訊協定,寫寫PC Driver,到了 2.0 大概大家都投降了,都只剩下IC設計公司內少數人的專利了。其實,對我做系統的人來說:USB 1.1 都已經比傳統的 RS232 或EPP 快多了,也夠用了,又不一定要到那麼高速,目前要比較高速的資料傳輸,大概就是碟機,網路的東西。至於影像還蠻難說的:畢竟人的視覺反應 也不需那麼快,Frame rate 在30 frame/sec 又在現在影像壓縮技術,
這麼進步。所以,標榜速度無非都是生意人的手法罷了。

        況且,現在USB 2.0在IC製程上,幾乎是.18 以下製程。 都已經不是市井小民(我說的是意思是:不是隨隨便便的人開公司就可 玩的!現在是比較便宜了,一套光罩約五百萬元台幣,已經半價了喔∼)
而只要您懂得基本USB概念的東西,也可以用 USB 1.1 做出不錯的產品。 像我所做的 USB ROM Emulator ,就是簡單的利用USB的特性, 可以做出簡單方便使用的發展工具。


        開始講USB 了:USB 基本上是主從架構,就是要有一個主(Host) 還有一個從(Device) 才能完成一個系統。從(Device)是被動的。但 Host會給Device 很大的發揮空間,只要依循 Host 的指示即可。 當我們將Device 插到Host 身上時,HOST就會問DEVICE 身份。這個動作稱之為 Enumeration ! 這時Device 就要老老實實地回答標準答案。即規格書上的 Device description:他是有層次的:依序是:

        一:是誰?(Device descriptor):包括屬於哪一個 Class (這會決定 PC端要不要額外從客戶提供的安裝驅動程式?)PID(Product ID) andVID(Vendor ID) 等,還有一個對下一層的描述:Number of Configuration 。
因為一個裝置可能有多種Configurations ,譬如一個人機介面(HID)包括 了滑鼠與鍵盤。一般多種Configurations 在PC端要安裝的是 Composite Driver !

        這邊講一個跟MP3 系統有關的: 一般 MP3 的USB系統用的是 MSDC, 就是Mass Storage Device Class ,代表在Windows2000 以後的作業系統, 是免額外提供安裝驅動程式(作業系統內附的)。就是隨身碟啊。不過,在 Windows 裡,很不幸的,他不能跟別人成為 Composite Driver 。 在這樣子代表兩個問題:

        為什麼?Microsoft 沒有解釋,不過,也可想而知,MSDC的上層應用程式, 就是『檔案管理員』。幾乎是WINDOWS作業系統的核心了。哪有可能讓別人共用或予取予求呢?所以,現在企業界不是要防隨身碟進入公司嗎?我看從根要解決這個保密性的問題,還是得給Microsoft 賺了。

        不能成為Composite Driver 有什麼關係?代表只能用檔案管理員,去控制您的MP3 ,所有PC的軟體都透過『檔案管理員』解釋命令才傳給USB MP3,如果,您想偷偷下個命令給MP3 ,您覺得可以逃過 Windows 的法眼嗎? 偷偷下什麼命令?譬如:在MP3 量產過程中,我想更新Firmware
(智能升級),我想寫產品序號到MP3 中等等。這是很重要的。 (話說如此:還是有辦法的啊:答案可能很多做隨身碟的公司都知道,我就先保留了!)

        二:在上層描述了Configuartion 之後,當然就是要解釋Configuration, 這包括了:裝置屬性:耗多少電?是Self-Power 或 Bus Power ?這項描述簡單的範例就是:一樣是碟機,有的是光碟機,硬碟機或是可移動磁碟機等。最後又是一個對下層的描述:Number of Interface 。

        三:在上層描述了Interface 之後,當然就是要解釋Interface, 這包括了:Interface class 及 interface protocol 等,最後又是一個對下層的描述:Number of Endpoint 。例子:一樣是MSDC 中 您可能用 BOT(Bulk Ony Transfer)或CBI(Control/Bulk/Interrupt)方式傳啊!其實描述到這裡,整個USB 裝置就浮現在眼前了。

        四:在上層描述了Endpoint 之後,當然就是要解釋Endpoint, 這包括了:Endpoint 數量與傳輸方向,每一個Endpoint 只能管一個上傳或下傳。及傳輸種類:Control or Bulk or ISOchronous and interrupt !
既然叫 Endpoint ,就是說他已經也是裝置描述的最後一項了。


        一般USB的傳輸形式為:Control,Bulk,ISOchronous and interrupt !

        Control:雙向,整個封包形式為:Setup/Data/Status(ACK/NAK),只能在 Endpoint 0。在UHCI 中一個SOF 會出現一個Setup Token,(什麼是 UHCI,就是Intel or VIA 的南橋。),在OHCI 中一個SOF 會可能出現三個Setup token,(什麼是 OHCI,就是SIS or ALI南橋。)(註:我講的是早期USB 1.1)的。所以,您的IC碰到 OHCI要小心一點。早期啊,現在的南橋嘛都是EHCI的(USB 2.0)。

        Bulk:可單向或雙向,資料不能掉,保證正確,傳輸不成功(就是沒有ACK) ,Driver要求重傳!他會在兩個SOF中拼命的塞資料傳。MP3傳音樂檔就得靠他,還有就是作儀器設備或Tools 的東西。就得靠Bulk 傳輸。

        Isochronous:可單向,也可雙向,資料傳過就算了,不檢查對錯,一般就是傳及時影像或聲音。您沒看到或沒聽到就算了。在串接一串USB裝置裡,他是會搶 BULK 的頻寬的。這是要小心的。

        Interrupt :只有單向,而且是Input to the host,是Host Polling 的一種,就是滑鼠或鍵盤這類的HID裝置。


總結這個章節:

--->USB Descriptors:
------>Specification Release
------>Class information
------>Device Protocol
------>Max Packet Size for EP0
------>VID/PID
------>Number of Configurations:

----------->Device Attributes
----------->Maximum Power
----------->Number of Interfaces:

-------------->Interface Class
-------------->Interface Protocol
-------------->Number of Endpoints:

------------------>Address of Endpoint
------------------>Direction of Endpoint
------------------>Attribute of endpoint
------------------>Maximum Packet size


            至於,想DIY USB的朋友,要有相當的認知,因為作USB的東西,尤其是有關產品的東西,可不能呼呼聾聾的做完就算了∼因為這類東西,是非得掛在HOST 上面才能動∼不像RS232 隨便捉兩台,
Baudrate 訂一下∼差個5%也沒關係∼,因為USB規定BUS上是可以同時串接好幾十台的東西,而且在PC的驅動程式可都不是隨隨便便讓您CALL得到的。


        對我們熟悉的環境來說:還都是寫寫美美的API程式而已!所以,他跨工作平台的相容性是很重要的,譬如說:98SE 及Win2000 甚至WIN XP 他的特性都不一樣的∼這是很討厭的地方,萬一出問題了,
又很難除錯,所以,最好是要有一些基本的PC平台程式的認知!關於相容性的問題,我會另文討論。

        至於,大家常聽到的 Cypress的解決方案的問題,具我所瞭解是,IC又貴又難買∼而且,他也只不過是提供一個USB可下載 Firmware Update 的機制,但程式的容量不大∼(不外掛ROM的條件下),所以,自然而然,大家還是比較喜歡用一棵標準的 8051 加個 RS232 to USB 可能比較快,只不過,速度差的十倍而已。

        至於USB在產品會不會完全取代RS232 或 Parallel 來說:站在作產品的角度來看,應該是沒錯的∼但對喜歡DIY的朋友來說,就未必是福音了。因為就目前來看,作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日。