基于EZ-USB FX2的USB 2.0系統(tǒng)軟件開發(fā)
通用串行總線(Universal SeriaI Bus,簡稱USB)以其易插拔、無需配置、真正的即插即用等特性獲得了廣泛的市場認可。USB 1.O標準于1996年1月提出,傳輸速度為1.5 Mb/s的低速模式;1998年9月提出的USB 1.1標準則將速度提高到12 Mb/s的全速模式,并且增加了中斷傳輸?shù)膫鬏敺绞?。USB 2.0標準于2000年4月提出,將傳輸速度提高了40倍,達到了480 Mb/s的高速模式,足以滿足大多數(shù)外設(shè)的速率要求
1 USB2.0接口芯片EZ-USB FX2的系統(tǒng)架構(gòu)及開發(fā) 要點
CYPRESS的EZ-USB FX2是業(yè)界推出的第一個USB 2.0集成外圍控制器。該器件集成有1個8051處理器、1個串行接口引擎(SIE)、1個USB收發(fā)器、8.5 kB片上RAM,4 kB FIFO存儲器以及1個通用可編程接口(GPIF、)。FX2是一個相當完整的解決方案。
集成的USB收發(fā)器連接到USB總線管腳D+和D一,串行接口引擎sIE實現(xiàn)串行數(shù)據(jù)的編解碼、檢錯、位填充和其他USB所需信號層的任務(wù)。最終sIE實現(xiàn)從USB接口 收發(fā)并行數(shù)據(jù)。
FX2中集成了增強型的8051處理器,他可工作在12MFIz,24 MHz和48 MHz的頻率,并且一個指令周期只需4個時鐘周期。單片機只是進行USB傳輸?shù)木S護及控制并不進行直接的數(shù)據(jù)傳輸。
為了實現(xiàn)USB 2.0的高速帶寬,把FX2的端點FIF(和從屬FIFO(實現(xiàn)和外部邏輯器件或處理器接口的FIFO)集成在一起以減少內(nèi)部數(shù)據(jù)傳輸時間。并且FX2的FIFO有獨特的"量子"特性,數(shù)據(jù)以I-JSB分組大小為單位被提交到FIF0,而不是每次一個字節(jié)。這簡化了錯誤恢復,如果用經(jīng)典的FIFO,當產(chǎn)生壞的(CR((循環(huán)校驗碼)時,所有的數(shù)據(jù)必然泛濫流出,因為他是壞數(shù)據(jù);如果CRC是好的,則分組信息能從USB域交換到I/O(輸入/輸出)域。對外來說,他看起來仍然像FIF0,但代之以每次只傳送1個字或1個字節(jié)為立即傳送整個分組信息。端點緩沖器可通過固件設(shè)置為雙、三或四緩沖器,與所需的數(shù)據(jù)量或靈活性有關(guān)。Fx2的FIFO量子特性及可編程設(shè)置多緩J沖為滿足USB 2.0所需帶寬提供了保障。
FX2片上只有RAM而無ROM,可以直接通過USB下載程序,實現(xiàn)所謂"軟配置"。"軟配置"提高了軟件的調(diào)試及升級速度。
FX2與外部邏輯的2種接口方式:Slave FIFlos方式和通用可編程接口GPIF、方式。Slave FIFOs方式是從機方式,外部控制器可像普通FIF0一樣對FX2的多層緩沖FIF、O進行讀寫。FX2的Slave FIFOs工作方式可設(shè)為同步或異步;工作時鐘可選為內(nèi)部產(chǎn)生或外部輸入;其他控制信號也可靈活地設(shè)置為高有效或低有效??删幊探涌?GPIF)方式是主機方式,可以軟件編程讀寫控制波形,他幾乎可以對任何8/16 b接口的控制器、存儲器和總線進行數(shù)據(jù)的主動讀寫,非常靈活。
2系統(tǒng)軟件的開發(fā)
USB系統(tǒng)軟件主要包括設(shè)備固件、USB設(shè)備驅(qū)動程序和應(yīng)用程序3個部分。
2.1固件架構(gòu)
對于USB總線控制芯片,如果沒有芯片與主機及外部邏輯通信的代碼,芯片則無法完成響應(yīng)功能。為了便于開發(fā)者縮短開發(fā)周期,CYPRESS為開發(fā)者提供了固件程序框架來實現(xiàn)循環(huán)查詢的程序和與主機通信的端點中斷程序。用戶只需在這些框架里加入自己的代碼就可以實現(xiàn)特定的功能。固件程序框架可以實現(xiàn)芯片初始化、處理USB標準設(shè)備請求、電源掛起管理等。為用戶提供3類鉤子函數(shù):任務(wù)調(diào)度,標準設(shè)備請求解析,uSB中斷處理。
EZ-USB FX2固件程序框架首先初識化所有內(nèi)部狀態(tài)量,然后調(diào)用用戶初始化函數(shù)TD-Init(),然后初始化UsB總線設(shè)備接口為非配置狀態(tài),并同時打開中斷。當完成上面的任務(wù)后,EZ-USB FX2固件程序就開始重新枚舉,直到在端點0收到SETUP包為止。一旦EZ-USB FX2收到SETUP包,固件程序框架就開始進行任務(wù)分配、任務(wù)分配就是依次重復地執(zhí)行以下過程:
(1)調(diào)用用戶函數(shù)TD-Poll()。
(2)檢測是否有未處理的設(shè)備請求,如果有,解析接收到的命令,進行適當響應(yīng)。默認情況下,他會對給定的標準設(shè)備請求實現(xiàn)USB定義的響應(yīng);但是,框架提供分支程序允許用戶程序解析處理或者覆蓋特定的設(shè)備請求。
(3)檢測USB核是否報告了一個USB掛起事件,如果有,調(diào)用用戶函數(shù)TD~Susupend()。當返回值為真,檢測是否有恢復事件,如果沒有,則掛起處理器。當檢測到恢復事件,調(diào)用用戶函數(shù)TD-Resume(),并繼續(xù)執(zhí)行步驟(3)。當TD-Sustlpend()返回值為假時,則繼續(xù)執(zhí)行步驟(3)。通過以上流程,固件程序?qū)崿F(xiàn)了簡單的合作任務(wù)執(zhí)行框架。
2.2驅(qū)動程序
在Windows平臺下,USB驅(qū)動程序由3部分組成:USB設(shè)備驅(qū)動程序,USB總線驅(qū)動程序和USB主控制器驅(qū)動程序,他們必須遵循win32驅(qū)動程序模型(wDM)。其中,windows操作系統(tǒng)已經(jīng)提供了處于驅(qū)動程序棧底的USB總線驅(qū)動程序和USB主控制器驅(qū)動程序。而USB設(shè)備驅(qū)動程序由設(shè)備開發(fā)者編寫,他通過向USB總線驅(qū)動程序發(fā)送包含URB(USB Request Block)的IRP(I/0Request Packet),來實現(xiàn)USB外設(shè)之間的信息交換。當主機應(yīng)用程序要對USB設(shè)備進行I/0操作時,他調(diào)用Windows API函數(shù)對win32子系統(tǒng)進行win32調(diào)用,由I/O管理器將此請求構(gòu)造成一個合適的IRP,并把他傳遞給USB設(shè)備驅(qū)動程序。USB設(shè)備驅(qū)動程序接受到這個IRP后,根據(jù)IRP中的包含的具體操作代碼,構(gòu)造響應(yīng)的URB并把他放到一個新IRP中,然后把此IRP傳遞到USB總線驅(qū)動程序,USB總線驅(qū)動程序根據(jù)IRP中所包含的URB執(zhí)行響應(yīng)的操作,并把操作結(jié)果通過IRP返還給USB設(shè)備驅(qū)動程序。USB設(shè)備驅(qū)動程序接受到此IRP后,將操作結(jié)果通過IRP返還I/O管理器。最后,I/O管理器將此IRP中的操作結(jié)果返還給應(yīng)用程序,至此應(yīng)用程序?qū)SB設(shè)備的一次I/O操作完成。
在CYPRESS公司的EZ-USB FX2開發(fā)包中,有一個通用的驅(qū)動程序。EZ-USB GENERAL PURP()SEDEVICE DRIVER(GPD),GPD提供了USB標準設(shè)備請求和數(shù)據(jù)傳輸?shù)挠脩裟J浇涌冢梢灾苯佑脕黹_發(fā)上層應(yīng)用程序,加快開發(fā)進度。
2.3上層應(yīng)用程序
應(yīng)用程序工作于用戶模式,用戶模式可以訪問文件,處理數(shù)據(jù),人機交互,不過必須借助設(shè)備驅(qū)動程序來訪問硬件。對于EZ-USB FX2而言,所有用戶模式通過I/0 control調(diào)用來訪問EZ-USB GPD。每一個連接到主機的EZ-USB設(shè)備,驅(qū)動產(chǎn)生一個形式為ezusb-i的符號連接名。符號連接名用于調(diào)用CreateFile時得到設(shè)備驅(qū)動的句柄,實際上CreateFile()得到設(shè)備驅(qū)動創(chuàng)建的設(shè)備對象的句柄。
應(yīng)用程序通過CreateFile()得到USB設(shè)備句柄,用Device Control()來進行控制傳輸。在VC環(huán)境下開發(fā)的主機端的應(yīng)用程序,實現(xiàn)了設(shè)備的打開、關(guān)閉、固件下載、端口配置和文件傳輸?shù)裙δ?。界面如圖3所示。
3結(jié)語
USB2.0為PC和外部硬件設(shè)備之間提供了一種快速-和方便的數(shù)據(jù)交換方式,本文提供了基于EZ USB FX2的一個很好的解決方案,實現(xiàn)了從底層固件到上層應(yīng)用程序數(shù)據(jù)傳輸?shù)恼麄€軟件系統(tǒng)。
參考文獻:
[1].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[2].EZ-USBdatasheethttp://www.dzsc.com/datasheet/EZ-USB_305660.html.
評論